From 536c6a8ea6b298773fed5e8dce82c3faff43dac4 Mon Sep 17 00:00:00 2001
From: Lean stage0 autoupdater <>
Date: Sun, 29 Dec 2024 01:19:00 +0000
Subject: [PATCH] chore: update stage0

---
 stage0/stdlib/Init/Grind.c                    |     6 +-
 stage0/stdlib/Init/Grind/Lemmas.c             |     6 +-
 stage0/stdlib/Init/Grind/Tactics.c            |   103 +
 stage0/stdlib/Lean/Class.c                    |     4 +-
 stage0/stdlib/Lean/Compiler/LCNF/FVarUtil.c   |     8 +-
 stage0/stdlib/Lean/Elab/Tactic.c              |     6 +-
 .../Elab/Tactic/BVDecide/Frontend/BVDecide.c  |     2 +-
 .../BVDecide/Frontend/BVDecide/Reflect.c      |    21 +-
 .../Frontend/BVDecide/ReifiedBVLogical.c      |     6 +-
 .../Frontend/BVDecide/ReifiedLemmas.c         |  2391 ++-
 .../Tactic/BVDecide/Frontend/BVDecide/Reify.c |  3353 ++--
 .../Elab/Tactic/BVDecide/Frontend/Normalize.c |  2929 ++--
 stage0/stdlib/Lean/Elab/Tactic/Grind.c        |   561 +
 stage0/stdlib/Lean/Expr.c                     |    84 +-
 stage0/stdlib/Lean/Meta/AppBuilder.c          |   342 +-
 stage0/stdlib/Lean/Meta/Closure.c             |    12 +-
 stage0/stdlib/Lean/Meta/ExprLens.c            |     8 +-
 stage0/stdlib/Lean/Meta/Tactic/FunInd.c       |     2 +-
 stage0/stdlib/Lean/Meta/Tactic/Grind.c        |   181 +-
 stage0/stdlib/Lean/Meta/Tactic/Grind/Core.c   | 13789 ++++++----------
 stage0/stdlib/Lean/Meta/Tactic/Grind/Ctor.c   |  2345 +++
 .../Lean/Meta/Tactic/Grind/Internalize.c      |  7828 +++++++++
 stage0/stdlib/Lean/Meta/Tactic/Grind/Inv.c    |  5389 ++++--
 stage0/stdlib/Lean/Meta/Tactic/Grind/PP.c     |   327 +-
 stage0/stdlib/Lean/Meta/Tactic/Grind/Parser.c |   820 +
 .../Lean/Meta/Tactic/Grind/Preprocessor.c     |  5198 +++---
 stage0/stdlib/Lean/Meta/Tactic/Grind/Proj.c   |   632 +
 stage0/stdlib/Lean/Meta/Tactic/Grind/Proof.c  | 10539 +++++++++++-
 .../stdlib/Lean/Meta/Tactic/Grind/Propagate.c |  6732 +++++---
 .../Lean/Meta/Tactic/Grind/PropagatorAttr.c   |  3679 +++++
 stage0/stdlib/Lean/Meta/Tactic/Grind/Run.c    |  1827 ++
 stage0/stdlib/Lean/Meta/Tactic/Grind/Types.c  |  9503 ++++-------
 .../Meta/Tactic/Simp/BuiltinSimprocs/Int.c    |  3372 ++--
 stage0/stdlib/Lean/Meta/Tactic/Simp/Main.c    |     4 +-
 .../Lean/Meta/Tactic/Simp/SimpTheorems.c      |     2 +-
 stage0/stdlib/Lean/Meta/Tactic/Simp/Types.c   |     2 +-
 stage0/stdlib/Lean/Meta/Transform.c           |    10 +-
 .../Tactic/BVDecide/Bitblast/BVExpr/Basic.c   |   499 +-
 .../BVDecide/Bitblast/BVExpr/Circuit/Impl.c   |    96 +-
 .../Tactic/BVDecide/Bitblast/BoolExpr/Basic.c |    10 +-
 .../BVDecide/Bitblast/BoolExpr/Circuit.c      |     6 +-
 41 files changed, 54763 insertions(+), 27871 deletions(-)
 create mode 100644 stage0/stdlib/Lean/Elab/Tactic/Grind.c
 create mode 100644 stage0/stdlib/Lean/Meta/Tactic/Grind/Ctor.c
 create mode 100644 stage0/stdlib/Lean/Meta/Tactic/Grind/Internalize.c
 create mode 100644 stage0/stdlib/Lean/Meta/Tactic/Grind/Parser.c
 create mode 100644 stage0/stdlib/Lean/Meta/Tactic/Grind/Proj.c
 create mode 100644 stage0/stdlib/Lean/Meta/Tactic/Grind/PropagatorAttr.c
 create mode 100644 stage0/stdlib/Lean/Meta/Tactic/Grind/Run.c

diff --git a/stage0/stdlib/Init/Grind.c b/stage0/stdlib/Init/Grind.c
index 613e158c57aa..66af4555bd5a 100644
--- a/stage0/stdlib/Init/Grind.c
+++ b/stage0/stdlib/Init/Grind.c
@@ -1,6 +1,6 @@
 // Lean compiler output
 // Module: Init.Grind
-// Imports: Init.Grind.Norm Init.Grind.Tactics Init.Grind.Lemmas Init.Grind.Cases Init.Grind.Propagator
+// Imports: Init.Grind.Norm Init.Grind.Tactics Init.Grind.Lemmas Init.Grind.Cases Init.Grind.Propagator Init.Grind.Util
 #include <lean/lean.h>
 #if defined(__clang__)
 #pragma clang diagnostic ignored "-Wunused-parameter"
@@ -18,6 +18,7 @@ lean_object* initialize_Init_Grind_Tactics(uint8_t builtin, lean_object*);
 lean_object* initialize_Init_Grind_Lemmas(uint8_t builtin, lean_object*);
 lean_object* initialize_Init_Grind_Cases(uint8_t builtin, lean_object*);
 lean_object* initialize_Init_Grind_Propagator(uint8_t builtin, lean_object*);
+lean_object* initialize_Init_Grind_Util(uint8_t builtin, lean_object*);
 static bool _G_initialized = false;
 LEAN_EXPORT lean_object* initialize_Init_Grind(uint8_t builtin, lean_object* w) {
 lean_object * res;
@@ -38,6 +39,9 @@ lean_dec_ref(res);
 res = initialize_Init_Grind_Propagator(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
+res = initialize_Init_Grind_Util(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
 return lean_io_result_mk_ok(lean_box(0));
 }
 #ifdef __cplusplus
diff --git a/stage0/stdlib/Init/Grind/Lemmas.c b/stage0/stdlib/Init/Grind/Lemmas.c
index ac41c492daeb..c70997abd3b5 100644
--- a/stage0/stdlib/Init/Grind/Lemmas.c
+++ b/stage0/stdlib/Init/Grind/Lemmas.c
@@ -1,6 +1,6 @@
 // Lean compiler output
 // Module: Init.Grind.Lemmas
-// Imports: Init.Core Init.SimpLemmas Init.Classical
+// Imports: Init.Core Init.SimpLemmas Init.Classical Init.ByCases
 #include <lean/lean.h>
 #if defined(__clang__)
 #pragma clang diagnostic ignored "-Wunused-parameter"
@@ -16,6 +16,7 @@ extern "C" {
 lean_object* initialize_Init_Core(uint8_t builtin, lean_object*);
 lean_object* initialize_Init_SimpLemmas(uint8_t builtin, lean_object*);
 lean_object* initialize_Init_Classical(uint8_t builtin, lean_object*);
+lean_object* initialize_Init_ByCases(uint8_t builtin, lean_object*);
 static bool _G_initialized = false;
 LEAN_EXPORT lean_object* initialize_Init_Grind_Lemmas(uint8_t builtin, lean_object* w) {
 lean_object * res;
@@ -30,6 +31,9 @@ lean_dec_ref(res);
 res = initialize_Init_Classical(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
+res = initialize_Init_ByCases(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
 return lean_io_result_mk_ok(lean_box(0));
 }
 #ifdef __cplusplus
diff --git a/stage0/stdlib/Init/Grind/Tactics.c b/stage0/stdlib/Init/Grind/Tactics.c
index 2e99d859fb99..e8d386e846d3 100644
--- a/stage0/stdlib/Init/Grind/Tactics.c
+++ b/stage0/stdlib/Init/Grind/Tactics.c
@@ -13,10 +13,19 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
+static lean_object* l_Lean_Parser_Tactic_grind___closed__7;
+static lean_object* l_Lean_Parser_Tactic_grind___closed__6;
+LEAN_EXPORT lean_object* l_Lean_Parser_Tactic_grind;
 static lean_object* l_Lean_Grind_instBEqConfig___closed__1;
+static lean_object* l_Lean_Parser_Tactic_grind___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Grind_instBEqConfig;
 LEAN_EXPORT lean_object* l___private_Init_Grind_Tactics_0__Lean_Grind_beqConfig____x40_Init_Grind_Tactics___hyg_18____boxed(lean_object*, lean_object*);
+static lean_object* l_Lean_Parser_Tactic_grind___closed__1;
 LEAN_EXPORT uint8_t l_Lean_Grind_instInhabitedConfig;
+static lean_object* l_Lean_Parser_Tactic_grind___closed__5;
+static lean_object* l_Lean_Parser_Tactic_grind___closed__3;
+static lean_object* l_Lean_Parser_Tactic_grind___closed__4;
+lean_object* l_Lean_Name_mkStr4(lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT uint8_t l___private_Init_Grind_Tactics_0__Lean_Grind_beqConfig____x40_Init_Grind_Tactics___hyg_18_(uint8_t, uint8_t);
 static uint8_t _init_l_Lean_Grind_instInhabitedConfig() {
 _start:
@@ -79,6 +88,84 @@ x_1 = l_Lean_Grind_instBEqConfig___closed__1;
 return x_1;
 }
 }
+static lean_object* _init_l_Lean_Parser_Tactic_grind___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Lean", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Tactic_grind___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Parser", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Tactic_grind___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Tactic", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Tactic_grind___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("grind", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Tactic_grind___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
+x_1 = l_Lean_Parser_Tactic_grind___closed__1;
+x_2 = l_Lean_Parser_Tactic_grind___closed__2;
+x_3 = l_Lean_Parser_Tactic_grind___closed__3;
+x_4 = l_Lean_Parser_Tactic_grind___closed__4;
+x_5 = l_Lean_Name_mkStr4(x_1, x_2, x_3, x_4);
+return x_5;
+}
+}
+static lean_object* _init_l_Lean_Parser_Tactic_grind___closed__6() {
+_start:
+{
+lean_object* x_1; uint8_t x_2; lean_object* x_3; 
+x_1 = l_Lean_Parser_Tactic_grind___closed__4;
+x_2 = 0;
+x_3 = lean_alloc_ctor(6, 1, 1);
+lean_ctor_set(x_3, 0, x_1);
+lean_ctor_set_uint8(x_3, sizeof(void*)*1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Parser_Tactic_grind___closed__7() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Parser_Tactic_grind___closed__5;
+x_2 = lean_unsigned_to_nat(1024u);
+x_3 = l_Lean_Parser_Tactic_grind___closed__6;
+x_4 = lean_alloc_ctor(3, 3, 0);
+lean_ctor_set(x_4, 0, x_1);
+lean_ctor_set(x_4, 1, x_2);
+lean_ctor_set(x_4, 2, x_3);
+return x_4;
+}
+}
+static lean_object* _init_l_Lean_Parser_Tactic_grind() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_Parser_Tactic_grind___closed__7;
+return x_1;
+}
+}
 lean_object* initialize_Init_Tactics(uint8_t builtin, lean_object*);
 static bool _G_initialized = false;
 LEAN_EXPORT lean_object* initialize_Init_Grind_Tactics(uint8_t builtin, lean_object* w) {
@@ -93,6 +180,22 @@ l_Lean_Grind_instBEqConfig___closed__1 = _init_l_Lean_Grind_instBEqConfig___clos
 lean_mark_persistent(l_Lean_Grind_instBEqConfig___closed__1);
 l_Lean_Grind_instBEqConfig = _init_l_Lean_Grind_instBEqConfig();
 lean_mark_persistent(l_Lean_Grind_instBEqConfig);
+l_Lean_Parser_Tactic_grind___closed__1 = _init_l_Lean_Parser_Tactic_grind___closed__1();
+lean_mark_persistent(l_Lean_Parser_Tactic_grind___closed__1);
+l_Lean_Parser_Tactic_grind___closed__2 = _init_l_Lean_Parser_Tactic_grind___closed__2();
+lean_mark_persistent(l_Lean_Parser_Tactic_grind___closed__2);
+l_Lean_Parser_Tactic_grind___closed__3 = _init_l_Lean_Parser_Tactic_grind___closed__3();
+lean_mark_persistent(l_Lean_Parser_Tactic_grind___closed__3);
+l_Lean_Parser_Tactic_grind___closed__4 = _init_l_Lean_Parser_Tactic_grind___closed__4();
+lean_mark_persistent(l_Lean_Parser_Tactic_grind___closed__4);
+l_Lean_Parser_Tactic_grind___closed__5 = _init_l_Lean_Parser_Tactic_grind___closed__5();
+lean_mark_persistent(l_Lean_Parser_Tactic_grind___closed__5);
+l_Lean_Parser_Tactic_grind___closed__6 = _init_l_Lean_Parser_Tactic_grind___closed__6();
+lean_mark_persistent(l_Lean_Parser_Tactic_grind___closed__6);
+l_Lean_Parser_Tactic_grind___closed__7 = _init_l_Lean_Parser_Tactic_grind___closed__7();
+lean_mark_persistent(l_Lean_Parser_Tactic_grind___closed__7);
+l_Lean_Parser_Tactic_grind = _init_l_Lean_Parser_Tactic_grind();
+lean_mark_persistent(l_Lean_Parser_Tactic_grind);
 return lean_io_result_mk_ok(lean_box(0));
 }
 #ifdef __cplusplus
diff --git a/stage0/stdlib/Lean/Class.c b/stage0/stdlib/Lean/Class.c
index 552132f423ad..20ff814c03c7 100644
--- a/stage0/stdlib/Lean/Class.c
+++ b/stage0/stdlib/Lean/Class.c
@@ -2983,7 +2983,7 @@ static lean_object* _init_l_Lean_mkOutParamArgsImplicit_go___closed__4() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_mkOutParamArgsImplicit_go___closed__1;
 x_2 = l_Lean_mkOutParamArgsImplicit_go___closed__2;
-x_3 = lean_unsigned_to_nat(1778u);
+x_3 = lean_unsigned_to_nat(1795u);
 x_4 = lean_unsigned_to_nat(24u);
 x_5 = l_Lean_mkOutParamArgsImplicit_go___closed__3;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -3004,7 +3004,7 @@ static lean_object* _init_l_Lean_mkOutParamArgsImplicit_go___closed__6() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_mkOutParamArgsImplicit_go___closed__1;
 x_2 = l_Lean_mkOutParamArgsImplicit_go___closed__5;
-x_3 = lean_unsigned_to_nat(1767u);
+x_3 = lean_unsigned_to_nat(1784u);
 x_4 = lean_unsigned_to_nat(23u);
 x_5 = l_Lean_mkOutParamArgsImplicit_go___closed__3;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
diff --git a/stage0/stdlib/Lean/Compiler/LCNF/FVarUtil.c b/stage0/stdlib/Lean/Compiler/LCNF/FVarUtil.c
index b48e8674d450..751e1e8192fc 100644
--- a/stage0/stdlib/Lean/Compiler/LCNF/FVarUtil.c
+++ b/stage0/stdlib/Lean/Compiler/LCNF/FVarUtil.c
@@ -442,7 +442,7 @@ static lean_object* _init_l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___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; 
 x_1 = l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__1___closed__1;
 x_2 = l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__1___closed__2;
-x_3 = lean_unsigned_to_nat(1714u);
+x_3 = lean_unsigned_to_nat(1731u);
 x_4 = lean_unsigned_to_nat(20u);
 x_5 = l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__1___closed__3;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -521,7 +521,7 @@ static lean_object* _init_l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__2_
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__1___closed__1;
 x_2 = l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__2___closed__1;
-x_3 = lean_unsigned_to_nat(1703u);
+x_3 = lean_unsigned_to_nat(1720u);
 x_4 = lean_unsigned_to_nat(18u);
 x_5 = l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__2___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -637,7 +637,7 @@ static lean_object* _init_l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__4_
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__1___closed__1;
 x_2 = l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__4___closed__1;
-x_3 = lean_unsigned_to_nat(1798u);
+x_3 = lean_unsigned_to_nat(1815u);
 x_4 = lean_unsigned_to_nat(20u);
 x_5 = l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__4___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -775,7 +775,7 @@ static lean_object* _init_l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__6_
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__1___closed__1;
 x_2 = l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__6___closed__1;
-x_3 = lean_unsigned_to_nat(1778u);
+x_3 = lean_unsigned_to_nat(1795u);
 x_4 = lean_unsigned_to_nat(24u);
 x_5 = l_Lean_Compiler_LCNF_Expr_mapFVarM___rarg___lambda__6___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
diff --git a/stage0/stdlib/Lean/Elab/Tactic.c b/stage0/stdlib/Lean/Elab/Tactic.c
index 2f0987b747b3..dae76c02ec41 100644
--- a/stage0/stdlib/Lean/Elab/Tactic.c
+++ b/stage0/stdlib/Lean/Elab/Tactic.c
@@ -1,6 +1,6 @@
 // Lean compiler output
 // Module: Lean.Elab.Tactic
-// Imports: Lean.Elab.Term Lean.Elab.Tactic.Basic Lean.Elab.Tactic.ElabTerm Lean.Elab.Tactic.Induction Lean.Elab.Tactic.Generalize Lean.Elab.Tactic.Injection Lean.Elab.Tactic.Match Lean.Elab.Tactic.Rewrite Lean.Elab.Tactic.Location Lean.Elab.Tactic.SimpTrace Lean.Elab.Tactic.Simp Lean.Elab.Tactic.Simproc Lean.Elab.Tactic.BuiltinTactic Lean.Elab.Tactic.Split Lean.Elab.Tactic.Conv Lean.Elab.Tactic.Delta Lean.Elab.Tactic.Meta Lean.Elab.Tactic.Unfold Lean.Elab.Tactic.Cache Lean.Elab.Tactic.Calc Lean.Elab.Tactic.Congr Lean.Elab.Tactic.Guard Lean.Elab.Tactic.RCases Lean.Elab.Tactic.Repeat Lean.Elab.Tactic.Ext Lean.Elab.Tactic.Change Lean.Elab.Tactic.FalseOrByContra Lean.Elab.Tactic.Omega Lean.Elab.Tactic.Simpa Lean.Elab.Tactic.NormCast Lean.Elab.Tactic.Symm Lean.Elab.Tactic.SolveByElim Lean.Elab.Tactic.LibrarySearch Lean.Elab.Tactic.ShowTerm Lean.Elab.Tactic.Rfl Lean.Elab.Tactic.Rewrites Lean.Elab.Tactic.DiscrTreeKey Lean.Elab.Tactic.BVDecide Lean.Elab.Tactic.BoolToPropSimps Lean.Elab.Tactic.Classical
+// Imports: Lean.Elab.Term Lean.Elab.Tactic.Basic Lean.Elab.Tactic.ElabTerm Lean.Elab.Tactic.Induction Lean.Elab.Tactic.Generalize Lean.Elab.Tactic.Injection Lean.Elab.Tactic.Match Lean.Elab.Tactic.Rewrite Lean.Elab.Tactic.Location Lean.Elab.Tactic.SimpTrace Lean.Elab.Tactic.Simp Lean.Elab.Tactic.Simproc Lean.Elab.Tactic.BuiltinTactic Lean.Elab.Tactic.Split Lean.Elab.Tactic.Conv Lean.Elab.Tactic.Delta Lean.Elab.Tactic.Meta Lean.Elab.Tactic.Unfold Lean.Elab.Tactic.Cache Lean.Elab.Tactic.Calc Lean.Elab.Tactic.Congr Lean.Elab.Tactic.Guard Lean.Elab.Tactic.RCases Lean.Elab.Tactic.Repeat Lean.Elab.Tactic.Ext Lean.Elab.Tactic.Change Lean.Elab.Tactic.FalseOrByContra Lean.Elab.Tactic.Omega Lean.Elab.Tactic.Simpa Lean.Elab.Tactic.NormCast Lean.Elab.Tactic.Symm Lean.Elab.Tactic.SolveByElim Lean.Elab.Tactic.LibrarySearch Lean.Elab.Tactic.ShowTerm Lean.Elab.Tactic.Rfl Lean.Elab.Tactic.Rewrites Lean.Elab.Tactic.DiscrTreeKey Lean.Elab.Tactic.BVDecide Lean.Elab.Tactic.BoolToPropSimps Lean.Elab.Tactic.Classical Lean.Elab.Tactic.Grind
 #include <lean/lean.h>
 #if defined(__clang__)
 #pragma clang diagnostic ignored "-Wunused-parameter"
@@ -53,6 +53,7 @@ lean_object* initialize_Lean_Elab_Tactic_DiscrTreeKey(uint8_t builtin, lean_obje
 lean_object* initialize_Lean_Elab_Tactic_BVDecide(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Elab_Tactic_BoolToPropSimps(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Elab_Tactic_Classical(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Elab_Tactic_Grind(uint8_t builtin, lean_object*);
 static bool _G_initialized = false;
 LEAN_EXPORT lean_object* initialize_Lean_Elab_Tactic(uint8_t builtin, lean_object* w) {
 lean_object * res;
@@ -178,6 +179,9 @@ lean_dec_ref(res);
 res = initialize_Lean_Elab_Tactic_Classical(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
+res = initialize_Lean_Elab_Tactic_Grind(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
 return lean_io_result_mk_ok(lean_box(0));
 }
 #ifdef __cplusplus
diff --git a/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide.c b/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide.c
index ed4d8b100032..4b8b63bc9da7 100644
--- a/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide.c
+++ b/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide.c
@@ -12510,7 +12510,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprBoolExp
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("imp", 3, 3);
+x_1 = lean_mk_string_unchecked("or", 2, 2);
 return x_1;
 }
 }
diff --git a/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/Reflect.c b/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/Reflect.c
index 6a8052d9fb47..ed3b48ce93be 100644
--- a/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/Reflect.c
+++ b/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/Reflect.c
@@ -170,7 +170,6 @@ static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprBVExpr_go___c
 static lean_object* l_Array_qsort_sort___at_Lean_Elab_Tactic_BVDecide_Frontend_M_atoms___spec__2___closed__1;
 LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_foldlM___at_Lean_Elab_Tactic_BVDecide_Frontend_M_atoms___spec__1(lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprBVPred_go___closed__6;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__11;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_M_run___rarg___closed__5;
 uint64_t l_Lean_Expr_hash(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprBVBinOp___lambda__1___closed__13;
@@ -2187,30 +2186,22 @@ return x_3;
 static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__9() {
 _start:
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("imp", 3, 3);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__10() {
-_start:
-{
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprBVBinOp___lambda__1___closed__1;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprBVBinOp___lambda__1___closed__2;
 x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprBVBinOp___lambda__1___closed__3;
 x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__1;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__9;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprBVBinOp___lambda__1___closed__8;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__11() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__10() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__10;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__9;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
@@ -2240,7 +2231,7 @@ return x_4;
 default: 
 {
 lean_object* x_5; 
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__11;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__10;
 return x_5;
 }
 }
@@ -2709,7 +2700,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprBoolExp
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__10;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__9;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
@@ -6607,8 +6598,6 @@ l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__9 = _i
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__9);
 l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__10 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__10();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__10);
-l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__11 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__11();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___lambda__1___closed__11);
 l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_instToExprGate___closed__2();
diff --git a/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/ReifiedBVLogical.c b/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/ReifiedBVLogical.c
index c1b715d81524..8e3507c74231 100644
--- a/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/ReifiedBVLogical.c
+++ b/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/ReifiedBVLogical.c
@@ -897,7 +897,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("imp_congr", 9, 9);
+x_1 = lean_mk_string_unchecked("or_congr", 8, 8);
 return x_1;
 }
 }
@@ -1422,7 +1422,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("imp", 3, 3);
+x_1 = lean_mk_string_unchecked("or", 2, 2);
 return x_1;
 }
 }
@@ -1932,7 +1932,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("ite_congr", 9, 9);
+x_1 = lean_mk_string_unchecked("cond_congr", 10, 10);
 return x_1;
 }
 }
diff --git a/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/ReifiedLemmas.c b/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/ReifiedLemmas.c
index 863fb43382ee..eeae306e928d 100644
--- a/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/ReifiedLemmas.c
+++ b/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/ReifiedLemmas.c
@@ -13,64 +13,52 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__1;
 lean_object* l_Lean_Expr_const___override(lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__2;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__7;
 lean_object* l_Lean_mkNatLit(lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___closed__1;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__1;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma(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*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__5;
 lean_object* l_Lean_mkAppB(lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__11;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__3;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfFalseLemma(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*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__4;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__14;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas(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_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___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_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__6;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__9;
 lean_object* l_Lean_mkApp4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__8;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__1;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__8;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__9;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__8;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__4;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__4;
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkRefl(lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas___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_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma(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*, lean_object*);
 lean_object* l_Lean_Meta_mkAppM(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_LemmaM_addLemma(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* l_Lean_Meta_mkEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__12;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__11;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__7;
-lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___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_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__3;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas___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_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___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_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___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* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_mkBinPred(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfFalseLemma___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*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__9;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__2;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma(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_Name_mkStr6(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__9;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfTrueLemma___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*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__7;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__4;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__5;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__2;
+lean_object* l_Lean_Expr_app___override(lean_object*, lean_object*);
 lean_object* l_Lean_Name_mkStr2(lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__7;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__3;
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkEvalExpr___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__13;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___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_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* l_Lean_mkArrow(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__1;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__6;
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_ofPred(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__6;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__15;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__8;
 lean_object* lean_array_mk(lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__2;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___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* l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__12;
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkGate(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfTrueLemma(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*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__5;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas(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_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__16;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__10;
-lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkBoolConst(uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__10;
-lean_object* l_Lean_Expr_lam___override(lean_object*, lean_object*, lean_object*, uint8_t);
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__1() {
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___closed__2;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__6;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__3;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__5;
+lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkNot(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -78,87 +66,25 @@ x_1 = lean_mk_string_unchecked("Bool", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__2() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("true", 4, 4);
+x_1 = lean_mk_string_unchecked("or", 2, 2);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__2;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__2;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__4() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("instDecidableEqBool", 19, 19);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__5() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__4;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__6() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("forall_prop_decidable", 21, 21);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__7() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__6;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__8() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Decidable", 9, 9);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__9() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("decide", 6, 6);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__10() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__8;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__9;
-x_3 = l_Lean_Name_mkStr2(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__11() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__4() {
 _start:
 {
 lean_object* x_1; 
@@ -166,7 +92,7 @@ x_1 = lean_mk_string_unchecked("Std", 3, 3);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__12() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__5() {
 _start:
 {
 lean_object* x_1; 
@@ -174,7 +100,7 @@ x_1 = lean_mk_string_unchecked("Tactic", 6, 6);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__13() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -182,7 +108,7 @@ x_1 = lean_mk_string_unchecked("BVDecide", 8, 8);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__14() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__7() {
 _start:
 {
 lean_object* x_1; 
@@ -190,7 +116,7 @@ x_1 = lean_mk_string_unchecked("Reflect", 7, 7);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__15() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__8() {
 _start:
 {
 lean_object* x_1; 
@@ -198,40 +124,36 @@ x_1 = lean_mk_string_unchecked("lemma_congr", 11, 11);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__16() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__9() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__11;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__12;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__13;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__14;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__15;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__4;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__5;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__6;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__1;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__8;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
 _start:
 {
 lean_object* x_17; lean_object* x_18; 
 x_17 = lean_ctor_get(x_1, 1);
 lean_inc(x_17);
 lean_dec(x_1);
-lean_inc(x_15);
-lean_inc(x_14);
-lean_inc(x_13);
-lean_inc(x_12);
 x_18 = lean_apply_6(x_17, x_11, x_12, x_13, x_14, x_15, x_16);
 if (lean_obj_tag(x_18) == 0)
 {
-lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; 
-x_19 = lean_ctor_get(x_18, 0);
-lean_inc(x_19);
-x_20 = lean_ctor_get(x_18, 1);
-lean_inc(x_20);
-lean_dec(x_18);
+uint8_t x_19; 
+x_19 = !lean_is_exclusive(x_18);
+if (x_19 == 0)
+{
+lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_20 = lean_ctor_get(x_18, 0);
 lean_inc(x_3);
 x_21 = l_Lean_Expr_const___override(x_2, x_3);
 x_22 = lean_ctor_get(x_4, 0);
@@ -239,250 +161,81 @@ lean_inc(x_22);
 lean_dec(x_4);
 x_23 = l_Lean_mkNatLit(x_22);
 x_24 = l_Lean_mkApp4(x_21, x_23, x_5, x_6, x_7);
-x_25 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__3;
+x_25 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__3;
 lean_inc(x_3);
 x_26 = l_Lean_Expr_const___override(x_25, x_3);
-lean_inc(x_15);
-lean_inc(x_14);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_26);
-lean_inc(x_8);
-x_27 = l_Lean_Meta_mkEq(x_8, x_26, x_12, x_13, x_14, x_15, x_20);
-if (lean_obj_tag(x_19) == 0)
-{
-if (lean_obj_tag(x_27) == 0)
+x_27 = l_Lean_mkAppB(x_26, x_8, x_9);
+x_28 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__9;
+x_29 = l_Lean_Expr_const___override(x_28, x_3);
+if (lean_obj_tag(x_20) == 0)
 {
-lean_object* x_79; lean_object* x_80; lean_object* x_81; 
-x_79 = lean_ctor_get(x_27, 0);
-lean_inc(x_79);
-x_80 = lean_ctor_get(x_27, 1);
-lean_inc(x_80);
-lean_dec(x_27);
+lean_object* x_30; lean_object* x_31; 
 lean_inc(x_10);
-x_81 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkRefl(x_10);
-x_28 = x_81;
-x_29 = x_79;
-x_30 = x_80;
-goto block_78;
-}
-else
-{
-uint8_t x_82; 
-lean_dec(x_26);
-lean_dec(x_24);
-lean_dec(x_15);
-lean_dec(x_14);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_3);
-x_82 = !lean_is_exclusive(x_27);
-if (x_82 == 0)
-{
-return x_27;
-}
-else
-{
-lean_object* x_83; lean_object* x_84; lean_object* x_85; 
-x_83 = lean_ctor_get(x_27, 0);
-x_84 = lean_ctor_get(x_27, 1);
-lean_inc(x_84);
-lean_inc(x_83);
-lean_dec(x_27);
-x_85 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_85, 0, x_83);
-lean_ctor_set(x_85, 1, x_84);
-return x_85;
-}
-}
-}
-else
-{
-if (lean_obj_tag(x_27) == 0)
-{
-lean_object* x_86; lean_object* x_87; lean_object* x_88; 
-x_86 = lean_ctor_get(x_19, 0);
-lean_inc(x_86);
-lean_dec(x_19);
-x_87 = lean_ctor_get(x_27, 0);
-lean_inc(x_87);
-x_88 = lean_ctor_get(x_27, 1);
-lean_inc(x_88);
-lean_dec(x_27);
-x_28 = x_86;
-x_29 = x_87;
-x_30 = x_88;
-goto block_78;
-}
-else
-{
-uint8_t x_89; 
-lean_dec(x_26);
-lean_dec(x_24);
-lean_dec(x_19);
-lean_dec(x_15);
-lean_dec(x_14);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_3);
-x_89 = !lean_is_exclusive(x_27);
-if (x_89 == 0)
-{
-return x_27;
+x_30 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkRefl(x_10);
+x_31 = l_Lean_mkApp4(x_29, x_27, x_10, x_30, x_24);
+lean_ctor_set(x_18, 0, x_31);
+return x_18;
 }
 else
 {
-lean_object* x_90; lean_object* x_91; lean_object* x_92; 
-x_90 = lean_ctor_get(x_27, 0);
-x_91 = lean_ctor_get(x_27, 1);
-lean_inc(x_91);
-lean_inc(x_90);
-lean_dec(x_27);
-x_92 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_92, 0, x_90);
-lean_ctor_set(x_92, 1, x_91);
-return x_92;
-}
-}
-}
-block_78:
-{
-lean_object* x_31; 
-lean_inc(x_15);
-lean_inc(x_14);
-lean_inc(x_26);
-lean_inc(x_9);
-x_31 = l_Lean_Meta_mkEq(x_9, x_26, x_12, x_13, x_14, x_15, x_30);
-if (lean_obj_tag(x_31) == 0)
-{
-lean_object* x_32; lean_object* x_33; lean_object* x_34; uint8_t x_35; 
-x_32 = lean_ctor_get(x_31, 0);
+lean_object* x_32; lean_object* x_33; 
+x_32 = lean_ctor_get(x_20, 0);
 lean_inc(x_32);
-x_33 = lean_ctor_get(x_31, 1);
-lean_inc(x_33);
-lean_dec(x_31);
-lean_inc(x_32);
-lean_inc(x_29);
-x_34 = l_Lean_mkArrow(x_29, x_32, x_14, x_15, x_33);
-lean_dec(x_15);
-lean_dec(x_14);
-x_35 = !lean_is_exclusive(x_34);
-if (x_35 == 0)
-{
-lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; uint8_t x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; 
-x_36 = lean_ctor_get(x_34, 0);
-x_37 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__5;
-lean_inc(x_3);
-x_38 = l_Lean_Expr_const___override(x_37, x_3);
-lean_inc(x_26);
-lean_inc(x_38);
-x_39 = l_Lean_mkAppB(x_38, x_8, x_26);
-x_40 = l_Lean_mkAppB(x_38, x_9, x_26);
-x_41 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__7;
-lean_inc(x_3);
-x_42 = l_Lean_Expr_const___override(x_41, x_3);
-x_43 = lean_box(0);
-x_44 = 0;
-lean_inc(x_29);
-x_45 = l_Lean_Expr_lam___override(x_43, x_29, x_32, x_44);
-lean_inc(x_29);
-x_46 = l_Lean_Expr_lam___override(x_43, x_29, x_40, x_44);
-x_47 = l_Lean_mkApp4(x_42, x_29, x_45, x_39, x_46);
-x_48 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__10;
-lean_inc(x_3);
-x_49 = l_Lean_Expr_const___override(x_48, x_3);
-x_50 = l_Lean_mkAppB(x_49, x_36, x_47);
-x_51 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__16;
-x_52 = l_Lean_Expr_const___override(x_51, x_3);
-x_53 = l_Lean_mkApp4(x_52, x_50, x_10, x_28, x_24);
-lean_ctor_set(x_34, 0, x_53);
-return x_34;
+lean_dec(x_20);
+x_33 = l_Lean_mkApp4(x_29, x_27, x_10, x_32, x_24);
+lean_ctor_set(x_18, 0, x_33);
+return x_18;
+}
 }
 else
 {
-lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; uint8_t x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; 
-x_54 = lean_ctor_get(x_34, 0);
-x_55 = lean_ctor_get(x_34, 1);
-lean_inc(x_55);
-lean_inc(x_54);
-lean_dec(x_34);
-x_56 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__5;
-lean_inc(x_3);
-x_57 = l_Lean_Expr_const___override(x_56, x_3);
-lean_inc(x_26);
-lean_inc(x_57);
-x_58 = l_Lean_mkAppB(x_57, x_8, x_26);
-x_59 = l_Lean_mkAppB(x_57, x_9, x_26);
-x_60 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__7;
+lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; 
+x_34 = lean_ctor_get(x_18, 0);
+x_35 = lean_ctor_get(x_18, 1);
+lean_inc(x_35);
+lean_inc(x_34);
+lean_dec(x_18);
 lean_inc(x_3);
-x_61 = l_Lean_Expr_const___override(x_60, x_3);
-x_62 = lean_box(0);
-x_63 = 0;
-lean_inc(x_29);
-x_64 = l_Lean_Expr_lam___override(x_62, x_29, x_32, x_63);
-lean_inc(x_29);
-x_65 = l_Lean_Expr_lam___override(x_62, x_29, x_59, x_63);
-x_66 = l_Lean_mkApp4(x_61, x_29, x_64, x_58, x_65);
-x_67 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__10;
+x_36 = l_Lean_Expr_const___override(x_2, x_3);
+x_37 = lean_ctor_get(x_4, 0);
+lean_inc(x_37);
+lean_dec(x_4);
+x_38 = l_Lean_mkNatLit(x_37);
+x_39 = l_Lean_mkApp4(x_36, x_38, x_5, x_6, x_7);
+x_40 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__3;
 lean_inc(x_3);
-x_68 = l_Lean_Expr_const___override(x_67, x_3);
-x_69 = l_Lean_mkAppB(x_68, x_54, x_66);
-x_70 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__16;
-x_71 = l_Lean_Expr_const___override(x_70, x_3);
-x_72 = l_Lean_mkApp4(x_71, x_69, x_10, x_28, x_24);
-x_73 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_73, 0, x_72);
-lean_ctor_set(x_73, 1, x_55);
-return x_73;
-}
-}
-else
-{
-uint8_t x_74; 
-lean_dec(x_29);
-lean_dec(x_28);
-lean_dec(x_26);
-lean_dec(x_24);
-lean_dec(x_15);
-lean_dec(x_14);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_3);
-x_74 = !lean_is_exclusive(x_31);
-if (x_74 == 0)
+x_41 = l_Lean_Expr_const___override(x_40, x_3);
+x_42 = l_Lean_mkAppB(x_41, x_8, x_9);
+x_43 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__9;
+x_44 = l_Lean_Expr_const___override(x_43, x_3);
+if (lean_obj_tag(x_34) == 0)
 {
-return x_31;
+lean_object* x_45; lean_object* x_46; lean_object* x_47; 
+lean_inc(x_10);
+x_45 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkRefl(x_10);
+x_46 = l_Lean_mkApp4(x_44, x_42, x_10, x_45, x_39);
+x_47 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_47, 0, x_46);
+lean_ctor_set(x_47, 1, x_35);
+return x_47;
 }
 else
 {
-lean_object* x_75; lean_object* x_76; lean_object* x_77; 
-x_75 = lean_ctor_get(x_31, 0);
-x_76 = lean_ctor_get(x_31, 1);
-lean_inc(x_76);
-lean_inc(x_75);
-lean_dec(x_31);
-x_77 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_77, 0, x_75);
-lean_ctor_set(x_77, 1, x_76);
-return x_77;
-}
+lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_48 = lean_ctor_get(x_34, 0);
+lean_inc(x_48);
+lean_dec(x_34);
+x_49 = l_Lean_mkApp4(x_44, x_42, x_10, x_48, x_39);
+x_50 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_50, 0, x_49);
+lean_ctor_set(x_50, 1, x_35);
+return x_50;
 }
 }
 }
 else
 {
-uint8_t x_93; 
-lean_dec(x_15);
-lean_dec(x_14);
-lean_dec(x_13);
-lean_dec(x_12);
+uint8_t x_51; 
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
@@ -492,898 +245,1151 @@ lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-x_93 = !lean_is_exclusive(x_18);
-if (x_93 == 0)
+x_51 = !lean_is_exclusive(x_18);
+if (x_51 == 0)
 {
 return x_18;
 }
 else
 {
-lean_object* x_94; lean_object* x_95; lean_object* x_96; 
-x_94 = lean_ctor_get(x_18, 0);
-x_95 = lean_ctor_get(x_18, 1);
-lean_inc(x_95);
-lean_inc(x_94);
+lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_52 = lean_ctor_get(x_18, 0);
+x_53 = lean_ctor_get(x_18, 1);
+lean_inc(x_53);
+lean_inc(x_52);
 lean_dec(x_18);
-x_96 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_96, 0, x_94);
-lean_ctor_set(x_96, 1, x_95);
-return x_96;
+x_54 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_54, 0, x_52);
+lean_ctor_set(x_54, 1, x_53);
+return x_54;
 }
 }
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__1() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("BEq", 3, 3);
+x_1 = lean_mk_string_unchecked("BitVec", 6, 6);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__2() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("beq", 3, 3);
+x_1 = lean_mk_string_unchecked("cond_true", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__3() {
 _start:
 {
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__2;
-x_3 = l_Lean_Name_mkStr2(x_1, x_2);
-return x_3;
+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; 
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__4;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__5;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__6;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__1;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__2;
+x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
+return x_7;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__4() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__4() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("false", 5, 5);
+x_1 = lean_mk_string_unchecked("not", 3, 3);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__5() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__4;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__4;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__6() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__5;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__5;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__7() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__3;
-x_3 = l_Lean_Expr_const___override(x_2, x_1);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__8() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__7() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("BitVec", 6, 6);
+x_1 = lean_mk_string_unchecked("BEq", 3, 3);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__9() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__8() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("if_false", 8, 8);
+x_1 = lean_mk_string_unchecked("beq", 3, 3);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__10() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__9() {
 _start:
 {
-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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__11;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__12;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__13;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__14;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__8;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__9;
-x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
-return x_7;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__7;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__8;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__11() {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma(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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
 _start:
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("if_true", 7, 7);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__12() {
-_start:
+lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; 
+x_14 = lean_box(0);
+x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__6;
+lean_inc(x_4);
+x_16 = l_Lean_Expr_app___override(x_15, x_4);
+lean_inc(x_4);
+x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkNot(x_1, x_4, x_8, x_9, x_10, x_11, x_12, x_13);
+x_18 = !lean_is_exclusive(x_17);
+if (x_18 == 0)
 {
-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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__11;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__12;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__13;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__14;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__8;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__11;
-x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
-return x_7;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma(uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
-_start:
+lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_19 = lean_ctor_get(x_17, 0);
+x_20 = lean_ctor_get(x_17, 1);
+lean_inc(x_6);
+lean_ctor_set_tag(x_17, 1);
+lean_ctor_set(x_17, 1, x_14);
+lean_ctor_set(x_17, 0, x_6);
+lean_inc(x_5);
+x_21 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_21, 0, x_5);
+lean_ctor_set(x_21, 1, x_17);
+x_22 = lean_array_mk(x_21);
+x_23 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__9;
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+x_24 = l_Lean_Meta_mkAppM(x_23, x_22, x_9, x_10, x_11, x_12, x_20);
+if (lean_obj_tag(x_24) == 0)
+{
+lean_object* x_25; lean_object* x_26; uint8_t x_27; lean_object* x_28; lean_object* x_29; 
+x_25 = lean_ctor_get(x_24, 0);
+lean_inc(x_25);
+x_26 = lean_ctor_get(x_24, 1);
+lean_inc(x_26);
+lean_dec(x_24);
+x_27 = 0;
+lean_inc(x_6);
+lean_inc(x_3);
+x_28 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_mkBinPred(x_2, x_3, x_5, x_6, x_27, x_8, x_9, x_10, x_11, x_12, x_26);
+x_29 = lean_ctor_get(x_28, 0);
+lean_inc(x_29);
+if (lean_obj_tag(x_29) == 0)
 {
-lean_object* x_16; uint8_t x_17; 
-x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkBoolConst(x_1, x_10, x_11, x_12, x_13, x_14, x_15);
-if (x_1 == 0)
+uint8_t x_30; 
+lean_dec(x_25);
+lean_dec(x_19);
+lean_dec(x_16);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+x_30 = !lean_is_exclusive(x_28);
+if (x_30 == 0)
 {
-uint8_t x_160; 
-x_160 = 0;
-x_17 = x_160;
-goto block_159;
+lean_object* x_31; lean_object* x_32; 
+x_31 = lean_ctor_get(x_28, 0);
+lean_dec(x_31);
+x_32 = lean_box(0);
+lean_ctor_set(x_28, 0, x_32);
+return x_28;
 }
 else
 {
-uint8_t x_161; 
-x_161 = 1;
-x_17 = x_161;
-goto block_159;
+lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_33 = lean_ctor_get(x_28, 1);
+lean_inc(x_33);
+lean_dec(x_28);
+x_34 = lean_box(0);
+x_35 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_35, 0, x_34);
+lean_ctor_set(x_35, 1, x_33);
+return x_35;
 }
-block_159:
-{
-lean_object* x_18; 
-if (x_17 == 0)
-{
-lean_inc(x_9);
-x_18 = x_9;
-goto block_158;
 }
 else
 {
-lean_inc(x_8);
-x_18 = x_8;
-goto block_158;
-}
-block_158:
+lean_object* x_36; uint8_t x_37; 
+x_36 = lean_ctor_get(x_28, 1);
+lean_inc(x_36);
+lean_dec(x_28);
+x_37 = !lean_is_exclusive(x_29);
+if (x_37 == 0)
 {
-lean_object* x_19; 
-if (x_17 == 0)
+lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; uint8_t x_42; lean_object* x_43; uint8_t x_44; 
+x_38 = lean_ctor_get(x_29, 0);
+x_39 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_ofPred(x_38, x_8, x_9, x_10, x_11, x_12, x_36);
+x_40 = lean_ctor_get(x_39, 0);
+lean_inc(x_40);
+x_41 = lean_ctor_get(x_39, 1);
+lean_inc(x_41);
+lean_dec(x_39);
+x_42 = 3;
+lean_inc(x_25);
+lean_inc(x_16);
+x_43 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkGate(x_19, x_40, x_16, x_25, x_42, x_8, x_9, x_10, x_11, x_12, x_41);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+x_44 = !lean_is_exclusive(x_43);
+if (x_44 == 0)
 {
-x_19 = x_5;
-goto block_157;
+lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; uint8_t x_51; 
+x_45 = lean_ctor_get(x_43, 0);
+x_46 = lean_ctor_get(x_45, 0);
+lean_inc(x_46);
+x_47 = lean_ctor_get(x_45, 2);
+lean_inc(x_47);
+lean_inc(x_47);
+x_48 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkEvalExpr___boxed), 7, 1);
+lean_closure_set(x_48, 0, x_47);
+x_49 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__3;
+lean_inc(x_45);
+x_50 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1), 16, 9);
+lean_closure_set(x_50, 0, x_45);
+lean_closure_set(x_50, 1, x_49);
+lean_closure_set(x_50, 2, x_14);
+lean_closure_set(x_50, 3, x_3);
+lean_closure_set(x_50, 4, x_4);
+lean_closure_set(x_50, 5, x_6);
+lean_closure_set(x_50, 6, x_7);
+lean_closure_set(x_50, 7, x_16);
+lean_closure_set(x_50, 8, x_25);
+x_51 = !lean_is_exclusive(x_45);
+if (x_51 == 0)
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; 
+x_52 = lean_ctor_get(x_45, 2);
+lean_dec(x_52);
+x_53 = lean_ctor_get(x_45, 1);
+lean_dec(x_53);
+x_54 = lean_ctor_get(x_45, 0);
+lean_dec(x_54);
+x_55 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg), 8, 2);
+lean_closure_set(x_55, 0, x_48);
+lean_closure_set(x_55, 1, x_50);
+lean_ctor_set(x_45, 1, x_55);
+lean_ctor_set(x_29, 0, x_45);
+lean_ctor_set(x_43, 0, x_29);
+return x_43;
 }
 else
 {
-lean_dec(x_5);
-lean_inc(x_4);
-x_19 = x_4;
-goto block_157;
+lean_object* x_56; lean_object* x_57; 
+lean_dec(x_45);
+x_56 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg), 8, 2);
+lean_closure_set(x_56, 0, x_48);
+lean_closure_set(x_56, 1, x_50);
+x_57 = lean_alloc_ctor(0, 3, 0);
+lean_ctor_set(x_57, 0, x_46);
+lean_ctor_set(x_57, 1, x_56);
+lean_ctor_set(x_57, 2, x_47);
+lean_ctor_set(x_29, 0, x_57);
+lean_ctor_set(x_43, 0, x_29);
+return x_43;
 }
-block_157:
-{
-lean_object* x_20; 
-if (x_17 == 0)
-{
-lean_object* x_155; 
-x_155 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__10;
-x_20 = x_155;
-goto block_154;
 }
 else
 {
-lean_object* x_156; 
-x_156 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__12;
-x_20 = x_156;
-goto block_154;
+lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; 
+x_58 = lean_ctor_get(x_43, 0);
+x_59 = lean_ctor_get(x_43, 1);
+lean_inc(x_59);
+lean_inc(x_58);
+lean_dec(x_43);
+x_60 = lean_ctor_get(x_58, 0);
+lean_inc(x_60);
+x_61 = lean_ctor_get(x_58, 2);
+lean_inc(x_61);
+lean_inc(x_61);
+x_62 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkEvalExpr___boxed), 7, 1);
+lean_closure_set(x_62, 0, x_61);
+x_63 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__3;
+lean_inc(x_58);
+x_64 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1), 16, 9);
+lean_closure_set(x_64, 0, x_58);
+lean_closure_set(x_64, 1, x_63);
+lean_closure_set(x_64, 2, x_14);
+lean_closure_set(x_64, 3, x_3);
+lean_closure_set(x_64, 4, x_4);
+lean_closure_set(x_64, 5, x_6);
+lean_closure_set(x_64, 6, x_7);
+lean_closure_set(x_64, 7, x_16);
+lean_closure_set(x_64, 8, x_25);
+if (lean_is_exclusive(x_58)) {
+ lean_ctor_release(x_58, 0);
+ lean_ctor_release(x_58, 1);
+ lean_ctor_release(x_58, 2);
+ x_65 = x_58;
+} else {
+ lean_dec_ref(x_58);
+ x_65 = lean_box(0);
+}
+x_66 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg), 8, 2);
+lean_closure_set(x_66, 0, x_62);
+lean_closure_set(x_66, 1, x_64);
+if (lean_is_scalar(x_65)) {
+ x_67 = lean_alloc_ctor(0, 3, 0);
+} else {
+ x_67 = x_65;
 }
-block_154:
+lean_ctor_set(x_67, 0, x_60);
+lean_ctor_set(x_67, 1, x_66);
+lean_ctor_set(x_67, 2, x_61);
+lean_ctor_set(x_29, 0, x_67);
+x_68 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_68, 0, x_29);
+lean_ctor_set(x_68, 1, x_59);
+return x_68;
+}
+}
+else
 {
-lean_object* x_21; lean_object* x_22; lean_object* x_23; 
-if (x_1 == 0)
+lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; uint8_t x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; 
+x_69 = lean_ctor_get(x_29, 0);
+lean_inc(x_69);
+lean_dec(x_29);
+x_70 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_ofPred(x_69, x_8, x_9, x_10, x_11, x_12, x_36);
+x_71 = lean_ctor_get(x_70, 0);
+lean_inc(x_71);
+x_72 = lean_ctor_get(x_70, 1);
+lean_inc(x_72);
+lean_dec(x_70);
+x_73 = 3;
+lean_inc(x_25);
+lean_inc(x_16);
+x_74 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkGate(x_19, x_71, x_16, x_25, x_73, x_8, x_9, x_10, x_11, x_12, x_72);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+x_75 = lean_ctor_get(x_74, 0);
+lean_inc(x_75);
+x_76 = lean_ctor_get(x_74, 1);
+lean_inc(x_76);
+if (lean_is_exclusive(x_74)) {
+ lean_ctor_release(x_74, 0);
+ lean_ctor_release(x_74, 1);
+ x_77 = x_74;
+} else {
+ lean_dec_ref(x_74);
+ x_77 = lean_box(0);
+}
+x_78 = lean_ctor_get(x_75, 0);
+lean_inc(x_78);
+x_79 = lean_ctor_get(x_75, 2);
+lean_inc(x_79);
+lean_inc(x_79);
+x_80 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkEvalExpr___boxed), 7, 1);
+lean_closure_set(x_80, 0, x_79);
+x_81 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__3;
+lean_inc(x_75);
+x_82 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1), 16, 9);
+lean_closure_set(x_82, 0, x_75);
+lean_closure_set(x_82, 1, x_81);
+lean_closure_set(x_82, 2, x_14);
+lean_closure_set(x_82, 3, x_3);
+lean_closure_set(x_82, 4, x_4);
+lean_closure_set(x_82, 5, x_6);
+lean_closure_set(x_82, 6, x_7);
+lean_closure_set(x_82, 7, x_16);
+lean_closure_set(x_82, 8, x_25);
+if (lean_is_exclusive(x_75)) {
+ lean_ctor_release(x_75, 0);
+ lean_ctor_release(x_75, 1);
+ lean_ctor_release(x_75, 2);
+ x_83 = x_75;
+} else {
+ lean_dec_ref(x_75);
+ x_83 = lean_box(0);
+}
+x_84 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg), 8, 2);
+lean_closure_set(x_84, 0, x_80);
+lean_closure_set(x_84, 1, x_82);
+if (lean_is_scalar(x_83)) {
+ x_85 = lean_alloc_ctor(0, 3, 0);
+} else {
+ x_85 = x_83;
+}
+lean_ctor_set(x_85, 0, x_78);
+lean_ctor_set(x_85, 1, x_84);
+lean_ctor_set(x_85, 2, x_79);
+x_86 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_86, 0, x_85);
+if (lean_is_scalar(x_77)) {
+ x_87 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_87 = x_77;
+}
+lean_ctor_set(x_87, 0, x_86);
+lean_ctor_set(x_87, 1, x_76);
+return x_87;
+}
+}
+}
+else
 {
-lean_object* x_148; lean_object* x_149; lean_object* x_150; 
-x_148 = lean_ctor_get(x_16, 0);
-lean_inc(x_148);
-x_149 = lean_ctor_get(x_16, 1);
-lean_inc(x_149);
+uint8_t x_88; 
+lean_dec(x_19);
 lean_dec(x_16);
-x_150 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__6;
-x_21 = x_150;
-x_22 = x_148;
-x_23 = x_149;
-goto block_147;
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_88 = !lean_is_exclusive(x_24);
+if (x_88 == 0)
+{
+return x_24;
 }
 else
 {
-lean_object* x_151; lean_object* x_152; lean_object* x_153; 
-x_151 = lean_ctor_get(x_16, 0);
-lean_inc(x_151);
-x_152 = lean_ctor_get(x_16, 1);
-lean_inc(x_152);
-lean_dec(x_16);
-x_153 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__7;
-x_21 = x_153;
-x_22 = x_151;
-x_23 = x_152;
-goto block_147;
+lean_object* x_89; lean_object* x_90; lean_object* x_91; 
+x_89 = lean_ctor_get(x_24, 0);
+x_90 = lean_ctor_get(x_24, 1);
+lean_inc(x_90);
+lean_inc(x_89);
+lean_dec(x_24);
+x_91 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_91, 0, x_89);
+lean_ctor_set(x_91, 1, x_90);
+return x_91;
+}
 }
-block_147:
+}
+else
 {
-lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; 
-x_24 = lean_box(0);
-lean_inc(x_21);
-x_25 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_25, 0, x_21);
-lean_ctor_set(x_25, 1, x_24);
+lean_object* x_92; lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; 
+x_92 = lean_ctor_get(x_17, 0);
+x_93 = lean_ctor_get(x_17, 1);
+lean_inc(x_93);
+lean_inc(x_92);
+lean_dec(x_17);
 lean_inc(x_6);
-x_26 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_26, 0, x_6);
-lean_ctor_set(x_26, 1, x_25);
-x_27 = lean_array_mk(x_26);
-x_28 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__3;
-lean_inc(x_14);
-lean_inc(x_13);
+x_94 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_94, 0, x_6);
+lean_ctor_set(x_94, 1, x_14);
+lean_inc(x_5);
+x_95 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_95, 0, x_5);
+lean_ctor_set(x_95, 1, x_94);
+x_96 = lean_array_mk(x_95);
+x_97 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__9;
 lean_inc(x_12);
 lean_inc(x_11);
-x_29 = l_Lean_Meta_mkAppM(x_28, x_27, x_11, x_12, x_13, x_14, x_23);
-if (lean_obj_tag(x_29) == 0)
-{
-lean_object* x_30; lean_object* x_31; uint8_t x_32; lean_object* x_33; uint8_t x_34; 
-x_30 = lean_ctor_get(x_29, 0);
-lean_inc(x_30);
-x_31 = lean_ctor_get(x_29, 1);
-lean_inc(x_31);
-lean_dec(x_29);
-x_32 = 2;
+lean_inc(x_10);
+lean_inc(x_9);
+x_98 = l_Lean_Meta_mkAppM(x_97, x_96, x_9, x_10, x_11, x_12, x_93);
+if (lean_obj_tag(x_98) == 0)
+{
+lean_object* x_99; lean_object* x_100; uint8_t x_101; lean_object* x_102; lean_object* x_103; 
+x_99 = lean_ctor_get(x_98, 0);
+lean_inc(x_99);
+x_100 = lean_ctor_get(x_98, 1);
+lean_inc(x_100);
+lean_dec(x_98);
+x_101 = 0;
 lean_inc(x_6);
-x_33 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkGate(x_2, x_22, x_6, x_21, x_32, x_10, x_11, x_12, x_13, x_14, x_31);
-x_34 = !lean_is_exclusive(x_33);
-if (x_34 == 0)
-{
-lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; 
-x_35 = lean_ctor_get(x_33, 0);
-x_36 = lean_ctor_get(x_33, 1);
-lean_inc(x_18);
-lean_ctor_set_tag(x_33, 1);
-lean_ctor_set(x_33, 1, x_24);
-lean_ctor_set(x_33, 0, x_18);
-lean_inc(x_7);
-x_37 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_37, 0, x_7);
-lean_ctor_set(x_37, 1, x_33);
-x_38 = lean_array_mk(x_37);
-lean_inc(x_14);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-x_39 = l_Lean_Meta_mkAppM(x_28, x_38, x_11, x_12, x_13, x_14, x_36);
-if (lean_obj_tag(x_39) == 0)
-{
-lean_object* x_40; lean_object* x_41; uint8_t x_42; lean_object* x_43; lean_object* x_44; 
-x_40 = lean_ctor_get(x_39, 0);
-lean_inc(x_40);
-x_41 = lean_ctor_get(x_39, 1);
-lean_inc(x_41);
-lean_dec(x_39);
-x_42 = 0;
-x_43 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_mkBinPred(x_3, x_19, x_7, x_18, x_42, x_10, x_11, x_12, x_13, x_14, x_41);
-x_44 = lean_ctor_get(x_43, 0);
-lean_inc(x_44);
-if (lean_obj_tag(x_44) == 0)
-{
-uint8_t x_45; 
-lean_dec(x_40);
-lean_dec(x_35);
-lean_dec(x_30);
-lean_dec(x_20);
-lean_dec(x_14);
-lean_dec(x_13);
+lean_inc(x_3);
+x_102 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_mkBinPred(x_2, x_3, x_5, x_6, x_101, x_8, x_9, x_10, x_11, x_12, x_100);
+x_103 = lean_ctor_get(x_102, 0);
+lean_inc(x_103);
+if (lean_obj_tag(x_103) == 0)
+{
+lean_object* x_104; lean_object* x_105; lean_object* x_106; lean_object* x_107; 
+lean_dec(x_99);
+lean_dec(x_92);
+lean_dec(x_16);
 lean_dec(x_12);
 lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
-lean_dec(x_8);
+lean_dec(x_7);
 lean_dec(x_6);
 lean_dec(x_4);
-x_45 = !lean_is_exclusive(x_43);
-if (x_45 == 0)
-{
-lean_object* x_46; lean_object* x_47; 
-x_46 = lean_ctor_get(x_43, 0);
-lean_dec(x_46);
-x_47 = lean_box(0);
-lean_ctor_set(x_43, 0, x_47);
-return x_43;
+lean_dec(x_3);
+x_104 = lean_ctor_get(x_102, 1);
+lean_inc(x_104);
+if (lean_is_exclusive(x_102)) {
+ lean_ctor_release(x_102, 0);
+ lean_ctor_release(x_102, 1);
+ x_105 = x_102;
+} else {
+ lean_dec_ref(x_102);
+ x_105 = lean_box(0);
 }
-else
-{
-lean_object* x_48; lean_object* x_49; lean_object* x_50; 
-x_48 = lean_ctor_get(x_43, 1);
-lean_inc(x_48);
-lean_dec(x_43);
-x_49 = lean_box(0);
-x_50 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_50, 0, x_49);
-lean_ctor_set(x_50, 1, x_48);
-return x_50;
+x_106 = lean_box(0);
+if (lean_is_scalar(x_105)) {
+ x_107 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_107 = x_105;
 }
+lean_ctor_set(x_107, 0, x_106);
+lean_ctor_set(x_107, 1, x_104);
+return x_107;
 }
 else
 {
-lean_object* x_51; uint8_t x_52; 
-x_51 = lean_ctor_get(x_43, 1);
-lean_inc(x_51);
-lean_dec(x_43);
-x_52 = !lean_is_exclusive(x_44);
-if (x_52 == 0)
-{
-lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; uint8_t x_57; lean_object* x_58; uint8_t x_59; 
-x_53 = lean_ctor_get(x_44, 0);
-x_54 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_ofPred(x_53, x_10, x_11, x_12, x_13, x_14, x_51);
-x_55 = lean_ctor_get(x_54, 0);
-lean_inc(x_55);
-x_56 = lean_ctor_get(x_54, 1);
-lean_inc(x_56);
-lean_dec(x_54);
-x_57 = 3;
-lean_inc(x_40);
-lean_inc(x_30);
-x_58 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkGate(x_35, x_55, x_30, x_40, x_57, x_10, x_11, x_12, x_13, x_14, x_56);
-lean_dec(x_14);
-lean_dec(x_13);
+lean_object* x_108; lean_object* x_109; lean_object* x_110; lean_object* x_111; lean_object* x_112; lean_object* x_113; uint8_t x_114; lean_object* x_115; lean_object* x_116; 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_object* x_123; lean_object* x_124; lean_object* x_125; lean_object* x_126; lean_object* x_127; lean_object* x_128; 
+x_108 = lean_ctor_get(x_102, 1);
+lean_inc(x_108);
+lean_dec(x_102);
+x_109 = lean_ctor_get(x_103, 0);
+lean_inc(x_109);
+if (lean_is_exclusive(x_103)) {
+ lean_ctor_release(x_103, 0);
+ x_110 = x_103;
+} else {
+ lean_dec_ref(x_103);
+ x_110 = lean_box(0);
+}
+x_111 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_ofPred(x_109, x_8, x_9, x_10, x_11, x_12, x_108);
+x_112 = lean_ctor_get(x_111, 0);
+lean_inc(x_112);
+x_113 = lean_ctor_get(x_111, 1);
+lean_inc(x_113);
+lean_dec(x_111);
+x_114 = 3;
+lean_inc(x_99);
+lean_inc(x_16);
+x_115 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkGate(x_92, x_112, x_16, x_99, x_114, x_8, x_9, x_10, x_11, x_12, x_113);
 lean_dec(x_12);
 lean_dec(x_11);
-x_59 = !lean_is_exclusive(x_58);
-if (x_59 == 0)
-{
-lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; uint8_t x_65; 
-x_60 = lean_ctor_get(x_58, 0);
-x_61 = lean_ctor_get(x_60, 0);
-lean_inc(x_61);
-x_62 = lean_ctor_get(x_60, 2);
-lean_inc(x_62);
-lean_inc(x_62);
-x_63 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkEvalExpr___boxed), 7, 1);
-lean_closure_set(x_63, 0, x_62);
-lean_inc(x_60);
-x_64 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1), 16, 9);
-lean_closure_set(x_64, 0, x_60);
-lean_closure_set(x_64, 1, x_20);
-lean_closure_set(x_64, 2, x_24);
-lean_closure_set(x_64, 3, x_4);
-lean_closure_set(x_64, 4, x_6);
-lean_closure_set(x_64, 5, x_8);
-lean_closure_set(x_64, 6, x_9);
-lean_closure_set(x_64, 7, x_30);
-lean_closure_set(x_64, 8, x_40);
-x_65 = !lean_is_exclusive(x_60);
-if (x_65 == 0)
-{
-lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; 
-x_66 = lean_ctor_get(x_60, 2);
-lean_dec(x_66);
-x_67 = lean_ctor_get(x_60, 1);
-lean_dec(x_67);
-x_68 = lean_ctor_get(x_60, 0);
-lean_dec(x_68);
-x_69 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg), 8, 2);
-lean_closure_set(x_69, 0, x_63);
-lean_closure_set(x_69, 1, x_64);
-lean_ctor_set(x_60, 1, x_69);
-lean_ctor_set(x_44, 0, x_60);
-lean_ctor_set(x_58, 0, x_44);
-return x_58;
+lean_dec(x_10);
+lean_dec(x_9);
+x_116 = lean_ctor_get(x_115, 0);
+lean_inc(x_116);
+x_117 = lean_ctor_get(x_115, 1);
+lean_inc(x_117);
+if (lean_is_exclusive(x_115)) {
+ lean_ctor_release(x_115, 0);
+ lean_ctor_release(x_115, 1);
+ x_118 = x_115;
+} else {
+ lean_dec_ref(x_115);
+ x_118 = lean_box(0);
 }
-else
-{
-lean_object* x_70; lean_object* x_71; 
-lean_dec(x_60);
-x_70 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg), 8, 2);
-lean_closure_set(x_70, 0, x_63);
-lean_closure_set(x_70, 1, x_64);
-x_71 = lean_alloc_ctor(0, 3, 0);
-lean_ctor_set(x_71, 0, x_61);
-lean_ctor_set(x_71, 1, x_70);
-lean_ctor_set(x_71, 2, x_62);
-lean_ctor_set(x_44, 0, x_71);
-lean_ctor_set(x_58, 0, x_44);
-return x_58;
+x_119 = lean_ctor_get(x_116, 0);
+lean_inc(x_119);
+x_120 = lean_ctor_get(x_116, 2);
+lean_inc(x_120);
+lean_inc(x_120);
+x_121 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkEvalExpr___boxed), 7, 1);
+lean_closure_set(x_121, 0, x_120);
+x_122 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__3;
+lean_inc(x_116);
+x_123 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1), 16, 9);
+lean_closure_set(x_123, 0, x_116);
+lean_closure_set(x_123, 1, x_122);
+lean_closure_set(x_123, 2, x_14);
+lean_closure_set(x_123, 3, x_3);
+lean_closure_set(x_123, 4, x_4);
+lean_closure_set(x_123, 5, x_6);
+lean_closure_set(x_123, 6, x_7);
+lean_closure_set(x_123, 7, x_16);
+lean_closure_set(x_123, 8, x_99);
+if (lean_is_exclusive(x_116)) {
+ lean_ctor_release(x_116, 0);
+ lean_ctor_release(x_116, 1);
+ lean_ctor_release(x_116, 2);
+ x_124 = x_116;
+} else {
+ lean_dec_ref(x_116);
+ x_124 = lean_box(0);
+}
+x_125 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg), 8, 2);
+lean_closure_set(x_125, 0, x_121);
+lean_closure_set(x_125, 1, x_123);
+if (lean_is_scalar(x_124)) {
+ x_126 = lean_alloc_ctor(0, 3, 0);
+} else {
+ x_126 = x_124;
+}
+lean_ctor_set(x_126, 0, x_119);
+lean_ctor_set(x_126, 1, x_125);
+lean_ctor_set(x_126, 2, x_120);
+if (lean_is_scalar(x_110)) {
+ x_127 = lean_alloc_ctor(1, 1, 0);
+} else {
+ x_127 = x_110;
+}
+lean_ctor_set(x_127, 0, x_126);
+if (lean_is_scalar(x_118)) {
+ x_128 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_128 = x_118;
+}
+lean_ctor_set(x_128, 0, x_127);
+lean_ctor_set(x_128, 1, x_117);
+return x_128;
 }
 }
 else
 {
-lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; 
-x_72 = lean_ctor_get(x_58, 0);
-x_73 = lean_ctor_get(x_58, 1);
-lean_inc(x_73);
-lean_inc(x_72);
-lean_dec(x_58);
-x_74 = lean_ctor_get(x_72, 0);
-lean_inc(x_74);
-x_75 = lean_ctor_get(x_72, 2);
-lean_inc(x_75);
-lean_inc(x_75);
-x_76 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkEvalExpr___boxed), 7, 1);
-lean_closure_set(x_76, 0, x_75);
-lean_inc(x_72);
-x_77 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1), 16, 9);
-lean_closure_set(x_77, 0, x_72);
-lean_closure_set(x_77, 1, x_20);
-lean_closure_set(x_77, 2, x_24);
-lean_closure_set(x_77, 3, x_4);
-lean_closure_set(x_77, 4, x_6);
-lean_closure_set(x_77, 5, x_8);
-lean_closure_set(x_77, 6, x_9);
-lean_closure_set(x_77, 7, x_30);
-lean_closure_set(x_77, 8, x_40);
-if (lean_is_exclusive(x_72)) {
- lean_ctor_release(x_72, 0);
- lean_ctor_release(x_72, 1);
- lean_ctor_release(x_72, 2);
- x_78 = x_72;
+lean_object* x_129; lean_object* x_130; lean_object* x_131; lean_object* x_132; 
+lean_dec(x_92);
+lean_dec(x_16);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_129 = lean_ctor_get(x_98, 0);
+lean_inc(x_129);
+x_130 = lean_ctor_get(x_98, 1);
+lean_inc(x_130);
+if (lean_is_exclusive(x_98)) {
+ lean_ctor_release(x_98, 0);
+ lean_ctor_release(x_98, 1);
+ x_131 = x_98;
 } else {
- lean_dec_ref(x_72);
- x_78 = lean_box(0);
+ lean_dec_ref(x_98);
+ x_131 = lean_box(0);
 }
-x_79 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg), 8, 2);
-lean_closure_set(x_79, 0, x_76);
-lean_closure_set(x_79, 1, x_77);
-if (lean_is_scalar(x_78)) {
- x_80 = lean_alloc_ctor(0, 3, 0);
+if (lean_is_scalar(x_131)) {
+ x_132 = lean_alloc_ctor(1, 2, 0);
 } else {
- x_80 = x_78;
+ x_132 = x_131;
+}
+lean_ctor_set(x_132, 0, x_129);
+lean_ctor_set(x_132, 1, x_130);
+return x_132;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; 
+x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_8);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
+_start:
+{
+lean_object* x_16; lean_object* x_17; 
+x_16 = lean_ctor_get(x_1, 1);
+lean_inc(x_16);
+lean_dec(x_1);
+x_17 = lean_apply_6(x_16, x_10, x_11, x_12, x_13, x_14, x_15);
+if (lean_obj_tag(x_17) == 0)
+{
+uint8_t x_18; 
+x_18 = !lean_is_exclusive(x_17);
+if (x_18 == 0)
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_19 = lean_ctor_get(x_17, 0);
+lean_inc(x_3);
+x_20 = l_Lean_Expr_const___override(x_2, x_3);
+x_21 = lean_ctor_get(x_4, 0);
+lean_inc(x_21);
+lean_dec(x_4);
+x_22 = l_Lean_mkNatLit(x_21);
+lean_inc(x_5);
+x_23 = l_Lean_mkApp4(x_20, x_22, x_5, x_6, x_7);
+x_24 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__3;
+lean_inc(x_3);
+x_25 = l_Lean_Expr_const___override(x_24, x_3);
+x_26 = l_Lean_mkAppB(x_25, x_5, x_8);
+x_27 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__9;
+x_28 = l_Lean_Expr_const___override(x_27, x_3);
+if (lean_obj_tag(x_19) == 0)
+{
+lean_object* x_29; lean_object* x_30; 
+lean_inc(x_9);
+x_29 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkRefl(x_9);
+x_30 = l_Lean_mkApp4(x_28, x_26, x_9, x_29, x_23);
+lean_ctor_set(x_17, 0, x_30);
+return x_17;
 }
-lean_ctor_set(x_80, 0, x_74);
-lean_ctor_set(x_80, 1, x_79);
-lean_ctor_set(x_80, 2, x_75);
-lean_ctor_set(x_44, 0, x_80);
-x_81 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_81, 0, x_44);
-lean_ctor_set(x_81, 1, x_73);
-return x_81;
+else
+{
+lean_object* x_31; lean_object* x_32; 
+x_31 = lean_ctor_get(x_19, 0);
+lean_inc(x_31);
+lean_dec(x_19);
+x_32 = l_Lean_mkApp4(x_28, x_26, x_9, x_31, x_23);
+lean_ctor_set(x_17, 0, x_32);
+return x_17;
 }
 }
 else
 {
-lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; uint8_t x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; lean_object* x_99; 
-x_82 = lean_ctor_get(x_44, 0);
-lean_inc(x_82);
-lean_dec(x_44);
-x_83 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_ofPred(x_82, x_10, x_11, x_12, x_13, x_14, x_51);
-x_84 = lean_ctor_get(x_83, 0);
-lean_inc(x_84);
-x_85 = lean_ctor_get(x_83, 1);
-lean_inc(x_85);
-lean_dec(x_83);
-x_86 = 3;
-lean_inc(x_40);
-lean_inc(x_30);
-x_87 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkGate(x_35, x_84, x_30, x_40, x_86, x_10, x_11, x_12, x_13, x_14, x_85);
-lean_dec(x_14);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-x_88 = lean_ctor_get(x_87, 0);
-lean_inc(x_88);
-x_89 = lean_ctor_get(x_87, 1);
-lean_inc(x_89);
-if (lean_is_exclusive(x_87)) {
- lean_ctor_release(x_87, 0);
- lean_ctor_release(x_87, 1);
- x_90 = x_87;
-} else {
- lean_dec_ref(x_87);
- x_90 = lean_box(0);
-}
-x_91 = lean_ctor_get(x_88, 0);
-lean_inc(x_91);
-x_92 = lean_ctor_get(x_88, 2);
-lean_inc(x_92);
-lean_inc(x_92);
-x_93 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkEvalExpr___boxed), 7, 1);
-lean_closure_set(x_93, 0, x_92);
-lean_inc(x_88);
-x_94 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1), 16, 9);
-lean_closure_set(x_94, 0, x_88);
-lean_closure_set(x_94, 1, x_20);
-lean_closure_set(x_94, 2, x_24);
-lean_closure_set(x_94, 3, x_4);
-lean_closure_set(x_94, 4, x_6);
-lean_closure_set(x_94, 5, x_8);
-lean_closure_set(x_94, 6, x_9);
-lean_closure_set(x_94, 7, x_30);
-lean_closure_set(x_94, 8, x_40);
-if (lean_is_exclusive(x_88)) {
- lean_ctor_release(x_88, 0);
- lean_ctor_release(x_88, 1);
- lean_ctor_release(x_88, 2);
- x_95 = x_88;
-} else {
- lean_dec_ref(x_88);
- x_95 = lean_box(0);
-}
-x_96 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg), 8, 2);
-lean_closure_set(x_96, 0, x_93);
-lean_closure_set(x_96, 1, x_94);
-if (lean_is_scalar(x_95)) {
- x_97 = lean_alloc_ctor(0, 3, 0);
-} else {
- x_97 = x_95;
-}
-lean_ctor_set(x_97, 0, x_91);
-lean_ctor_set(x_97, 1, x_96);
-lean_ctor_set(x_97, 2, x_92);
-x_98 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_98, 0, x_97);
-if (lean_is_scalar(x_90)) {
- x_99 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_99 = x_90;
+lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; 
+x_33 = lean_ctor_get(x_17, 0);
+x_34 = lean_ctor_get(x_17, 1);
+lean_inc(x_34);
+lean_inc(x_33);
+lean_dec(x_17);
+lean_inc(x_3);
+x_35 = l_Lean_Expr_const___override(x_2, x_3);
+x_36 = lean_ctor_get(x_4, 0);
+lean_inc(x_36);
+lean_dec(x_4);
+x_37 = l_Lean_mkNatLit(x_36);
+lean_inc(x_5);
+x_38 = l_Lean_mkApp4(x_35, x_37, x_5, x_6, x_7);
+x_39 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__3;
+lean_inc(x_3);
+x_40 = l_Lean_Expr_const___override(x_39, x_3);
+x_41 = l_Lean_mkAppB(x_40, x_5, x_8);
+x_42 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__9;
+x_43 = l_Lean_Expr_const___override(x_42, x_3);
+if (lean_obj_tag(x_33) == 0)
+{
+lean_object* x_44; lean_object* x_45; lean_object* x_46; 
+lean_inc(x_9);
+x_44 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkRefl(x_9);
+x_45 = l_Lean_mkApp4(x_43, x_41, x_9, x_44, x_38);
+x_46 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_46, 0, x_45);
+lean_ctor_set(x_46, 1, x_34);
+return x_46;
 }
-lean_ctor_set(x_99, 0, x_98);
-lean_ctor_set(x_99, 1, x_89);
-return x_99;
+else
+{
+lean_object* x_47; lean_object* x_48; lean_object* x_49; 
+x_47 = lean_ctor_get(x_33, 0);
+lean_inc(x_47);
+lean_dec(x_33);
+x_48 = l_Lean_mkApp4(x_43, x_41, x_9, x_47, x_38);
+x_49 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_49, 0, x_48);
+lean_ctor_set(x_49, 1, x_34);
+return x_49;
 }
 }
 }
 else
 {
-uint8_t x_100; 
-lean_dec(x_35);
-lean_dec(x_30);
-lean_dec(x_20);
-lean_dec(x_19);
-lean_dec(x_18);
-lean_dec(x_14);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
+uint8_t x_50; 
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
+lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
-x_100 = !lean_is_exclusive(x_39);
-if (x_100 == 0)
+lean_dec(x_2);
+x_50 = !lean_is_exclusive(x_17);
+if (x_50 == 0)
 {
-return x_39;
+return x_17;
 }
 else
 {
-lean_object* x_101; lean_object* x_102; lean_object* x_103; 
-x_101 = lean_ctor_get(x_39, 0);
-x_102 = lean_ctor_get(x_39, 1);
-lean_inc(x_102);
-lean_inc(x_101);
-lean_dec(x_39);
-x_103 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_103, 0, x_101);
-lean_ctor_set(x_103, 1, x_102);
-return x_103;
+lean_object* x_51; lean_object* x_52; lean_object* x_53; 
+x_51 = lean_ctor_get(x_17, 0);
+x_52 = lean_ctor_get(x_17, 1);
+lean_inc(x_52);
+lean_inc(x_51);
+lean_dec(x_17);
+x_53 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_53, 0, x_51);
+lean_ctor_set(x_53, 1, x_52);
+return x_53;
 }
 }
 }
-else
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___closed__1() {
+_start:
 {
-lean_object* x_104; lean_object* x_105; lean_object* x_106; lean_object* x_107; lean_object* x_108; lean_object* x_109; 
-x_104 = lean_ctor_get(x_33, 0);
-x_105 = lean_ctor_get(x_33, 1);
-lean_inc(x_105);
-lean_inc(x_104);
-lean_dec(x_33);
-lean_inc(x_18);
-x_106 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_106, 0, x_18);
-lean_ctor_set(x_106, 1, x_24);
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("cond_false", 10, 10);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___closed__2() {
+_start:
+{
+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; 
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__4;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__5;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__6;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__1;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___closed__1;
+x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
+return x_7;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma(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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_14 = lean_box(0);
 lean_inc(x_7);
-x_107 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_107, 0, x_7);
-lean_ctor_set(x_107, 1, x_106);
-x_108 = lean_array_mk(x_107);
-lean_inc(x_14);
-lean_inc(x_13);
+x_15 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_15, 0, x_7);
+lean_ctor_set(x_15, 1, x_14);
+lean_inc(x_5);
+x_16 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_16, 0, x_5);
+lean_ctor_set(x_16, 1, x_15);
+x_17 = lean_array_mk(x_16);
+x_18 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__9;
 lean_inc(x_12);
 lean_inc(x_11);
-x_109 = l_Lean_Meta_mkAppM(x_28, x_108, x_11, x_12, x_13, x_14, x_105);
-if (lean_obj_tag(x_109) == 0)
-{
-lean_object* x_110; lean_object* x_111; uint8_t x_112; lean_object* x_113; lean_object* x_114; 
-x_110 = lean_ctor_get(x_109, 0);
-lean_inc(x_110);
-x_111 = lean_ctor_get(x_109, 1);
-lean_inc(x_111);
-lean_dec(x_109);
-x_112 = 0;
-x_113 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_mkBinPred(x_3, x_19, x_7, x_18, x_112, x_10, x_11, x_12, x_13, x_14, x_111);
-x_114 = lean_ctor_get(x_113, 0);
-lean_inc(x_114);
-if (lean_obj_tag(x_114) == 0)
-{
-lean_object* x_115; lean_object* x_116; lean_object* x_117; lean_object* x_118; 
-lean_dec(x_110);
-lean_dec(x_104);
-lean_dec(x_30);
+lean_inc(x_10);
+lean_inc(x_9);
+x_19 = l_Lean_Meta_mkAppM(x_18, x_17, x_9, x_10, x_11, x_12, x_13);
+if (lean_obj_tag(x_19) == 0)
+{
+lean_object* x_20; lean_object* x_21; uint8_t x_22; lean_object* x_23; lean_object* x_24; 
+x_20 = lean_ctor_get(x_19, 0);
+lean_inc(x_20);
+x_21 = lean_ctor_get(x_19, 1);
+lean_inc(x_21);
+lean_dec(x_19);
+x_22 = 0;
+lean_inc(x_7);
+lean_inc(x_3);
+x_23 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_mkBinPred(x_2, x_3, x_5, x_7, x_22, x_8, x_9, x_10, x_11, x_12, x_21);
+x_24 = lean_ctor_get(x_23, 0);
+lean_inc(x_24);
+if (lean_obj_tag(x_24) == 0)
+{
+uint8_t x_25; 
 lean_dec(x_20);
-lean_dec(x_14);
-lean_dec(x_13);
 lean_dec(x_12);
 lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
-lean_dec(x_8);
+lean_dec(x_7);
 lean_dec(x_6);
 lean_dec(x_4);
-x_115 = lean_ctor_get(x_113, 1);
-lean_inc(x_115);
-if (lean_is_exclusive(x_113)) {
- lean_ctor_release(x_113, 0);
- lean_ctor_release(x_113, 1);
- x_116 = x_113;
-} else {
- lean_dec_ref(x_113);
- x_116 = lean_box(0);
+lean_dec(x_3);
+lean_dec(x_1);
+x_25 = !lean_is_exclusive(x_23);
+if (x_25 == 0)
+{
+lean_object* x_26; lean_object* x_27; 
+x_26 = lean_ctor_get(x_23, 0);
+lean_dec(x_26);
+x_27 = lean_box(0);
+lean_ctor_set(x_23, 0, x_27);
+return x_23;
 }
-x_117 = lean_box(0);
-if (lean_is_scalar(x_116)) {
- x_118 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_118 = x_116;
+else
+{
+lean_object* x_28; lean_object* x_29; lean_object* x_30; 
+x_28 = lean_ctor_get(x_23, 1);
+lean_inc(x_28);
+lean_dec(x_23);
+x_29 = lean_box(0);
+x_30 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_30, 0, x_29);
+lean_ctor_set(x_30, 1, x_28);
+return x_30;
 }
-lean_ctor_set(x_118, 0, x_117);
-lean_ctor_set(x_118, 1, x_115);
-return x_118;
 }
 else
 {
-lean_object* x_119; lean_object* x_120; lean_object* x_121; lean_object* x_122; lean_object* x_123; lean_object* x_124; uint8_t 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; lean_object* x_132; lean_object* x_133; lean_object* x_134; lean_object* x_135; lean_object* x_136; lean_object* x_137; lean_object* x_138; 
-x_119 = lean_ctor_get(x_113, 1);
-lean_inc(x_119);
-lean_dec(x_113);
-x_120 = lean_ctor_get(x_114, 0);
-lean_inc(x_120);
-if (lean_is_exclusive(x_114)) {
- lean_ctor_release(x_114, 0);
- x_121 = x_114;
-} else {
- lean_dec_ref(x_114);
- x_121 = lean_box(0);
-}
-x_122 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_ofPred(x_120, x_10, x_11, x_12, x_13, x_14, x_119);
-x_123 = lean_ctor_get(x_122, 0);
-lean_inc(x_123);
-x_124 = lean_ctor_get(x_122, 1);
-lean_inc(x_124);
-lean_dec(x_122);
-x_125 = 3;
-lean_inc(x_110);
-lean_inc(x_30);
-x_126 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkGate(x_104, x_123, x_30, x_110, x_125, x_10, x_11, x_12, x_13, x_14, x_124);
-lean_dec(x_14);
-lean_dec(x_13);
+lean_object* x_31; uint8_t x_32; 
+x_31 = lean_ctor_get(x_23, 1);
+lean_inc(x_31);
+lean_dec(x_23);
+x_32 = !lean_is_exclusive(x_24);
+if (x_32 == 0)
+{
+lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; uint8_t x_37; lean_object* x_38; uint8_t x_39; 
+x_33 = lean_ctor_get(x_24, 0);
+x_34 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_ofPred(x_33, x_8, x_9, x_10, x_11, x_12, x_31);
+x_35 = lean_ctor_get(x_34, 0);
+lean_inc(x_35);
+x_36 = lean_ctor_get(x_34, 1);
+lean_inc(x_36);
+lean_dec(x_34);
+x_37 = 3;
+lean_inc(x_20);
+lean_inc(x_4);
+x_38 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkGate(x_1, x_35, x_4, x_20, x_37, x_8, x_9, x_10, x_11, x_12, x_36);
 lean_dec(x_12);
 lean_dec(x_11);
-x_127 = lean_ctor_get(x_126, 0);
-lean_inc(x_127);
-x_128 = lean_ctor_get(x_126, 1);
-lean_inc(x_128);
-if (lean_is_exclusive(x_126)) {
- lean_ctor_release(x_126, 0);
- lean_ctor_release(x_126, 1);
- x_129 = x_126;
-} else {
- lean_dec_ref(x_126);
- x_129 = lean_box(0);
+lean_dec(x_10);
+lean_dec(x_9);
+x_39 = !lean_is_exclusive(x_38);
+if (x_39 == 0)
+{
+lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; uint8_t x_46; 
+x_40 = lean_ctor_get(x_38, 0);
+x_41 = lean_ctor_get(x_40, 0);
+lean_inc(x_41);
+x_42 = lean_ctor_get(x_40, 2);
+lean_inc(x_42);
+lean_inc(x_42);
+x_43 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkEvalExpr___boxed), 7, 1);
+lean_closure_set(x_43, 0, x_42);
+x_44 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___closed__2;
+lean_inc(x_40);
+x_45 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___lambda__1), 15, 8);
+lean_closure_set(x_45, 0, x_40);
+lean_closure_set(x_45, 1, x_44);
+lean_closure_set(x_45, 2, x_14);
+lean_closure_set(x_45, 3, x_3);
+lean_closure_set(x_45, 4, x_4);
+lean_closure_set(x_45, 5, x_6);
+lean_closure_set(x_45, 6, x_7);
+lean_closure_set(x_45, 7, x_20);
+x_46 = !lean_is_exclusive(x_40);
+if (x_46 == 0)
+{
+lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_47 = lean_ctor_get(x_40, 2);
+lean_dec(x_47);
+x_48 = lean_ctor_get(x_40, 1);
+lean_dec(x_48);
+x_49 = lean_ctor_get(x_40, 0);
+lean_dec(x_49);
+x_50 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg), 8, 2);
+lean_closure_set(x_50, 0, x_43);
+lean_closure_set(x_50, 1, x_45);
+lean_ctor_set(x_40, 1, x_50);
+lean_ctor_set(x_24, 0, x_40);
+lean_ctor_set(x_38, 0, x_24);
+return x_38;
 }
-x_130 = lean_ctor_get(x_127, 0);
-lean_inc(x_130);
-x_131 = lean_ctor_get(x_127, 2);
-lean_inc(x_131);
-lean_inc(x_131);
-x_132 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkEvalExpr___boxed), 7, 1);
-lean_closure_set(x_132, 0, x_131);
-lean_inc(x_127);
-x_133 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1), 16, 9);
-lean_closure_set(x_133, 0, x_127);
-lean_closure_set(x_133, 1, x_20);
-lean_closure_set(x_133, 2, x_24);
-lean_closure_set(x_133, 3, x_4);
-lean_closure_set(x_133, 4, x_6);
-lean_closure_set(x_133, 5, x_8);
-lean_closure_set(x_133, 6, x_9);
-lean_closure_set(x_133, 7, x_30);
-lean_closure_set(x_133, 8, x_110);
-if (lean_is_exclusive(x_127)) {
- lean_ctor_release(x_127, 0);
- lean_ctor_release(x_127, 1);
- lean_ctor_release(x_127, 2);
- x_134 = x_127;
-} else {
- lean_dec_ref(x_127);
- x_134 = lean_box(0);
-}
-x_135 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg), 8, 2);
-lean_closure_set(x_135, 0, x_132);
-lean_closure_set(x_135, 1, x_133);
-if (lean_is_scalar(x_134)) {
- x_136 = lean_alloc_ctor(0, 3, 0);
-} else {
- x_136 = x_134;
+else
+{
+lean_object* x_51; lean_object* x_52; 
+lean_dec(x_40);
+x_51 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg), 8, 2);
+lean_closure_set(x_51, 0, x_43);
+lean_closure_set(x_51, 1, x_45);
+x_52 = lean_alloc_ctor(0, 3, 0);
+lean_ctor_set(x_52, 0, x_41);
+lean_ctor_set(x_52, 1, x_51);
+lean_ctor_set(x_52, 2, x_42);
+lean_ctor_set(x_24, 0, x_52);
+lean_ctor_set(x_38, 0, x_24);
+return x_38;
 }
-lean_ctor_set(x_136, 0, x_130);
-lean_ctor_set(x_136, 1, x_135);
-lean_ctor_set(x_136, 2, x_131);
-if (lean_is_scalar(x_121)) {
- x_137 = lean_alloc_ctor(1, 1, 0);
-} else {
- x_137 = x_121;
 }
-lean_ctor_set(x_137, 0, x_136);
-if (lean_is_scalar(x_129)) {
- x_138 = lean_alloc_ctor(0, 2, 0);
+else
+{
+lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; 
+x_53 = lean_ctor_get(x_38, 0);
+x_54 = lean_ctor_get(x_38, 1);
+lean_inc(x_54);
+lean_inc(x_53);
+lean_dec(x_38);
+x_55 = lean_ctor_get(x_53, 0);
+lean_inc(x_55);
+x_56 = lean_ctor_get(x_53, 2);
+lean_inc(x_56);
+lean_inc(x_56);
+x_57 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkEvalExpr___boxed), 7, 1);
+lean_closure_set(x_57, 0, x_56);
+x_58 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___closed__2;
+lean_inc(x_53);
+x_59 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___lambda__1), 15, 8);
+lean_closure_set(x_59, 0, x_53);
+lean_closure_set(x_59, 1, x_58);
+lean_closure_set(x_59, 2, x_14);
+lean_closure_set(x_59, 3, x_3);
+lean_closure_set(x_59, 4, x_4);
+lean_closure_set(x_59, 5, x_6);
+lean_closure_set(x_59, 6, x_7);
+lean_closure_set(x_59, 7, x_20);
+if (lean_is_exclusive(x_53)) {
+ lean_ctor_release(x_53, 0);
+ lean_ctor_release(x_53, 1);
+ lean_ctor_release(x_53, 2);
+ x_60 = x_53;
 } else {
- x_138 = x_129;
+ lean_dec_ref(x_53);
+ x_60 = lean_box(0);
+}
+x_61 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg), 8, 2);
+lean_closure_set(x_61, 0, x_57);
+lean_closure_set(x_61, 1, x_59);
+if (lean_is_scalar(x_60)) {
+ x_62 = lean_alloc_ctor(0, 3, 0);
+} else {
+ x_62 = x_60;
 }
-lean_ctor_set(x_138, 0, x_137);
-lean_ctor_set(x_138, 1, x_128);
-return x_138;
+lean_ctor_set(x_62, 0, x_55);
+lean_ctor_set(x_62, 1, x_61);
+lean_ctor_set(x_62, 2, x_56);
+lean_ctor_set(x_24, 0, x_62);
+x_63 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_63, 0, x_24);
+lean_ctor_set(x_63, 1, x_54);
+return x_63;
 }
 }
 else
 {
-lean_object* x_139; lean_object* x_140; lean_object* x_141; lean_object* x_142; 
-lean_dec(x_104);
-lean_dec(x_30);
-lean_dec(x_20);
-lean_dec(x_19);
-lean_dec(x_18);
-lean_dec(x_14);
-lean_dec(x_13);
+lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; uint8_t x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; 
+x_64 = lean_ctor_get(x_24, 0);
+lean_inc(x_64);
+lean_dec(x_24);
+x_65 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_ofPred(x_64, x_8, x_9, x_10, x_11, x_12, x_31);
+x_66 = lean_ctor_get(x_65, 0);
+lean_inc(x_66);
+x_67 = lean_ctor_get(x_65, 1);
+lean_inc(x_67);
+lean_dec(x_65);
+x_68 = 3;
+lean_inc(x_20);
+lean_inc(x_4);
+x_69 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkGate(x_1, x_66, x_4, x_20, x_68, x_8, x_9, x_10, x_11, x_12, x_67);
 lean_dec(x_12);
 lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-x_139 = lean_ctor_get(x_109, 0);
-lean_inc(x_139);
-x_140 = lean_ctor_get(x_109, 1);
-lean_inc(x_140);
-if (lean_is_exclusive(x_109)) {
- lean_ctor_release(x_109, 0);
- lean_ctor_release(x_109, 1);
- x_141 = x_109;
+x_70 = lean_ctor_get(x_69, 0);
+lean_inc(x_70);
+x_71 = lean_ctor_get(x_69, 1);
+lean_inc(x_71);
+if (lean_is_exclusive(x_69)) {
+ lean_ctor_release(x_69, 0);
+ lean_ctor_release(x_69, 1);
+ x_72 = x_69;
+} else {
+ lean_dec_ref(x_69);
+ x_72 = lean_box(0);
+}
+x_73 = lean_ctor_get(x_70, 0);
+lean_inc(x_73);
+x_74 = lean_ctor_get(x_70, 2);
+lean_inc(x_74);
+lean_inc(x_74);
+x_75 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkEvalExpr___boxed), 7, 1);
+lean_closure_set(x_75, 0, x_74);
+x_76 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___closed__2;
+lean_inc(x_70);
+x_77 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___lambda__1), 15, 8);
+lean_closure_set(x_77, 0, x_70);
+lean_closure_set(x_77, 1, x_76);
+lean_closure_set(x_77, 2, x_14);
+lean_closure_set(x_77, 3, x_3);
+lean_closure_set(x_77, 4, x_4);
+lean_closure_set(x_77, 5, x_6);
+lean_closure_set(x_77, 6, x_7);
+lean_closure_set(x_77, 7, x_20);
+if (lean_is_exclusive(x_70)) {
+ lean_ctor_release(x_70, 0);
+ lean_ctor_release(x_70, 1);
+ lean_ctor_release(x_70, 2);
+ x_78 = x_70;
 } else {
- lean_dec_ref(x_109);
- x_141 = lean_box(0);
+ lean_dec_ref(x_70);
+ x_78 = lean_box(0);
+}
+x_79 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom___spec__1___rarg), 8, 2);
+lean_closure_set(x_79, 0, x_75);
+lean_closure_set(x_79, 1, x_77);
+if (lean_is_scalar(x_78)) {
+ x_80 = lean_alloc_ctor(0, 3, 0);
+} else {
+ x_80 = x_78;
 }
-if (lean_is_scalar(x_141)) {
- x_142 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_80, 0, x_73);
+lean_ctor_set(x_80, 1, x_79);
+lean_ctor_set(x_80, 2, x_74);
+x_81 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_81, 0, x_80);
+if (lean_is_scalar(x_72)) {
+ x_82 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_142 = x_141;
+ x_82 = x_72;
 }
-lean_ctor_set(x_142, 0, x_139);
-lean_ctor_set(x_142, 1, x_140);
-return x_142;
+lean_ctor_set(x_82, 0, x_81);
+lean_ctor_set(x_82, 1, x_71);
+return x_82;
 }
 }
 }
 else
 {
-uint8_t x_143; 
-lean_dec(x_22);
-lean_dec(x_21);
-lean_dec(x_20);
-lean_dec(x_19);
-lean_dec(x_18);
-lean_dec(x_14);
-lean_dec(x_13);
+uint8_t x_83; 
 lean_dec(x_12);
 lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
-lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
+lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-x_143 = !lean_is_exclusive(x_29);
-if (x_143 == 0)
-{
-return x_29;
-}
-else
-{
-lean_object* x_144; lean_object* x_145; lean_object* x_146; 
-x_144 = lean_ctor_get(x_29, 0);
-x_145 = lean_ctor_get(x_29, 1);
-lean_inc(x_145);
-lean_inc(x_144);
-lean_dec(x_29);
-x_146 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_146, 0, x_144);
-lean_ctor_set(x_146, 1, x_145);
-return x_146;
-}
-}
-}
-}
-}
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
-_start:
-{
-uint8_t x_16; lean_object* x_17; 
-x_16 = lean_unbox(x_1);
 lean_dec(x_1);
-x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma(x_16, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
-lean_dec(x_10);
-return x_17;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfTrueLemma(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
-_start:
+x_83 = !lean_is_exclusive(x_19);
+if (x_83 == 0)
 {
-uint8_t x_15; lean_object* x_16; 
-x_15 = 1;
-x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma(x_15, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-return x_16;
-}
+return x_19;
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfTrueLemma___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
-_start:
+else
 {
-lean_object* x_15; 
-x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfTrueLemma(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_9);
-return x_15;
+lean_object* x_84; lean_object* x_85; lean_object* x_86; 
+x_84 = lean_ctor_get(x_19, 0);
+x_85 = lean_ctor_get(x_19, 1);
+lean_inc(x_85);
+lean_inc(x_84);
+lean_dec(x_19);
+x_86 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_86, 0, x_84);
+lean_ctor_set(x_86, 1, x_85);
+return x_86;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfFalseLemma(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
-_start:
-{
-uint8_t x_15; lean_object* x_16; 
-x_15 = 0;
-x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma(x_15, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-return x_16;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfFalseLemma___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
 _start:
 {
-lean_object* x_15; 
-x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfFalseLemma(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_9);
-return x_15;
+lean_object* x_14; 
+x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_8);
+return x_14;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
 _start:
 {
-uint8_t x_16; lean_object* x_17; 
-x_16 = 1;
+lean_object* x_16; 
 lean_inc(x_14);
 lean_inc(x_13);
 lean_inc(x_12);
@@ -1392,19 +1398,17 @@ lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
 lean_inc(x_5);
-lean_inc(x_4);
-lean_inc(x_3);
 lean_inc(x_2);
 lean_inc(x_1);
-x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma(x_16, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_10, x_11, x_12, x_13, x_14, x_15);
-if (lean_obj_tag(x_17) == 0)
+x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma(x_1, x_2, x_3, x_5, x_6, x_7, x_8, x_10, x_11, x_12, x_13, x_14, x_15);
+if (lean_obj_tag(x_16) == 0)
 {
-lean_object* x_18; 
-x_18 = lean_ctor_get(x_17, 0);
-lean_inc(x_18);
-if (lean_obj_tag(x_18) == 0)
+lean_object* x_17; 
+x_17 = lean_ctor_get(x_16, 0);
+lean_inc(x_17);
+if (lean_obj_tag(x_17) == 0)
 {
-uint8_t x_19; 
+uint8_t x_18; 
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
@@ -1414,134 +1418,132 @@ 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_19 = !lean_is_exclusive(x_17);
-if (x_19 == 0)
+x_18 = !lean_is_exclusive(x_16);
+if (x_18 == 0)
 {
-lean_object* x_20; lean_object* x_21; 
-x_20 = lean_ctor_get(x_17, 0);
-lean_dec(x_20);
-x_21 = lean_box(0);
-lean_ctor_set(x_17, 0, x_21);
-return x_17;
+lean_object* x_19; lean_object* x_20; 
+x_19 = lean_ctor_get(x_16, 0);
+lean_dec(x_19);
+x_20 = lean_box(0);
+lean_ctor_set(x_16, 0, x_20);
+return x_16;
 }
 else
 {
-lean_object* x_22; lean_object* x_23; lean_object* x_24; 
-x_22 = lean_ctor_get(x_17, 1);
-lean_inc(x_22);
-lean_dec(x_17);
-x_23 = lean_box(0);
-x_24 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_24, 0, x_23);
-lean_ctor_set(x_24, 1, x_22);
-return x_24;
+lean_object* x_21; lean_object* x_22; lean_object* x_23; 
+x_21 = lean_ctor_get(x_16, 1);
+lean_inc(x_21);
+lean_dec(x_16);
+x_22 = lean_box(0);
+x_23 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_23, 0, x_22);
+lean_ctor_set(x_23, 1, x_21);
+return x_23;
 }
 }
 else
 {
-lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; uint8_t x_29; lean_object* x_30; 
-x_25 = lean_ctor_get(x_17, 1);
+lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_24 = lean_ctor_get(x_16, 1);
+lean_inc(x_24);
+lean_dec(x_16);
+x_25 = lean_ctor_get(x_17, 0);
 lean_inc(x_25);
 lean_dec(x_17);
-x_26 = lean_ctor_get(x_18, 0);
-lean_inc(x_26);
-lean_dec(x_18);
-x_27 = l_Lean_Elab_Tactic_BVDecide_Frontend_LemmaM_addLemma(x_26, x_9, x_10, x_11, x_12, x_13, x_14, x_25);
-x_28 = lean_ctor_get(x_27, 1);
-lean_inc(x_28);
-lean_dec(x_27);
-x_29 = 0;
+x_26 = l_Lean_Elab_Tactic_BVDecide_Frontend_LemmaM_addLemma(x_25, x_9, x_10, x_11, x_12, x_13, x_14, x_24);
+x_27 = lean_ctor_get(x_26, 1);
+lean_inc(x_27);
+lean_dec(x_26);
 lean_inc(x_14);
 lean_inc(x_13);
 lean_inc(x_12);
 lean_inc(x_11);
-x_30 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma(x_29, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_10, x_11, x_12, x_13, x_14, x_28);
-if (lean_obj_tag(x_30) == 0)
+x_28 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma(x_1, x_2, x_4, x_5, x_6, x_7, x_8, x_10, x_11, x_12, x_13, x_14, x_27);
+if (lean_obj_tag(x_28) == 0)
 {
-lean_object* x_31; 
-x_31 = lean_ctor_get(x_30, 0);
-lean_inc(x_31);
-if (lean_obj_tag(x_31) == 0)
+lean_object* x_29; 
+x_29 = lean_ctor_get(x_28, 0);
+lean_inc(x_29);
+if (lean_obj_tag(x_29) == 0)
 {
-uint8_t x_32; 
+uint8_t x_30; 
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
 lean_dec(x_11);
-x_32 = !lean_is_exclusive(x_30);
-if (x_32 == 0)
+x_30 = !lean_is_exclusive(x_28);
+if (x_30 == 0)
 {
-lean_object* x_33; lean_object* x_34; 
-x_33 = lean_ctor_get(x_30, 0);
-lean_dec(x_33);
-x_34 = lean_box(0);
-lean_ctor_set(x_30, 0, x_34);
-return x_30;
+lean_object* x_31; lean_object* x_32; 
+x_31 = lean_ctor_get(x_28, 0);
+lean_dec(x_31);
+x_32 = lean_box(0);
+lean_ctor_set(x_28, 0, x_32);
+return x_28;
 }
 else
 {
-lean_object* x_35; lean_object* x_36; lean_object* x_37; 
-x_35 = lean_ctor_get(x_30, 1);
-lean_inc(x_35);
-lean_dec(x_30);
-x_36 = lean_box(0);
-x_37 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_37, 0, x_36);
-lean_ctor_set(x_37, 1, x_35);
-return x_37;
+lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_33 = lean_ctor_get(x_28, 1);
+lean_inc(x_33);
+lean_dec(x_28);
+x_34 = lean_box(0);
+x_35 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_35, 0, x_34);
+lean_ctor_set(x_35, 1, x_33);
+return x_35;
 }
 }
 else
 {
-lean_object* x_38; lean_object* x_39; lean_object* x_40; 
-x_38 = lean_ctor_get(x_30, 1);
-lean_inc(x_38);
-lean_dec(x_30);
-x_39 = lean_ctor_get(x_31, 0);
-lean_inc(x_39);
-lean_dec(x_31);
-x_40 = l_Lean_Elab_Tactic_BVDecide_Frontend_LemmaM_addLemma(x_39, x_9, x_10, x_11, x_12, x_13, x_14, x_38);
+lean_object* x_36; lean_object* x_37; lean_object* x_38; 
+x_36 = lean_ctor_get(x_28, 1);
+lean_inc(x_36);
+lean_dec(x_28);
+x_37 = lean_ctor_get(x_29, 0);
+lean_inc(x_37);
+lean_dec(x_29);
+x_38 = l_Lean_Elab_Tactic_BVDecide_Frontend_LemmaM_addLemma(x_37, x_9, x_10, x_11, x_12, x_13, x_14, x_36);
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
 lean_dec(x_11);
-return x_40;
+return x_38;
 }
 }
 else
 {
-uint8_t x_41; 
+uint8_t x_39; 
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
 lean_dec(x_11);
-x_41 = !lean_is_exclusive(x_30);
-if (x_41 == 0)
+x_39 = !lean_is_exclusive(x_28);
+if (x_39 == 0)
 {
-return x_30;
+return x_28;
 }
 else
 {
-lean_object* x_42; lean_object* x_43; lean_object* x_44; 
-x_42 = lean_ctor_get(x_30, 0);
-x_43 = lean_ctor_get(x_30, 1);
-lean_inc(x_43);
-lean_inc(x_42);
-lean_dec(x_30);
-x_44 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_44, 0, x_42);
-lean_ctor_set(x_44, 1, x_43);
-return x_44;
+lean_object* x_40; lean_object* x_41; lean_object* x_42; 
+x_40 = lean_ctor_get(x_28, 0);
+x_41 = lean_ctor_get(x_28, 1);
+lean_inc(x_41);
+lean_inc(x_40);
+lean_dec(x_28);
+x_42 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_42, 0, x_40);
+lean_ctor_set(x_42, 1, x_41);
+return x_42;
 }
 }
 }
 }
 else
 {
-uint8_t x_45; 
+uint8_t x_43; 
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
@@ -1551,35 +1553,34 @@ 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_45 = !lean_is_exclusive(x_17);
-if (x_45 == 0)
+x_43 = !lean_is_exclusive(x_16);
+if (x_43 == 0)
 {
-return x_17;
+return x_16;
 }
 else
 {
-lean_object* x_46; lean_object* x_47; lean_object* x_48; 
-x_46 = lean_ctor_get(x_17, 0);
-x_47 = lean_ctor_get(x_17, 1);
-lean_inc(x_47);
-lean_inc(x_46);
-lean_dec(x_17);
-x_48 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_48, 0, x_46);
-lean_ctor_set(x_48, 1, x_47);
-return x_48;
+lean_object* x_44; lean_object* x_45; lean_object* x_46; 
+x_44 = lean_ctor_get(x_16, 0);
+x_45 = lean_ctor_get(x_16, 1);
+lean_inc(x_45);
+lean_inc(x_44);
+lean_dec(x_16);
+x_46 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_46, 0, x_44);
+lean_ctor_set(x_46, 1, x_45);
+return x_46;
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
 _start:
 {
 lean_object* x_16; 
-x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
+x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
 lean_dec(x_10);
 lean_dec(x_9);
 return x_16;
@@ -1594,62 +1595,46 @@ _G_initialized = true;
 res = initialize_Lean_Elab_Tactic_BVDecide_Frontend_BVDecide_ReifiedBVLogical(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__2();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__3);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__4();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__4);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__5();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__5);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__6 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__6();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__6);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__7 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__7();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__7);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__8 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__8();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__8);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__9 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__9();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__9);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__10 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__10();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__10);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__11 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__11();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__11);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__12 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__12();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__12);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__13 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__13();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__13);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__14 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__14();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__14);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__15 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__15();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__15);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__16 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__16();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___lambda__1___closed__16);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__2();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__3);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__4();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__4);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__5();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__5);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__6 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__6();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__6);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__7 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__7();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__7);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__8 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__8();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__8);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__9 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__9();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__9);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__10 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__10();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__10);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__11 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__11();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__11);
-l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__12 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__12();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas_mkIfLemma___closed__12);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__4);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__5();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__5);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__6 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__6();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__6);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__7 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__7();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__7);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__8 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__8();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__8);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__9 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__9();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___lambda__1___closed__9);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__4);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__5();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__5);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__6 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__6();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__6);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__7 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__7();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__7);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__8 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__8();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__8);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__9 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__9();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondTrueLemma___closed__9);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas_mkCondFalseLemma___closed__2);
 return lean_io_result_mk_ok(lean_box(0));
 }
 #ifdef __cplusplus
diff --git a/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/Reify.c b/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/Reify.c
index 37b5a5ad6c68..21aa3102408b 100644
--- a/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/Reify.c
+++ b/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/BVDecide/Reify.c
@@ -13,174 +13,164 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36___closed__1;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___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_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__1(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_const___override(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__3;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_unaryReflection___closed__6;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__6;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__20;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__5;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__13;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__1;
 lean_object* l_Lean_mkNatLit(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__1;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__3;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__5;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9(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*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__4;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__5;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goOrAtom(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__65;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__1;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_M_simplifyBinaryProof_x27___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__6;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___boxed(lean_object**);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__51;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__60;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__1;
 lean_object* l_Lean_Meta_getNatValue_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__6(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__34;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__18;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___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_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__5;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_mkApp8(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__3;
 lean_object* l_Lean_mkAppB(lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4___closed__1;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___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*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__5;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__27;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__4;
 uint8_t l_Lean_Expr_isApp(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__58;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__40;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__22;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12(lean_object*, 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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__5;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_unaryReflection___closed__7;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__10;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__17;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__1;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__5;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3(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_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__48;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___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_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24(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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__8;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__10___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24(lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__2;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__21;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_shiftConstLikeReflection(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_Elab_Tactic_BVDecide_Frontend_addCondLemmas(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_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__19;
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_boolAtom(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__50;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8(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_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__33;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__5;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_shiftReflection(lean_object*, 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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__20;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__14;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6(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_Name_mkStr5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34___closed__1;
 lean_object* l_Lean_Expr_cleanupAnnotations(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__19;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10(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_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10(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_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__5;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__53;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_unaryReflection___closed__8;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__44;
 lean_object* l_Lean_mkApp4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_goBvLit(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15(lean_object*, 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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__3;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17(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_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25(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_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__11;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__57;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__1;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__5;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__7;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__4;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__46;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__5;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__9;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__7(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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__3;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__7(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__4;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16(lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__39;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__4;
 lean_object* l_Lean_mkApp6(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__2;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__4;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__1;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_unaryReflection___closed__4;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14(lean_object*, 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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__56;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__4;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_rotateReflection___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*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__3;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__2;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__14;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_binaryReflection(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_gateReflection(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__5;
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_mkBVRefl(lean_object*, lean_object*);
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_getNatOrBvValue_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__3;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28(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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__5;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__4;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_mkEvalExpr___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__1;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_M_simplifyBinaryProof_x27___at_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryCongrProof___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21(lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__4;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21(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_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___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_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__39(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__7;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__2;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___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*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__3;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__4(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_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___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_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__4(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__2;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__10;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__12;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_unaryReflection___closed__2;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__23;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__1;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__31;
 lean_object* l_Lean_Meta_getBitVecValue_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__1;
 lean_object* l_Lean_Expr_appArg(lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__21;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__9;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__3;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__26;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__6;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__2;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__2;
 lean_object* l_Lean_Expr_appFnCleanup(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__12___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22(lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__20;
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkIte(lean_object*, 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_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__54;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__2;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__1;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__1;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__55;
@@ -189,82 +179,78 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_o
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__19;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__30;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__8;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30(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_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23(lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37___closed__1;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23(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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__10;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__38;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__22;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__3;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__5;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__2;
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_mkBinPred(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_boolAtom(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__15;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__3;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8(lean_object*, 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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__8;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37___closed__2;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7(lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__2;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___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_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7(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_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_mkBVConst(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__41;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__25;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__2;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__32;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__2;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__9___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__1;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___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_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__13(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___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_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__3;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__2(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__10;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__11(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27(lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27(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_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33___closed__2;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5(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_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5(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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__5;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__17;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1;
 lean_object* l_Lean_Name_mkStr6(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__28;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__8;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__4;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__5;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__4;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__14;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13(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_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__4;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__6;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__16;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11(lean_object*, 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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36___closed__2;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__5;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__1;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__3;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_unaryReflection___closed__10;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_binaryReflection___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_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Expr_app___override(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__29;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__8;
 uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_mkApp3(lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26(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_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__7___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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__23;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__5;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__1;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__10;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__16;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__2;
 lean_object* l_Lean_Name_mkStr2(lean_object*, lean_object*);
@@ -272,46 +258,50 @@ static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___l
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__15;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__37;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__11;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___boxed(lean_object**);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__15;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__12;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__12;
 uint8_t l_Lean_Expr_isConstOf(lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__13;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__2;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__39___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_unaryReflection___closed__9;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__4;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__2;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__3;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__5;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__1;
 lean_object* lean_nat_mul(lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__61;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__7;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__3;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33___closed__1;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
 lean_object* l_Lean_Meta_instantiateMVarsIfMVarApp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__52;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__1;
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_ofPred(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_gateReflection___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_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__13___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__12(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3(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_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3(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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__49;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__9;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_shiftConstReflection(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_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___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_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__1(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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_unaryReflection___closed__1;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__6___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__43;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19(lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__5;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__35;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_unaryReflection(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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__9;
@@ -322,55 +312,53 @@ static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___c
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__21;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__18;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__24;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29___closed__1;
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkGate(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32___closed__2;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38___closed__1;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__47;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__9(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__4;
-lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas(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_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__9(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__13;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_rotateReflection(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_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__10(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__10(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_unaryCongrProof(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__45;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_goOrAtom(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__42;
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkBoolConst(uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__63;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__16;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__36;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__3;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___lambda__4(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_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__18;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__2;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20(lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__6;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__62;
 lean_object* lean_nat_add(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_unaryReflection___closed__5;
 lean_object* l_Lean_mkApp5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__6;
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_bitVecAtom(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__59;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__3;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__5;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__11;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__1;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__1;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__17;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__4;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryCongrProof(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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__64;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___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_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___lambda__3(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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_unaryReflection___closed__3;
 lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkNot(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -1052,583 +1040,407 @@ return x_44;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_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, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_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, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
 _start:
 {
-lean_object* x_12; 
-lean_inc(x_10);
+lean_object* x_11; 
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
 lean_inc(x_5);
+lean_inc(x_4);
 lean_inc(x_1);
-x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goOrAtom(x_1, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-if (lean_obj_tag(x_12) == 0)
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goOrAtom(x_1, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_11) == 0)
 {
-lean_object* x_13; 
-x_13 = lean_ctor_get(x_12, 0);
-lean_inc(x_13);
-if (lean_obj_tag(x_13) == 0)
+lean_object* x_12; 
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+if (lean_obj_tag(x_12) == 0)
 {
-uint8_t x_14; 
-lean_dec(x_10);
+uint8_t x_13; 
 lean_dec(x_9);
 lean_dec(x_8);
 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_14 = !lean_is_exclusive(x_12);
-if (x_14 == 0)
+x_13 = !lean_is_exclusive(x_11);
+if (x_13 == 0)
 {
-lean_object* x_15; lean_object* x_16; 
-x_15 = lean_ctor_get(x_12, 0);
-lean_dec(x_15);
-x_16 = lean_box(0);
-lean_ctor_set(x_12, 0, x_16);
-return x_12;
+lean_object* x_14; lean_object* x_15; 
+x_14 = lean_ctor_get(x_11, 0);
+lean_dec(x_14);
+x_15 = lean_box(0);
+lean_ctor_set(x_11, 0, x_15);
+return x_11;
 }
 else
 {
-lean_object* x_17; lean_object* x_18; lean_object* x_19; 
-x_17 = lean_ctor_get(x_12, 1);
-lean_inc(x_17);
-lean_dec(x_12);
-x_18 = lean_box(0);
-x_19 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_19, 0, x_18);
-lean_ctor_set(x_19, 1, x_17);
-return x_19;
+lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+x_16 = lean_ctor_get(x_11, 1);
+lean_inc(x_16);
+lean_dec(x_11);
+x_17 = lean_box(0);
+x_18 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_18, 0, x_17);
+lean_ctor_set(x_18, 1, x_16);
+return x_18;
 }
 }
 else
 {
-lean_object* x_20; lean_object* x_21; lean_object* x_22; 
-x_20 = lean_ctor_get(x_12, 1);
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_19 = lean_ctor_get(x_11, 1);
+lean_inc(x_19);
+lean_dec(x_11);
+x_20 = lean_ctor_get(x_12, 0);
 lean_inc(x_20);
 lean_dec(x_12);
-x_21 = lean_ctor_get(x_13, 0);
-lean_inc(x_21);
-lean_dec(x_13);
-lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
 lean_inc(x_5);
+lean_inc(x_4);
 lean_inc(x_2);
-x_22 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goOrAtom(x_2, x_5, x_6, x_7, x_8, x_9, x_10, x_20);
-if (lean_obj_tag(x_22) == 0)
+x_21 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goOrAtom(x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_19);
+if (lean_obj_tag(x_21) == 0)
 {
-lean_object* x_23; 
-x_23 = lean_ctor_get(x_22, 0);
-lean_inc(x_23);
-if (lean_obj_tag(x_23) == 0)
+lean_object* x_22; 
+x_22 = lean_ctor_get(x_21, 0);
+lean_inc(x_22);
+if (lean_obj_tag(x_22) == 0)
 {
-uint8_t x_24; 
-lean_dec(x_21);
-lean_dec(x_10);
+uint8_t x_23; 
+lean_dec(x_20);
 lean_dec(x_9);
 lean_dec(x_8);
 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_24 = !lean_is_exclusive(x_22);
-if (x_24 == 0)
+x_23 = !lean_is_exclusive(x_21);
+if (x_23 == 0)
 {
-lean_object* x_25; lean_object* x_26; 
-x_25 = lean_ctor_get(x_22, 0);
-lean_dec(x_25);
-x_26 = lean_box(0);
-lean_ctor_set(x_22, 0, x_26);
-return x_22;
+lean_object* x_24; lean_object* x_25; 
+x_24 = lean_ctor_get(x_21, 0);
+lean_dec(x_24);
+x_25 = lean_box(0);
+lean_ctor_set(x_21, 0, x_25);
+return x_21;
 }
 else
 {
-lean_object* x_27; lean_object* x_28; lean_object* x_29; 
-x_27 = lean_ctor_get(x_22, 1);
-lean_inc(x_27);
-lean_dec(x_22);
-x_28 = lean_box(0);
-x_29 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_29, 0, x_28);
-lean_ctor_set(x_29, 1, x_27);
-return x_29;
+lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_26 = lean_ctor_get(x_21, 1);
+lean_inc(x_26);
+lean_dec(x_21);
+x_27 = lean_box(0);
+x_28 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_28, 0, x_27);
+lean_ctor_set(x_28, 1, x_26);
+return x_28;
 }
 }
 else
 {
-lean_object* x_30; lean_object* x_31; lean_object* x_32; 
-x_30 = lean_ctor_get(x_22, 1);
+lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+x_29 = lean_ctor_get(x_21, 1);
+lean_inc(x_29);
+lean_dec(x_21);
+x_30 = lean_ctor_get(x_22, 0);
 lean_inc(x_30);
 lean_dec(x_22);
-x_31 = lean_ctor_get(x_23, 0);
-lean_inc(x_31);
-lean_dec(x_23);
-lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
+lean_inc(x_5);
 lean_inc(x_3);
-x_32 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goOrAtom(x_3, x_5, x_6, x_7, x_8, x_9, x_10, x_30);
-if (lean_obj_tag(x_32) == 0)
+x_31 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goOrAtom(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_29);
+if (lean_obj_tag(x_31) == 0)
 {
-lean_object* x_33; 
-x_33 = lean_ctor_get(x_32, 0);
-lean_inc(x_33);
-if (lean_obj_tag(x_33) == 0)
+lean_object* x_32; 
+x_32 = lean_ctor_get(x_31, 0);
+lean_inc(x_32);
+if (lean_obj_tag(x_32) == 0)
 {
-uint8_t x_34; 
-lean_dec(x_31);
-lean_dec(x_21);
-lean_dec(x_10);
+uint8_t x_33; 
+lean_dec(x_30);
+lean_dec(x_20);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
+lean_dec(x_5);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_34 = !lean_is_exclusive(x_32);
-if (x_34 == 0)
+x_33 = !lean_is_exclusive(x_31);
+if (x_33 == 0)
 {
-lean_object* x_35; lean_object* x_36; 
-x_35 = lean_ctor_get(x_32, 0);
-lean_dec(x_35);
-x_36 = lean_box(0);
-lean_ctor_set(x_32, 0, x_36);
-return x_32;
+lean_object* x_34; lean_object* x_35; 
+x_34 = lean_ctor_get(x_31, 0);
+lean_dec(x_34);
+x_35 = lean_box(0);
+lean_ctor_set(x_31, 0, x_35);
+return x_31;
 }
 else
 {
-lean_object* x_37; lean_object* x_38; lean_object* x_39; 
-x_37 = lean_ctor_get(x_32, 1);
-lean_inc(x_37);
-lean_dec(x_32);
-x_38 = lean_box(0);
-x_39 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_39, 0, x_38);
-lean_ctor_set(x_39, 1, x_37);
-return x_39;
+lean_object* x_36; lean_object* x_37; lean_object* x_38; 
+x_36 = lean_ctor_get(x_31, 1);
+lean_inc(x_36);
+lean_dec(x_31);
+x_37 = lean_box(0);
+x_38 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_38, 0, x_37);
+lean_ctor_set(x_38, 1, x_36);
+return x_38;
 }
 }
 else
 {
-lean_object* x_40; uint8_t x_41; 
-x_40 = lean_ctor_get(x_32, 1);
-lean_inc(x_40);
-lean_dec(x_32);
-x_41 = !lean_is_exclusive(x_33);
-if (x_41 == 0)
+lean_object* x_39; uint8_t x_40; 
+x_39 = lean_ctor_get(x_31, 1);
+lean_inc(x_39);
+lean_dec(x_31);
+x_40 = !lean_is_exclusive(x_32);
+if (x_40 == 0)
 {
-lean_object* x_42; lean_object* x_43; uint8_t x_44; 
-x_42 = lean_ctor_get(x_33, 0);
-x_43 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkIte(x_21, x_31, x_42, x_1, x_2, x_3, x_6, x_7, x_8, x_9, x_10, x_40);
-lean_dec(x_10);
+lean_object* x_41; lean_object* x_42; uint8_t x_43; 
+x_41 = lean_ctor_get(x_32, 0);
+x_42 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkIte(x_20, x_30, x_41, x_1, x_2, x_3, x_5, x_6, x_7, x_8, x_9, x_39);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-x_44 = !lean_is_exclusive(x_43);
-if (x_44 == 0)
+lean_dec(x_5);
+x_43 = !lean_is_exclusive(x_42);
+if (x_43 == 0)
 {
-lean_object* x_45; 
-x_45 = lean_ctor_get(x_43, 0);
-lean_ctor_set(x_33, 0, x_45);
-lean_ctor_set(x_43, 0, x_33);
-return x_43;
+lean_object* x_44; 
+x_44 = lean_ctor_get(x_42, 0);
+lean_ctor_set(x_32, 0, x_44);
+lean_ctor_set(x_42, 0, x_32);
+return x_42;
 }
 else
 {
-lean_object* x_46; lean_object* x_47; lean_object* x_48; 
-x_46 = lean_ctor_get(x_43, 0);
-x_47 = lean_ctor_get(x_43, 1);
-lean_inc(x_47);
+lean_object* x_45; lean_object* x_46; lean_object* x_47; 
+x_45 = lean_ctor_get(x_42, 0);
+x_46 = lean_ctor_get(x_42, 1);
 lean_inc(x_46);
-lean_dec(x_43);
-lean_ctor_set(x_33, 0, x_46);
-x_48 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_48, 0, x_33);
-lean_ctor_set(x_48, 1, x_47);
-return x_48;
+lean_inc(x_45);
+lean_dec(x_42);
+lean_ctor_set(x_32, 0, x_45);
+x_47 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_47, 0, x_32);
+lean_ctor_set(x_47, 1, x_46);
+return x_47;
 }
 }
 else
 {
-lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; 
-x_49 = lean_ctor_get(x_33, 0);
-lean_inc(x_49);
-lean_dec(x_33);
-x_50 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkIte(x_21, x_31, x_49, x_1, x_2, x_3, x_6, x_7, x_8, x_9, x_10, x_40);
-lean_dec(x_10);
+lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_48 = lean_ctor_get(x_32, 0);
+lean_inc(x_48);
+lean_dec(x_32);
+x_49 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_mkIte(x_20, x_30, x_48, x_1, x_2, x_3, x_5, x_6, x_7, x_8, x_9, x_39);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-x_51 = lean_ctor_get(x_50, 0);
+lean_dec(x_5);
+x_50 = lean_ctor_get(x_49, 0);
+lean_inc(x_50);
+x_51 = lean_ctor_get(x_49, 1);
 lean_inc(x_51);
-x_52 = lean_ctor_get(x_50, 1);
-lean_inc(x_52);
-if (lean_is_exclusive(x_50)) {
- lean_ctor_release(x_50, 0);
- lean_ctor_release(x_50, 1);
- x_53 = x_50;
+if (lean_is_exclusive(x_49)) {
+ lean_ctor_release(x_49, 0);
+ lean_ctor_release(x_49, 1);
+ x_52 = x_49;
 } else {
- lean_dec_ref(x_50);
- x_53 = lean_box(0);
+ lean_dec_ref(x_49);
+ x_52 = lean_box(0);
 }
-x_54 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_54, 0, x_51);
-if (lean_is_scalar(x_53)) {
- x_55 = lean_alloc_ctor(0, 2, 0);
+x_53 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_53, 0, x_50);
+if (lean_is_scalar(x_52)) {
+ x_54 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_55 = x_53;
+ x_54 = x_52;
 }
-lean_ctor_set(x_55, 0, x_54);
-lean_ctor_set(x_55, 1, x_52);
-return x_55;
+lean_ctor_set(x_54, 0, x_53);
+lean_ctor_set(x_54, 1, x_51);
+return x_54;
 }
 }
 }
 else
 {
-uint8_t x_56; 
-lean_dec(x_31);
-lean_dec(x_21);
-lean_dec(x_10);
+uint8_t x_55; 
+lean_dec(x_30);
+lean_dec(x_20);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
+lean_dec(x_5);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_56 = !lean_is_exclusive(x_32);
-if (x_56 == 0)
+x_55 = !lean_is_exclusive(x_31);
+if (x_55 == 0)
 {
-return x_32;
+return x_31;
 }
 else
 {
-lean_object* x_57; lean_object* x_58; lean_object* x_59; 
-x_57 = lean_ctor_get(x_32, 0);
-x_58 = lean_ctor_get(x_32, 1);
-lean_inc(x_58);
+lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+x_56 = lean_ctor_get(x_31, 0);
+x_57 = lean_ctor_get(x_31, 1);
 lean_inc(x_57);
-lean_dec(x_32);
-x_59 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_59, 0, x_57);
-lean_ctor_set(x_59, 1, x_58);
-return x_59;
+lean_inc(x_56);
+lean_dec(x_31);
+x_58 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_58, 0, x_56);
+lean_ctor_set(x_58, 1, x_57);
+return x_58;
 }
 }
 }
 }
 else
 {
-uint8_t x_60; 
-lean_dec(x_21);
-lean_dec(x_10);
+uint8_t x_59; 
+lean_dec(x_20);
 lean_dec(x_9);
 lean_dec(x_8);
 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_60 = !lean_is_exclusive(x_22);
-if (x_60 == 0)
+x_59 = !lean_is_exclusive(x_21);
+if (x_59 == 0)
 {
-return x_22;
+return x_21;
 }
 else
 {
-lean_object* x_61; lean_object* x_62; lean_object* x_63; 
-x_61 = lean_ctor_get(x_22, 0);
-x_62 = lean_ctor_get(x_22, 1);
-lean_inc(x_62);
+lean_object* x_60; lean_object* x_61; lean_object* x_62; 
+x_60 = lean_ctor_get(x_21, 0);
+x_61 = lean_ctor_get(x_21, 1);
 lean_inc(x_61);
-lean_dec(x_22);
-x_63 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_63, 0, x_61);
-lean_ctor_set(x_63, 1, x_62);
-return x_63;
+lean_inc(x_60);
+lean_dec(x_21);
+x_62 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_62, 0, x_60);
+lean_ctor_set(x_62, 1, x_61);
+return x_62;
 }
 }
 }
 }
 else
 {
-uint8_t x_64; 
-lean_dec(x_10);
+uint8_t x_63; 
 lean_dec(x_9);
 lean_dec(x_8);
 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_64 = !lean_is_exclusive(x_12);
-if (x_64 == 0)
+x_63 = !lean_is_exclusive(x_11);
+if (x_63 == 0)
 {
-return x_12;
+return x_11;
 }
 else
 {
-lean_object* x_65; lean_object* x_66; lean_object* x_67; 
-x_65 = lean_ctor_get(x_12, 0);
-x_66 = lean_ctor_get(x_12, 1);
-lean_inc(x_66);
+lean_object* x_64; lean_object* x_65; lean_object* x_66; 
+x_64 = lean_ctor_get(x_11, 0);
+x_65 = lean_ctor_get(x_11, 1);
 lean_inc(x_65);
-lean_dec(x_12);
-x_67 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_67, 0, x_65);
-lean_ctor_set(x_67, 1, x_66);
-return x_67;
+lean_inc(x_64);
+lean_dec(x_11);
+x_66 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_66, 0, x_64);
+lean_ctor_set(x_66, 1, x_65);
+return x_66;
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__2(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__2(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_9; lean_object* x_10; 
-x_9 = lean_box(0);
-x_10 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_10, 0, x_9);
-lean_ctor_set(x_10, 1, x_8);
+lean_object* x_10; 
+x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goPred(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
 return x_10;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1() {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3(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:
 {
-lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__2___boxed), 8, 0);
-return x_1;
+uint8_t x_11; lean_object* x_12; 
+x_11 = 2;
+x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_gateReflection(x_1, x_2, x_11, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_12;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__2() {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4(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) {
 _start:
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Bool", 4, 4);
-return x_1;
+lean_object* x_9; lean_object* x_10; 
+x_9 = lean_box(0);
+x_10 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_10, 0, x_9);
+lean_ctor_set(x_10, 1, x_8);
+return x_10;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__1() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("true", 4, 4);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4___boxed), 8, 0);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__4() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__2;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__3;
-x_3 = l_Lean_Name_mkStr2(x_1, x_2);
-return x_3;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3(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, lean_object* x_11, lean_object* x_12) {
-_start:
-{
-lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; 
-x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1;
-x_14 = l_Lean_Expr_cleanupAnnotations(x_1);
-x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__4;
-x_16 = l_Lean_Expr_isConstOf(x_14, x_15);
-lean_dec(x_14);
-if (x_16 == 0)
-{
-lean_object* x_17; lean_object* x_18; 
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-x_17 = lean_box(0);
-x_18 = lean_apply_8(x_13, x_17, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-return x_18;
-}
-else
-{
-lean_object* x_19; lean_object* x_20; 
-x_19 = lean_box(0);
-x_20 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__1(x_2, x_3, x_4, x_19, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-return x_20;
-}
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4___closed__1() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__2;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4(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, lean_object* x_11, lean_object* x_12) {
-_start:
-{
-lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; 
-x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1;
-x_14 = l_Lean_Expr_cleanupAnnotations(x_3);
-x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4___closed__1;
-x_16 = l_Lean_Expr_isConstOf(x_14, x_15);
-lean_dec(x_14);
-if (x_16 == 0)
-{
-lean_object* x_17; lean_object* x_18; 
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_2);
-lean_dec(x_1);
-x_17 = lean_box(0);
-x_18 = lean_apply_8(x_13, x_17, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-return x_18;
-}
-else
-{
-lean_object* x_19; lean_object* x_20; 
-x_19 = lean_box(0);
-x_20 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3(x_5, x_4, x_1, x_2, x_19, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-return x_20;
-}
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__2() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Eq", 2, 2);
+x_1 = lean_mk_string_unchecked("Bool", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__2;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5(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:
-{
-lean_object* x_11; lean_object* x_12; uint8_t x_13; 
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1;
-x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
-x_13 = l_Lean_Expr_isApp(x_12);
-if (x_13 == 0)
-{
-lean_object* x_14; lean_object* x_15; 
-lean_dec(x_12);
-lean_dec(x_3);
-lean_dec(x_2);
-x_14 = lean_box(0);
-x_15 = lean_apply_8(x_11, x_14, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_15;
-}
-else
-{
-lean_object* x_16; lean_object* x_17; uint8_t x_18; 
-x_16 = l_Lean_Expr_appArg(x_12, lean_box(0));
-x_17 = l_Lean_Expr_appFnCleanup(x_12, lean_box(0));
-x_18 = l_Lean_Expr_isApp(x_17);
-if (x_18 == 0)
-{
-lean_object* x_19; lean_object* x_20; 
-lean_dec(x_17);
-lean_dec(x_16);
-lean_dec(x_3);
-lean_dec(x_2);
-x_19 = lean_box(0);
-x_20 = lean_apply_8(x_11, x_19, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_20;
-}
-else
-{
-lean_object* x_21; lean_object* x_22; uint8_t x_23; 
-x_21 = l_Lean_Expr_appArg(x_17, lean_box(0));
-x_22 = l_Lean_Expr_appFnCleanup(x_17, lean_box(0));
-x_23 = l_Lean_Expr_isApp(x_22);
-if (x_23 == 0)
-{
-lean_object* x_24; lean_object* x_25; 
-lean_dec(x_22);
-lean_dec(x_21);
-lean_dec(x_16);
-lean_dec(x_3);
-lean_dec(x_2);
-x_24 = lean_box(0);
-x_25 = lean_apply_8(x_11, x_24, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_25;
-}
-else
-{
-lean_object* x_26; lean_object* x_27; lean_object* x_28; uint8_t x_29; 
-x_26 = l_Lean_Expr_appArg(x_22, lean_box(0));
-x_27 = l_Lean_Expr_appFnCleanup(x_22, lean_box(0));
-x_28 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__2;
-x_29 = l_Lean_Expr_isConstOf(x_27, x_28);
-lean_dec(x_27);
-if (x_29 == 0)
-{
-lean_object* x_30; lean_object* x_31; 
-lean_dec(x_26);
-lean_dec(x_21);
-lean_dec(x_16);
-lean_dec(x_3);
-lean_dec(x_2);
-x_30 = lean_box(0);
-x_31 = lean_apply_8(x_11, x_30, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_31;
-}
-else
-{
-lean_object* x_32; 
-x_32 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4(x_2, x_3, x_26, x_21, x_16, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_32;
-}
-}
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__6(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_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goPred(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
-return x_10;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__7(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:
-{
-uint8_t x_11; lean_object* x_12; 
-x_11 = 2;
-x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_gateReflection(x_1, x_2, x_11, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_12;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4() {
 _start:
 {
 lean_object* x_1; 
@@ -1636,17 +1448,17 @@ x_1 = lean_mk_string_unchecked("BitVec", 6, 6);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8(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, lean_object* x_11) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5(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, lean_object* x_11) {
 _start:
 {
 lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; 
@@ -1656,9 +1468,9 @@ lean_inc(x_13);
 x_14 = lean_ctor_get(x_12, 1);
 lean_inc(x_14);
 lean_dec(x_12);
-x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1;
+x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__1;
 x_16 = l_Lean_Expr_cleanupAnnotations(x_13);
-x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4___closed__1;
+x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__3;
 x_18 = l_Lean_Expr_isConstOf(x_16, x_17);
 if (x_18 == 0)
 {
@@ -1679,7 +1491,7 @@ else
 {
 lean_object* x_22; lean_object* x_23; uint8_t x_24; 
 x_22 = l_Lean_Expr_appFnCleanup(x_16, lean_box(0));
-x_23 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__2;
+x_23 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__5;
 x_24 = l_Lean_Expr_isConstOf(x_22, x_23);
 lean_dec(x_22);
 if (x_24 == 0)
@@ -1709,7 +1521,7 @@ return x_29;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__9(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__6(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:
 {
 uint8_t x_10; lean_object* x_11; 
@@ -1718,7 +1530,7 @@ x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_gateReflection(x
 return x_11;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__10(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__7(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:
 {
 uint8_t x_10; lean_object* x_11; 
@@ -1727,7 +1539,7 @@ x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_gateReflection(x
 return x_11;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__11(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8(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) {
 _start:
 {
 lean_object* x_9; 
@@ -1883,7 +1695,7 @@ return x_36;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__12(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__9(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) {
 _start:
 {
 uint8_t x_9; lean_object* x_10; uint8_t x_11; 
@@ -1916,7 +1728,7 @@ return x_17;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__13(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__10(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) {
 _start:
 {
 uint8_t x_9; lean_object* x_10; uint8_t x_11; 
@@ -1953,7 +1765,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5), 10, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__1), 10, 0);
 return x_1;
 }
 }
@@ -1961,7 +1773,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__9), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__6), 9, 0);
 return x_1;
 }
 }
@@ -1969,7 +1781,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__10), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__7), 9, 0);
 return x_1;
 }
 }
@@ -1977,7 +1789,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__11), 8, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8), 8, 0);
 return x_1;
 }
 }
@@ -1985,7 +1797,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__12___boxed), 8, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__9___boxed), 8, 0);
 return x_1;
 }
 }
@@ -1993,7 +1805,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__13___boxed), 8, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__10___boxed), 8, 0);
 return x_1;
 }
 }
@@ -2009,7 +1821,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__2;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__2;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__7;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
@@ -2019,7 +1831,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("not", 3, 3);
+x_1 = lean_mk_string_unchecked("true", 4, 4);
 return x_1;
 }
 }
@@ -2027,7 +1839,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__2;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__2;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__9;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
@@ -2037,7 +1849,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("xor", 3, 3);
+x_1 = lean_mk_string_unchecked("not", 3, 3);
 return x_1;
 }
 }
@@ -2045,7 +1857,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__2;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__2;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__11;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
@@ -2055,7 +1867,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("and", 3, 3);
+x_1 = lean_mk_string_unchecked("xor", 3, 3);
 return x_1;
 }
 }
@@ -2063,7 +1875,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__2;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__2;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__13;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
@@ -2073,43 +1885,61 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("BEq", 3, 3);
+x_1 = lean_mk_string_unchecked("and", 3, 3);
 return x_1;
 }
 }
 static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__16() {
 _start:
 {
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__2;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__15;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__17() {
+_start:
+{
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("beq", 3, 3);
+x_1 = lean_mk_string_unchecked("cond", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__17() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__18() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__15;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__16;
-x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+x_1 = lean_box(0);
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__17;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__18() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__19() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("ite", 3, 3);
+x_1 = lean_mk_string_unchecked("BEq", 3, 3);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__19() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__20() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("beq", 3, 3);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__21() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__18;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__19;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__20;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
@@ -2136,7 +1966,7 @@ x_20 = l_Lean_Expr_isConstOf(x_18, x_19);
 if (x_20 == 0)
 {
 lean_object* x_21; uint8_t x_22; 
-x_21 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__4;
+x_21 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__10;
 x_22 = l_Lean_Expr_isConstOf(x_18, x_21);
 if (x_22 == 0)
 {
@@ -2154,7 +1984,7 @@ else
 lean_object* x_25; lean_object* x_26; lean_object* x_27; uint8_t x_28; 
 x_25 = l_Lean_Expr_appArg(x_18, lean_box(0));
 x_26 = l_Lean_Expr_appFnCleanup(x_18, lean_box(0));
-x_27 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__10;
+x_27 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__12;
 x_28 = l_Lean_Expr_isConstOf(x_26, x_27);
 if (x_28 == 0)
 {
@@ -2173,12 +2003,12 @@ else
 lean_object* x_31; lean_object* x_32; lean_object* x_33; uint8_t x_34; 
 x_31 = l_Lean_Expr_appArg(x_26, lean_box(0));
 x_32 = l_Lean_Expr_appFnCleanup(x_26, lean_box(0));
-x_33 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__12;
+x_33 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__14;
 x_34 = l_Lean_Expr_isConstOf(x_32, x_33);
 if (x_34 == 0)
 {
 lean_object* x_35; uint8_t x_36; 
-x_35 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__14;
+x_35 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__16;
 x_36 = l_Lean_Expr_isConstOf(x_32, x_35);
 if (x_36 == 0)
 {
@@ -2195,123 +2025,111 @@ return x_38;
 }
 else
 {
-lean_object* x_39; uint8_t x_40; 
-x_39 = l_Lean_Expr_appFnCleanup(x_32, lean_box(0));
-x_40 = l_Lean_Expr_isApp(x_39);
-if (x_40 == 0)
+lean_object* x_39; lean_object* x_40; uint8_t x_41; 
+x_39 = l_Lean_Expr_appArg(x_32, lean_box(0));
+x_40 = l_Lean_Expr_appFnCleanup(x_32, lean_box(0));
+x_41 = l_Lean_Expr_isApp(x_40);
+if (x_41 == 0)
 {
-lean_object* x_41; 
+lean_object* x_42; 
+lean_dec(x_40);
 lean_dec(x_39);
 lean_dec(x_31);
 lean_dec(x_25);
-x_41 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goPred(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
-return x_41;
+x_42 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goPred(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+return x_42;
 }
 else
 {
-lean_object* x_42; lean_object* x_43; lean_object* x_44; uint8_t x_45; 
-x_42 = l_Lean_Expr_appArg(x_39, lean_box(0));
-x_43 = l_Lean_Expr_appFnCleanup(x_39, lean_box(0));
-x_44 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__17;
-x_45 = l_Lean_Expr_isConstOf(x_43, x_44);
-if (x_45 == 0)
-{
-uint8_t x_46; 
-x_46 = l_Lean_Expr_isApp(x_43);
+lean_object* x_43; lean_object* x_44; lean_object* x_45; uint8_t x_46; 
+x_43 = l_Lean_Expr_appArg(x_40, lean_box(0));
+x_44 = l_Lean_Expr_appFnCleanup(x_40, lean_box(0));
+x_45 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__18;
+x_46 = l_Lean_Expr_isConstOf(x_44, x_45);
 if (x_46 == 0)
 {
-lean_object* x_47; 
+lean_object* x_47; uint8_t x_48; 
+lean_dec(x_39);
+x_47 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__21;
+x_48 = l_Lean_Expr_isConstOf(x_44, x_47);
+lean_dec(x_44);
+if (x_48 == 0)
+{
+lean_object* x_49; 
 lean_dec(x_43);
-lean_dec(x_42);
 lean_dec(x_31);
 lean_dec(x_25);
-x_47 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goPred(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
-return x_47;
+x_49 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goPred(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+return x_49;
 }
 else
 {
-lean_object* x_48; lean_object* x_49; uint8_t x_50; 
-x_48 = l_Lean_Expr_appFnCleanup(x_43, lean_box(0));
-x_49 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__19;
-x_50 = l_Lean_Expr_isConstOf(x_48, x_49);
-lean_dec(x_48);
-if (x_50 == 0)
+lean_object* x_50; 
+x_50 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5(x_1, x_43, x_31, x_25, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+return x_50;
+}
+}
+else
 {
 lean_object* x_51; 
-lean_dec(x_42);
-lean_dec(x_31);
-lean_dec(x_25);
-x_51 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goPred(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+lean_dec(x_44);
+lean_dec(x_43);
+lean_dec(x_1);
+x_51 = lean_apply_10(x_12, x_39, x_31, x_25, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_51;
 }
+}
+}
+}
 else
 {
 lean_object* x_52; 
+lean_dec(x_32);
 lean_dec(x_1);
-x_52 = lean_apply_10(x_12, x_42, x_31, x_25, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+x_52 = lean_apply_9(x_14, x_31, x_25, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_52;
 }
 }
-}
 else
 {
 lean_object* x_53; 
-lean_dec(x_43);
-x_53 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8(x_1, x_42, x_31, x_25, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+lean_dec(x_32);
+lean_dec(x_1);
+x_53 = lean_apply_9(x_13, x_31, x_25, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_53;
 }
 }
 }
-}
 else
 {
 lean_object* x_54; 
-lean_dec(x_32);
+lean_dec(x_26);
 lean_dec(x_1);
-x_54 = lean_apply_9(x_14, x_31, x_25, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+x_54 = lean_apply_8(x_15, x_25, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_54;
 }
 }
+}
 else
 {
-lean_object* x_55; 
-lean_dec(x_32);
+lean_object* x_55; lean_object* x_56; 
+lean_dec(x_18);
 lean_dec(x_1);
-x_55 = lean_apply_9(x_13, x_31, x_25, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
-return x_55;
-}
-}
-}
-else
-{
-lean_object* x_56; 
-lean_dec(x_26);
-lean_dec(x_1);
-x_56 = lean_apply_8(x_15, x_25, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+x_55 = lean_box(0);
+x_56 = lean_apply_8(x_17, x_55, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_56;
 }
 }
-}
 else
 {
 lean_object* x_57; lean_object* x_58; 
 lean_dec(x_18);
 lean_dec(x_1);
 x_57 = lean_box(0);
-x_58 = lean_apply_8(x_17, x_57, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+x_58 = lean_apply_8(x_16, x_57, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_58;
 }
 }
-else
-{
-lean_object* x_59; lean_object* x_60; 
-lean_dec(x_18);
-lean_dec(x_1);
-x_59 = lean_box(0);
-x_60 = lean_apply_8(x_16, x_59, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
-return x_60;
-}
-}
 }
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_gateReflection(lean_object* x_1, lean_object* x_2, uint8_t 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:
@@ -3205,7 +3023,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_g
 _start:
 {
 lean_object* x_11; lean_object* x_12; uint8_t x_13; 
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__1;
 x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
 x_13 = l_Lean_Expr_isApp(x_12);
 if (x_13 == 0)
@@ -3222,7 +3040,7 @@ else
 {
 lean_object* x_16; lean_object* x_17; uint8_t x_18; 
 x_16 = l_Lean_Expr_appFnCleanup(x_12, lean_box(0));
-x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__2;
+x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__5;
 x_18 = l_Lean_Expr_isConstOf(x_16, x_17);
 lean_dec(x_16);
 if (x_18 == 0)
@@ -3280,7 +3098,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__4;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
@@ -3298,7 +3116,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__6;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
@@ -3317,7 +3135,7 @@ lean_dec(x_9);
 x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__1;
 x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__2;
 x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__3;
-x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1;
+x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__1;
 x_16 = l_Lean_Expr_cleanupAnnotations(x_10);
 x_17 = l_Lean_Expr_isApp(x_16);
 if (x_17 == 0)
@@ -3389,7 +3207,7 @@ else
 lean_object* x_38; lean_object* x_39; lean_object* x_40; uint8_t x_41; 
 x_38 = l_Lean_Expr_appArg(x_30, lean_box(0));
 x_39 = l_Lean_Expr_appFnCleanup(x_30, lean_box(0));
-x_40 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__17;
+x_40 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__21;
 x_41 = l_Lean_Expr_isConstOf(x_39, x_40);
 lean_dec(x_39);
 if (x_41 == 0)
@@ -3858,656 +3676,510 @@ return x_30;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_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, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_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, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11) {
 _start:
 {
-uint8_t x_13; lean_object* x_14; 
-x_13 = 1;
-lean_inc(x_11);
+uint8_t x_12; lean_object* x_13; 
+x_12 = 1;
 lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
+lean_inc(x_6);
 lean_inc(x_1);
-x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_bitVecAtom(x_1, x_13, x_7, x_8, x_9, x_10, x_11, x_12);
-if (lean_obj_tag(x_14) == 0)
+x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_bitVecAtom(x_1, x_12, x_6, x_7, x_8, x_9, x_10, x_11);
+if (lean_obj_tag(x_13) == 0)
 {
-lean_object* x_15; 
-x_15 = lean_ctor_get(x_14, 0);
-lean_inc(x_15);
-if (lean_obj_tag(x_15) == 0)
+lean_object* x_14; 
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+if (lean_obj_tag(x_14) == 0)
 {
-uint8_t x_16; 
-lean_dec(x_11);
+uint8_t x_15; 
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_16 = !lean_is_exclusive(x_14);
-if (x_16 == 0)
+x_15 = !lean_is_exclusive(x_13);
+if (x_15 == 0)
 {
-lean_object* x_17; lean_object* x_18; 
-x_17 = lean_ctor_get(x_14, 0);
-lean_dec(x_17);
-x_18 = lean_box(0);
-lean_ctor_set(x_14, 0, x_18);
-return x_14;
+lean_object* x_16; lean_object* x_17; 
+x_16 = lean_ctor_get(x_13, 0);
+lean_dec(x_16);
+x_17 = lean_box(0);
+lean_ctor_set(x_13, 0, x_17);
+return x_13;
 }
 else
 {
-lean_object* x_19; lean_object* x_20; lean_object* x_21; 
-x_19 = lean_ctor_get(x_14, 1);
-lean_inc(x_19);
-lean_dec(x_14);
-x_20 = lean_box(0);
-x_21 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_21, 0, x_20);
-lean_ctor_set(x_21, 1, x_19);
-return x_21;
+lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_18 = lean_ctor_get(x_13, 1);
+lean_inc(x_18);
+lean_dec(x_13);
+x_19 = lean_box(0);
+x_20 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_20, 0, x_19);
+lean_ctor_set(x_20, 1, x_18);
+return x_20;
 }
 }
 else
 {
-lean_object* x_22; lean_object* x_23; lean_object* x_24; 
-x_22 = lean_ctor_get(x_14, 1);
+lean_object* x_21; lean_object* x_22; lean_object* x_23; 
+x_21 = lean_ctor_get(x_13, 1);
+lean_inc(x_21);
+lean_dec(x_13);
+x_22 = lean_ctor_get(x_14, 0);
 lean_inc(x_22);
 lean_dec(x_14);
-x_23 = lean_ctor_get(x_15, 0);
-lean_inc(x_23);
-lean_dec(x_15);
-lean_inc(x_11);
 lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
+lean_inc(x_5);
 lean_inc(x_2);
-x_24 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goOrAtom(x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_22);
-if (lean_obj_tag(x_24) == 0)
+x_23 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goOrAtom(x_2, x_5, x_6, x_7, x_8, x_9, x_10, x_21);
+if (lean_obj_tag(x_23) == 0)
 {
-lean_object* x_25; 
-x_25 = lean_ctor_get(x_24, 0);
-lean_inc(x_25);
-if (lean_obj_tag(x_25) == 0)
+lean_object* x_24; 
+x_24 = lean_ctor_get(x_23, 0);
+lean_inc(x_24);
+if (lean_obj_tag(x_24) == 0)
 {
-uint8_t x_26; 
-lean_dec(x_23);
-lean_dec(x_11);
+uint8_t x_25; 
+lean_dec(x_22);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_26 = !lean_is_exclusive(x_24);
-if (x_26 == 0)
+x_25 = !lean_is_exclusive(x_23);
+if (x_25 == 0)
 {
-lean_object* x_27; lean_object* x_28; 
-x_27 = lean_ctor_get(x_24, 0);
-lean_dec(x_27);
-x_28 = lean_box(0);
-lean_ctor_set(x_24, 0, x_28);
-return x_24;
+lean_object* x_26; lean_object* x_27; 
+x_26 = lean_ctor_get(x_23, 0);
+lean_dec(x_26);
+x_27 = lean_box(0);
+lean_ctor_set(x_23, 0, x_27);
+return x_23;
 }
 else
 {
-lean_object* x_29; lean_object* x_30; lean_object* x_31; 
-x_29 = lean_ctor_get(x_24, 1);
-lean_inc(x_29);
-lean_dec(x_24);
-x_30 = lean_box(0);
-x_31 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_31, 0, x_30);
-lean_ctor_set(x_31, 1, x_29);
-return x_31;
+lean_object* x_28; lean_object* x_29; lean_object* x_30; 
+x_28 = lean_ctor_get(x_23, 1);
+lean_inc(x_28);
+lean_dec(x_23);
+x_29 = lean_box(0);
+x_30 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_30, 0, x_29);
+lean_ctor_set(x_30, 1, x_28);
+return x_30;
 }
 }
 else
 {
-lean_object* x_32; lean_object* x_33; lean_object* x_34; 
-x_32 = lean_ctor_get(x_24, 1);
+lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_31 = lean_ctor_get(x_23, 1);
+lean_inc(x_31);
+lean_dec(x_23);
+x_32 = lean_ctor_get(x_24, 0);
 lean_inc(x_32);
 lean_dec(x_24);
-x_33 = lean_ctor_get(x_25, 0);
-lean_inc(x_33);
-lean_dec(x_25);
-lean_inc(x_11);
 lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
+lean_inc(x_5);
 lean_inc(x_3);
-x_34 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_goOrAtom(x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_32);
-if (lean_obj_tag(x_34) == 0)
+x_33 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_goOrAtom(x_3, x_5, x_6, x_7, x_8, x_9, x_10, x_31);
+if (lean_obj_tag(x_33) == 0)
 {
-lean_object* x_35; 
-x_35 = lean_ctor_get(x_34, 0);
-lean_inc(x_35);
-if (lean_obj_tag(x_35) == 0)
+lean_object* x_34; 
+x_34 = lean_ctor_get(x_33, 0);
+lean_inc(x_34);
+if (lean_obj_tag(x_34) == 0)
 {
-uint8_t x_36; 
-lean_dec(x_33);
-lean_dec(x_23);
-lean_dec(x_11);
+uint8_t x_35; 
+lean_dec(x_32);
+lean_dec(x_22);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_36 = !lean_is_exclusive(x_34);
-if (x_36 == 0)
+x_35 = !lean_is_exclusive(x_33);
+if (x_35 == 0)
 {
-lean_object* x_37; lean_object* x_38; 
-x_37 = lean_ctor_get(x_34, 0);
-lean_dec(x_37);
-x_38 = lean_box(0);
-lean_ctor_set(x_34, 0, x_38);
-return x_34;
+lean_object* x_36; lean_object* x_37; 
+x_36 = lean_ctor_get(x_33, 0);
+lean_dec(x_36);
+x_37 = lean_box(0);
+lean_ctor_set(x_33, 0, x_37);
+return x_33;
 }
 else
 {
-lean_object* x_39; lean_object* x_40; lean_object* x_41; 
-x_39 = lean_ctor_get(x_34, 1);
-lean_inc(x_39);
-lean_dec(x_34);
-x_40 = lean_box(0);
-x_41 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_41, 0, x_40);
-lean_ctor_set(x_41, 1, x_39);
-return x_41;
+lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+x_38 = lean_ctor_get(x_33, 1);
+lean_inc(x_38);
+lean_dec(x_33);
+x_39 = lean_box(0);
+x_40 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_40, 0, x_39);
+lean_ctor_set(x_40, 1, x_38);
+return x_40;
 }
 }
 else
 {
-lean_object* x_42; lean_object* x_43; lean_object* x_44; 
-x_42 = lean_ctor_get(x_34, 1);
+lean_object* x_41; lean_object* x_42; lean_object* x_43; 
+x_41 = lean_ctor_get(x_33, 1);
+lean_inc(x_41);
+lean_dec(x_33);
+x_42 = lean_ctor_get(x_34, 0);
 lean_inc(x_42);
 lean_dec(x_34);
-x_43 = lean_ctor_get(x_35, 0);
-lean_inc(x_43);
-lean_dec(x_35);
-lean_inc(x_11);
 lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
+lean_inc(x_5);
 lean_inc(x_4);
-x_44 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_goOrAtom(x_4, x_6, x_7, x_8, x_9, x_10, x_11, x_42);
-if (lean_obj_tag(x_44) == 0)
+x_43 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_goOrAtom(x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_41);
+if (lean_obj_tag(x_43) == 0)
 {
-lean_object* x_45; 
-x_45 = lean_ctor_get(x_44, 0);
-lean_inc(x_45);
-if (lean_obj_tag(x_45) == 0)
+lean_object* x_44; 
+x_44 = lean_ctor_get(x_43, 0);
+lean_inc(x_44);
+if (lean_obj_tag(x_44) == 0)
 {
-uint8_t x_46; 
-lean_dec(x_43);
-lean_dec(x_33);
-lean_dec(x_23);
-lean_dec(x_11);
+uint8_t x_45; 
+lean_dec(x_42);
+lean_dec(x_32);
+lean_dec(x_22);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_46 = !lean_is_exclusive(x_44);
-if (x_46 == 0)
+x_45 = !lean_is_exclusive(x_43);
+if (x_45 == 0)
 {
-lean_object* x_47; lean_object* x_48; 
-x_47 = lean_ctor_get(x_44, 0);
-lean_dec(x_47);
-x_48 = lean_box(0);
-lean_ctor_set(x_44, 0, x_48);
-return x_44;
+lean_object* x_46; lean_object* x_47; 
+x_46 = lean_ctor_get(x_43, 0);
+lean_dec(x_46);
+x_47 = lean_box(0);
+lean_ctor_set(x_43, 0, x_47);
+return x_43;
 }
 else
 {
-lean_object* x_49; lean_object* x_50; lean_object* x_51; 
-x_49 = lean_ctor_get(x_44, 1);
-lean_inc(x_49);
-lean_dec(x_44);
-x_50 = lean_box(0);
-x_51 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_51, 0, x_50);
-lean_ctor_set(x_51, 1, x_49);
-return x_51;
+lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_48 = lean_ctor_get(x_43, 1);
+lean_inc(x_48);
+lean_dec(x_43);
+x_49 = lean_box(0);
+x_50 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_50, 0, x_49);
+lean_ctor_set(x_50, 1, x_48);
+return x_50;
 }
 }
 else
 {
-lean_object* x_52; uint8_t x_53; 
-x_52 = lean_ctor_get(x_44, 1);
-lean_inc(x_52);
-lean_dec(x_44);
-x_53 = !lean_is_exclusive(x_45);
-if (x_53 == 0)
+lean_object* x_51; uint8_t x_52; 
+x_51 = lean_ctor_get(x_43, 1);
+lean_inc(x_51);
+lean_dec(x_43);
+x_52 = !lean_is_exclusive(x_44);
+if (x_52 == 0)
 {
-lean_object* x_54; lean_object* x_55; 
-x_54 = lean_ctor_get(x_45, 0);
-lean_inc(x_23);
-x_55 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas(x_33, x_23, x_43, x_54, x_2, x_1, x_3, x_4, x_6, x_7, x_8, x_9, x_10, x_11, x_52);
-lean_dec(x_7);
+lean_object* x_53; lean_object* x_54; 
+x_53 = lean_ctor_get(x_44, 0);
+lean_inc(x_22);
+x_54 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas(x_32, x_22, x_42, x_53, x_2, x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_51);
 lean_dec(x_6);
-if (lean_obj_tag(x_55) == 0)
+lean_dec(x_5);
+if (lean_obj_tag(x_54) == 0)
 {
-uint8_t x_56; 
-x_56 = !lean_is_exclusive(x_55);
-if (x_56 == 0)
+uint8_t x_55; 
+x_55 = !lean_is_exclusive(x_54);
+if (x_55 == 0)
 {
-lean_object* x_57; 
-x_57 = lean_ctor_get(x_55, 0);
-lean_dec(x_57);
-lean_ctor_set(x_45, 0, x_23);
-lean_ctor_set(x_55, 0, x_45);
-return x_55;
+lean_object* x_56; 
+x_56 = lean_ctor_get(x_54, 0);
+lean_dec(x_56);
+lean_ctor_set(x_44, 0, x_22);
+lean_ctor_set(x_54, 0, x_44);
+return x_54;
 }
 else
 {
-lean_object* x_58; lean_object* x_59; 
-x_58 = lean_ctor_get(x_55, 1);
-lean_inc(x_58);
-lean_dec(x_55);
-lean_ctor_set(x_45, 0, x_23);
-x_59 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_59, 0, x_45);
-lean_ctor_set(x_59, 1, x_58);
-return x_59;
+lean_object* x_57; lean_object* x_58; 
+x_57 = lean_ctor_get(x_54, 1);
+lean_inc(x_57);
+lean_dec(x_54);
+lean_ctor_set(x_44, 0, x_22);
+x_58 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_58, 0, x_44);
+lean_ctor_set(x_58, 1, x_57);
+return x_58;
 }
 }
 else
 {
-uint8_t x_60; 
-lean_free_object(x_45);
-lean_dec(x_23);
-x_60 = !lean_is_exclusive(x_55);
-if (x_60 == 0)
+uint8_t x_59; 
+lean_free_object(x_44);
+lean_dec(x_22);
+x_59 = !lean_is_exclusive(x_54);
+if (x_59 == 0)
 {
-return x_55;
+return x_54;
 }
 else
 {
-lean_object* x_61; lean_object* x_62; lean_object* x_63; 
-x_61 = lean_ctor_get(x_55, 0);
-x_62 = lean_ctor_get(x_55, 1);
-lean_inc(x_62);
+lean_object* x_60; lean_object* x_61; lean_object* x_62; 
+x_60 = lean_ctor_get(x_54, 0);
+x_61 = lean_ctor_get(x_54, 1);
 lean_inc(x_61);
-lean_dec(x_55);
-x_63 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_63, 0, x_61);
-lean_ctor_set(x_63, 1, x_62);
-return x_63;
+lean_inc(x_60);
+lean_dec(x_54);
+x_62 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_62, 0, x_60);
+lean_ctor_set(x_62, 1, x_61);
+return x_62;
 }
 }
 }
 else
 {
-lean_object* x_64; lean_object* x_65; 
-x_64 = lean_ctor_get(x_45, 0);
-lean_inc(x_64);
-lean_dec(x_45);
-lean_inc(x_23);
-x_65 = l_Lean_Elab_Tactic_BVDecide_Frontend_addIfLemmas(x_33, x_23, x_43, x_64, x_2, x_1, x_3, x_4, x_6, x_7, x_8, x_9, x_10, x_11, x_52);
-lean_dec(x_7);
+lean_object* x_63; lean_object* x_64; 
+x_63 = lean_ctor_get(x_44, 0);
+lean_inc(x_63);
+lean_dec(x_44);
+lean_inc(x_22);
+x_64 = l_Lean_Elab_Tactic_BVDecide_Frontend_addCondLemmas(x_32, x_22, x_42, x_63, x_2, x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_51);
 lean_dec(x_6);
-if (lean_obj_tag(x_65) == 0)
+lean_dec(x_5);
+if (lean_obj_tag(x_64) == 0)
 {
-lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; 
-x_66 = lean_ctor_get(x_65, 1);
-lean_inc(x_66);
-if (lean_is_exclusive(x_65)) {
- lean_ctor_release(x_65, 0);
- lean_ctor_release(x_65, 1);
- x_67 = x_65;
+lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; 
+x_65 = lean_ctor_get(x_64, 1);
+lean_inc(x_65);
+if (lean_is_exclusive(x_64)) {
+ lean_ctor_release(x_64, 0);
+ lean_ctor_release(x_64, 1);
+ x_66 = x_64;
 } else {
- lean_dec_ref(x_65);
- x_67 = lean_box(0);
+ lean_dec_ref(x_64);
+ x_66 = lean_box(0);
 }
-x_68 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_68, 0, x_23);
-if (lean_is_scalar(x_67)) {
- x_69 = lean_alloc_ctor(0, 2, 0);
+x_67 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_67, 0, x_22);
+if (lean_is_scalar(x_66)) {
+ x_68 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_69 = x_67;
+ x_68 = x_66;
 }
-lean_ctor_set(x_69, 0, x_68);
-lean_ctor_set(x_69, 1, x_66);
-return x_69;
+lean_ctor_set(x_68, 0, x_67);
+lean_ctor_set(x_68, 1, x_65);
+return x_68;
 }
 else
 {
-lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; 
-lean_dec(x_23);
-x_70 = lean_ctor_get(x_65, 0);
+lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; 
+lean_dec(x_22);
+x_69 = lean_ctor_get(x_64, 0);
+lean_inc(x_69);
+x_70 = lean_ctor_get(x_64, 1);
 lean_inc(x_70);
-x_71 = lean_ctor_get(x_65, 1);
-lean_inc(x_71);
-if (lean_is_exclusive(x_65)) {
- lean_ctor_release(x_65, 0);
- lean_ctor_release(x_65, 1);
- x_72 = x_65;
+if (lean_is_exclusive(x_64)) {
+ lean_ctor_release(x_64, 0);
+ lean_ctor_release(x_64, 1);
+ x_71 = x_64;
 } else {
- lean_dec_ref(x_65);
- x_72 = lean_box(0);
+ lean_dec_ref(x_64);
+ x_71 = lean_box(0);
 }
-if (lean_is_scalar(x_72)) {
- x_73 = lean_alloc_ctor(1, 2, 0);
+if (lean_is_scalar(x_71)) {
+ x_72 = lean_alloc_ctor(1, 2, 0);
 } else {
- x_73 = x_72;
+ x_72 = x_71;
 }
-lean_ctor_set(x_73, 0, x_70);
-lean_ctor_set(x_73, 1, x_71);
-return x_73;
+lean_ctor_set(x_72, 0, x_69);
+lean_ctor_set(x_72, 1, x_70);
+return x_72;
 }
 }
 }
 }
 else
 {
-uint8_t x_74; 
-lean_dec(x_43);
-lean_dec(x_33);
-lean_dec(x_23);
-lean_dec(x_11);
+uint8_t x_73; 
+lean_dec(x_42);
+lean_dec(x_32);
+lean_dec(x_22);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_74 = !lean_is_exclusive(x_44);
-if (x_74 == 0)
+x_73 = !lean_is_exclusive(x_43);
+if (x_73 == 0)
 {
-return x_44;
+return x_43;
 }
 else
 {
-lean_object* x_75; lean_object* x_76; lean_object* x_77; 
-x_75 = lean_ctor_get(x_44, 0);
-x_76 = lean_ctor_get(x_44, 1);
-lean_inc(x_76);
+lean_object* x_74; lean_object* x_75; lean_object* x_76; 
+x_74 = lean_ctor_get(x_43, 0);
+x_75 = lean_ctor_get(x_43, 1);
 lean_inc(x_75);
-lean_dec(x_44);
-x_77 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_77, 0, x_75);
-lean_ctor_set(x_77, 1, x_76);
-return x_77;
+lean_inc(x_74);
+lean_dec(x_43);
+x_76 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_76, 0, x_74);
+lean_ctor_set(x_76, 1, x_75);
+return x_76;
 }
 }
 }
 }
 else
 {
-uint8_t x_78; 
-lean_dec(x_33);
-lean_dec(x_23);
-lean_dec(x_11);
+uint8_t x_77; 
+lean_dec(x_32);
+lean_dec(x_22);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_78 = !lean_is_exclusive(x_34);
-if (x_78 == 0)
+x_77 = !lean_is_exclusive(x_33);
+if (x_77 == 0)
 {
-return x_34;
+return x_33;
 }
 else
 {
-lean_object* x_79; lean_object* x_80; lean_object* x_81; 
-x_79 = lean_ctor_get(x_34, 0);
-x_80 = lean_ctor_get(x_34, 1);
-lean_inc(x_80);
+lean_object* x_78; lean_object* x_79; lean_object* x_80; 
+x_78 = lean_ctor_get(x_33, 0);
+x_79 = lean_ctor_get(x_33, 1);
 lean_inc(x_79);
-lean_dec(x_34);
-x_81 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_81, 0, x_79);
-lean_ctor_set(x_81, 1, x_80);
-return x_81;
-}
-}
-}
-}
-else
-{
-uint8_t x_82; 
-lean_dec(x_23);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_82 = !lean_is_exclusive(x_24);
-if (x_82 == 0)
-{
-return x_24;
-}
-else
-{
-lean_object* x_83; lean_object* x_84; lean_object* x_85; 
-x_83 = lean_ctor_get(x_24, 0);
-x_84 = lean_ctor_get(x_24, 1);
-lean_inc(x_84);
-lean_inc(x_83);
-lean_dec(x_24);
-x_85 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_85, 0, x_83);
-lean_ctor_set(x_85, 1, x_84);
-return x_85;
+lean_inc(x_78);
+lean_dec(x_33);
+x_80 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_80, 0, x_78);
+lean_ctor_set(x_80, 1, x_79);
+return x_80;
 }
 }
 }
 }
 else
 {
-uint8_t x_86; 
-lean_dec(x_11);
+uint8_t x_81; 
+lean_dec(x_22);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_86 = !lean_is_exclusive(x_14);
-if (x_86 == 0)
-{
-return x_14;
-}
-else
-{
-lean_object* x_87; lean_object* x_88; lean_object* x_89; 
-x_87 = lean_ctor_get(x_14, 0);
-x_88 = lean_ctor_get(x_14, 1);
-lean_inc(x_88);
-lean_inc(x_87);
-lean_dec(x_14);
-x_89 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_89, 0, x_87);
-lean_ctor_set(x_89, 1, x_88);
-return x_89;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__2(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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
-_start:
-{
-lean_object* x_14; lean_object* x_15; lean_object* x_16; uint8_t x_17; 
-x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1;
-x_15 = l_Lean_Expr_cleanupAnnotations(x_1);
-x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__4;
-x_17 = l_Lean_Expr_isConstOf(x_15, x_16);
-lean_dec(x_15);
-if (x_17 == 0)
-{
-lean_object* x_18; lean_object* x_19; 
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-x_18 = lean_box(0);
-x_19 = lean_apply_8(x_14, x_18, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
-return x_19;
-}
-else
-{
-lean_object* x_20; lean_object* x_21; 
-x_20 = lean_box(0);
-x_21 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__1(x_2, x_3, x_4, x_5, x_20, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
-return x_21;
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3(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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
-_start:
-{
-lean_object* x_14; lean_object* x_15; lean_object* x_16; uint8_t x_17; 
-x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1;
-x_15 = l_Lean_Expr_cleanupAnnotations(x_4);
-x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4___closed__1;
-x_17 = l_Lean_Expr_isConstOf(x_15, x_16);
-lean_dec(x_15);
-if (x_17 == 0)
-{
-lean_object* x_18; lean_object* x_19; 
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_18 = lean_box(0);
-x_19 = lean_apply_8(x_14, x_18, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
-return x_19;
-}
-else
-{
-lean_object* x_20; lean_object* x_21; 
-x_20 = lean_box(0);
-x_21 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__2(x_6, x_1, x_5, x_2, x_3, x_20, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
-return x_21;
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__4(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, lean_object* x_11) {
-_start:
-{
-lean_object* x_12; lean_object* x_13; uint8_t x_14; 
-x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1;
-x_13 = l_Lean_Expr_cleanupAnnotations(x_2);
-x_14 = l_Lean_Expr_isApp(x_13);
-if (x_14 == 0)
-{
-lean_object* x_15; lean_object* x_16; 
-lean_dec(x_13);
-lean_dec(x_4);
-lean_dec(x_3);
 lean_dec(x_1);
-x_15 = lean_box(0);
-x_16 = lean_apply_8(x_12, x_15, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-return x_16;
-}
-else
-{
-lean_object* x_17; lean_object* x_18; uint8_t x_19; 
-x_17 = l_Lean_Expr_appArg(x_13, lean_box(0));
-x_18 = l_Lean_Expr_appFnCleanup(x_13, lean_box(0));
-x_19 = l_Lean_Expr_isApp(x_18);
-if (x_19 == 0)
+x_81 = !lean_is_exclusive(x_23);
+if (x_81 == 0)
 {
-lean_object* x_20; lean_object* x_21; 
-lean_dec(x_18);
-lean_dec(x_17);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_1);
-x_20 = lean_box(0);
-x_21 = lean_apply_8(x_12, x_20, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-return x_21;
+return x_23;
 }
 else
 {
-lean_object* x_22; lean_object* x_23; uint8_t x_24; 
-x_22 = l_Lean_Expr_appArg(x_18, lean_box(0));
-x_23 = l_Lean_Expr_appFnCleanup(x_18, lean_box(0));
-x_24 = l_Lean_Expr_isApp(x_23);
-if (x_24 == 0)
-{
-lean_object* x_25; lean_object* x_26; 
-lean_dec(x_23);
-lean_dec(x_22);
-lean_dec(x_17);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_1);
-x_25 = lean_box(0);
-x_26 = lean_apply_8(x_12, x_25, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-return x_26;
+lean_object* x_82; lean_object* x_83; lean_object* x_84; 
+x_82 = lean_ctor_get(x_23, 0);
+x_83 = lean_ctor_get(x_23, 1);
+lean_inc(x_83);
+lean_inc(x_82);
+lean_dec(x_23);
+x_84 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_84, 0, x_82);
+lean_ctor_set(x_84, 1, x_83);
+return x_84;
+}
+}
+}
 }
 else
 {
-lean_object* x_27; lean_object* x_28; lean_object* x_29; uint8_t x_30; 
-x_27 = l_Lean_Expr_appArg(x_23, lean_box(0));
-x_28 = l_Lean_Expr_appFnCleanup(x_23, lean_box(0));
-x_29 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__2;
-x_30 = l_Lean_Expr_isConstOf(x_28, x_29);
-lean_dec(x_28);
-if (x_30 == 0)
-{
-lean_object* x_31; lean_object* x_32; 
-lean_dec(x_27);
-lean_dec(x_22);
-lean_dec(x_17);
+uint8_t x_85; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_31 = lean_box(0);
-x_32 = lean_apply_8(x_12, x_31, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-return x_32;
+x_85 = !lean_is_exclusive(x_13);
+if (x_85 == 0)
+{
+return x_13;
 }
 else
 {
-lean_object* x_33; 
-x_33 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3(x_1, x_3, x_4, x_27, x_22, x_17, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-return x_33;
-}
-}
+lean_object* x_86; lean_object* x_87; lean_object* x_88; 
+x_86 = lean_ctor_get(x_13, 0);
+x_87 = lean_ctor_get(x_13, 1);
+lean_inc(x_87);
+lean_inc(x_86);
+lean_dec(x_13);
+x_88 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_88, 0, x_86);
+lean_ctor_set(x_88, 1, x_87);
+return x_88;
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5(lean_object* x_1) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__2(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; 
@@ -4516,7 +4188,7 @@ lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -4524,7 +4196,7 @@ x_1 = lean_mk_string_unchecked("Std", 3, 3);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2() {
 _start:
 {
 lean_object* x_1; 
@@ -4532,7 +4204,7 @@ x_1 = lean_mk_string_unchecked("Tactic", 6, 6);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3() {
 _start:
 {
 lean_object* x_1; 
@@ -4540,7 +4212,7 @@ x_1 = lean_mk_string_unchecked("BVDecide", 8, 8);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__4() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__4() {
 _start:
 {
 lean_object* x_1; 
@@ -4548,7 +4220,7 @@ x_1 = lean_mk_string_unchecked("BVUnOp", 6, 6);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__5() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__5() {
 _start:
 {
 lean_object* x_1; 
@@ -4556,20 +4228,20 @@ x_1 = lean_mk_string_unchecked("rotateRight", 11, 11);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__6() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__4;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__5;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__4;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__5;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7() {
 _start:
 {
 lean_object* x_1; 
@@ -4577,7 +4249,7 @@ x_1 = lean_mk_string_unchecked("Reflect", 7, 7);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__8() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__8() {
 _start:
 {
 lean_object* x_1; 
@@ -4585,40 +4257,40 @@ x_1 = lean_mk_string_unchecked("rotateRight_congr", 17, 17);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__9() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__9() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__8;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__8;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__10() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__10() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5), 1, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__2), 1, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3(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; lean_object* x_11; lean_object* x_12; lean_object* x_13; 
-x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__10;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__6;
-x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__9;
+x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__10;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__6;
+x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__9;
 x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_rotateReflection(x_2, x_1, x_10, x_11, x_12, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
 return x_13;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7(lean_object* x_1) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__4(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; 
@@ -4627,7 +4299,7 @@ lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -4635,20 +4307,20 @@ x_1 = lean_mk_string_unchecked("rotateLeft", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__4;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__4;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__1;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__3() {
 _start:
 {
 lean_object* x_1; 
@@ -4656,40 +4328,40 @@ x_1 = lean_mk_string_unchecked("rotateLeft_congr", 16, 16);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__4() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__4() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__3;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__3;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__5() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__5() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7), 1, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__4), 1, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5(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; lean_object* x_11; lean_object* x_12; lean_object* x_13; 
-x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__5;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__2;
-x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__4;
+x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__5;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__2;
+x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__4;
 x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_rotateReflection(x_2, x_1, x_10, x_11, x_12, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
 return x_13;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -4697,21 +4369,21 @@ x_1 = lean_mk_string_unchecked("extract_congr", 13, 13);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9(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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6(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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
 _start:
 {
 lean_object* x_14; lean_object* x_15; 
@@ -4770,7 +4442,7 @@ if (x_25 == 0)
 {
 lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; 
 x_26 = lean_ctor_get(x_16, 0);
-x_27 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__2;
+x_27 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
 x_28 = l_Lean_Expr_const___override(x_27, x_2);
 x_29 = l_Lean_mkApp6(x_28, x_3, x_4, x_5, x_6, x_7, x_26);
 lean_ctor_set(x_16, 0, x_29);
@@ -4782,7 +4454,7 @@ lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean
 x_30 = lean_ctor_get(x_16, 0);
 lean_inc(x_30);
 lean_dec(x_16);
-x_31 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__2;
+x_31 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
 x_32 = l_Lean_Expr_const___override(x_31, x_2);
 x_33 = l_Lean_mkApp6(x_32, x_3, x_4, x_5, x_6, x_7, x_30);
 x_34 = lean_alloc_ctor(1, 1, 0);
@@ -4806,7 +4478,7 @@ if (lean_is_exclusive(x_16)) {
  lean_dec_ref(x_16);
  x_37 = lean_box(0);
 }
-x_38 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__2;
+x_38 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
 x_39 = l_Lean_Expr_const___override(x_38, x_2);
 x_40 = l_Lean_mkApp6(x_39, x_3, x_4, x_5, x_6, x_7, x_36);
 if (lean_is_scalar(x_37)) {
@@ -4852,7 +4524,7 @@ return x_46;
 }
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -4860,7 +4532,7 @@ x_1 = lean_mk_string_unchecked("BVExpr", 6, 6);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__2() {
 _start:
 {
 lean_object* x_1; 
@@ -4868,30 +4540,30 @@ x_1 = lean_mk_string_unchecked("extract", 7, 7);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__2;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__2;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__4() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__3;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__3;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10(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) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7(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:
 {
 lean_object* x_11; 
@@ -5072,7 +4744,7 @@ lean_ctor_set(x_46, 3, x_44);
 x_47 = lean_box(0);
 lean_inc(x_43);
 x_48 = l_Lean_mkNatLit(x_43);
-x_49 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__4;
+x_49 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__4;
 lean_inc(x_45);
 lean_inc(x_2);
 lean_inc(x_1);
@@ -5082,7 +4754,7 @@ x_51 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBV
 lean_closure_set(x_51, 0, x_43);
 lean_closure_set(x_51, 1, x_45);
 lean_inc(x_41);
-x_52 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9), 13, 6);
+x_52 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6), 13, 6);
 lean_closure_set(x_52, 0, x_41);
 lean_closure_set(x_52, 1, x_47);
 lean_closure_set(x_52, 2, x_1);
@@ -5149,7 +4821,7 @@ lean_ctor_set(x_66, 3, x_64);
 x_67 = lean_box(0);
 lean_inc(x_63);
 x_68 = l_Lean_mkNatLit(x_63);
-x_69 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__4;
+x_69 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__4;
 lean_inc(x_65);
 lean_inc(x_2);
 lean_inc(x_1);
@@ -5159,7 +4831,7 @@ x_71 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBV
 lean_closure_set(x_71, 0, x_63);
 lean_closure_set(x_71, 1, x_65);
 lean_inc(x_61);
-x_72 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9), 13, 6);
+x_72 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6), 13, 6);
 lean_closure_set(x_72, 0, x_61);
 lean_closure_set(x_72, 1, x_67);
 lean_closure_set(x_72, 2, x_1);
@@ -5227,7 +4899,7 @@ lean_ctor_set(x_83, 3, x_81);
 x_84 = lean_box(0);
 lean_inc(x_80);
 x_85 = l_Lean_mkNatLit(x_80);
-x_86 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__4;
+x_86 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__4;
 lean_inc(x_82);
 lean_inc(x_2);
 lean_inc(x_1);
@@ -5237,7 +4909,7 @@ x_88 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBV
 lean_closure_set(x_88, 0, x_80);
 lean_closure_set(x_88, 1, x_82);
 lean_inc(x_77);
-x_89 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9), 13, 6);
+x_89 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6), 13, 6);
 lean_closure_set(x_89, 0, x_77);
 lean_closure_set(x_89, 1, x_84);
 lean_closure_set(x_89, 2, x_1);
@@ -5375,7 +5047,7 @@ return x_106;
 }
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -5383,21 +5055,21 @@ x_1 = lean_mk_string_unchecked("replicate_congr", 15, 15);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__2() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11(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, lean_object* x_11, lean_object* x_12) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8(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, lean_object* x_11, lean_object* x_12) {
 _start:
 {
 lean_object* x_13; lean_object* x_14; 
@@ -5455,7 +5127,7 @@ if (x_24 == 0)
 {
 lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
 x_25 = lean_ctor_get(x_15, 0);
-x_26 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__2;
+x_26 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__2;
 x_27 = l_Lean_Expr_const___override(x_26, x_2);
 x_28 = l_Lean_mkApp5(x_27, x_3, x_4, x_5, x_6, x_25);
 lean_ctor_set(x_15, 0, x_28);
@@ -5467,7 +5139,7 @@ lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean
 x_29 = lean_ctor_get(x_15, 0);
 lean_inc(x_29);
 lean_dec(x_15);
-x_30 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__2;
+x_30 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__2;
 x_31 = l_Lean_Expr_const___override(x_30, x_2);
 x_32 = l_Lean_mkApp5(x_31, x_3, x_4, x_5, x_6, x_29);
 x_33 = lean_alloc_ctor(1, 1, 0);
@@ -5491,7 +5163,7 @@ if (lean_is_exclusive(x_15)) {
  lean_dec_ref(x_15);
  x_36 = lean_box(0);
 }
-x_37 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__2;
+x_37 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__2;
 x_38 = l_Lean_Expr_const___override(x_37, x_2);
 x_39 = l_Lean_mkApp5(x_38, x_3, x_4, x_5, x_6, x_35);
 if (lean_is_scalar(x_36)) {
@@ -5536,7 +5208,7 @@ return x_45;
 }
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -5544,30 +5216,30 @@ x_1 = lean_mk_string_unchecked("replicate", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__1;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__2;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__2;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9(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; 
@@ -5687,7 +5359,7 @@ lean_inc(x_32);
 x_37 = l_Lean_mkNatLit(x_32);
 lean_inc(x_31);
 x_38 = l_Lean_mkNatLit(x_31);
-x_39 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__3;
+x_39 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__3;
 lean_inc(x_34);
 lean_inc(x_38);
 lean_inc(x_37);
@@ -5697,7 +5369,7 @@ x_41 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBV
 lean_closure_set(x_41, 0, x_32);
 lean_closure_set(x_41, 1, x_34);
 lean_inc(x_19);
-x_42 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11), 12, 5);
+x_42 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8), 12, 5);
 lean_closure_set(x_42, 0, x_19);
 lean_closure_set(x_42, 1, x_36);
 lean_closure_set(x_42, 2, x_38);
@@ -5770,7 +5442,7 @@ lean_inc(x_54);
 x_59 = l_Lean_mkNatLit(x_54);
 lean_inc(x_53);
 x_60 = l_Lean_mkNatLit(x_53);
-x_61 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__3;
+x_61 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__3;
 lean_inc(x_56);
 lean_inc(x_60);
 lean_inc(x_59);
@@ -5780,7 +5452,7 @@ x_63 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBV
 lean_closure_set(x_63, 0, x_54);
 lean_closure_set(x_63, 1, x_56);
 lean_inc(x_19);
-x_64 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11), 12, 5);
+x_64 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8), 12, 5);
 lean_closure_set(x_64, 0, x_19);
 lean_closure_set(x_64, 1, x_58);
 lean_closure_set(x_64, 2, x_60);
@@ -5849,7 +5521,7 @@ lean_inc(x_73);
 x_78 = l_Lean_mkNatLit(x_73);
 lean_inc(x_71);
 x_79 = l_Lean_mkNatLit(x_71);
-x_80 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__3;
+x_80 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__3;
 lean_inc(x_75);
 lean_inc(x_79);
 lean_inc(x_78);
@@ -5859,7 +5531,7 @@ x_82 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBV
 lean_closure_set(x_82, 0, x_73);
 lean_closure_set(x_82, 1, x_75);
 lean_inc(x_19);
-x_83 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11), 12, 5);
+x_83 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8), 12, 5);
 lean_closure_set(x_83, 0, x_19);
 lean_closure_set(x_83, 1, x_77);
 lean_closure_set(x_83, 2, x_79);
@@ -5958,7 +5630,7 @@ return x_97;
 }
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -5966,21 +5638,21 @@ x_1 = lean_mk_string_unchecked("append_congr", 12, 12);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__2() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17) {
 _start:
 {
 lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; 
@@ -6050,7 +5722,7 @@ lean_inc(x_33);
 x_34 = lean_ctor_get(x_32, 1);
 lean_inc(x_34);
 lean_dec(x_32);
-x_35 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__2;
+x_35 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__2;
 x_36 = l_Lean_Expr_const___override(x_35, x_6);
 x_37 = l_Lean_mkApp8(x_36, x_7, x_8, x_9, x_11, x_10, x_19, x_33, x_34);
 lean_ctor_set(x_29, 0, x_37);
@@ -6068,7 +5740,7 @@ lean_inc(x_39);
 x_40 = lean_ctor_get(x_38, 1);
 lean_inc(x_40);
 lean_dec(x_38);
-x_41 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__2;
+x_41 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__2;
 x_42 = l_Lean_Expr_const___override(x_41, x_6);
 x_43 = l_Lean_mkApp8(x_42, x_7, x_8, x_9, x_11, x_10, x_19, x_39, x_40);
 x_44 = lean_alloc_ctor(1, 1, 0);
@@ -6122,7 +5794,7 @@ lean_inc(x_52);
 x_53 = lean_ctor_get(x_50, 1);
 lean_inc(x_53);
 lean_dec(x_50);
-x_54 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__2;
+x_54 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__2;
 x_55 = l_Lean_Expr_const___override(x_54, x_6);
 x_56 = l_Lean_mkApp8(x_55, x_7, x_8, x_9, x_11, x_10, x_19, x_52, x_53);
 if (lean_is_scalar(x_51)) {
@@ -6210,7 +5882,7 @@ return x_66;
 }
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -6218,30 +5890,30 @@ x_1 = lean_mk_string_unchecked("append", 6, 6);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__1;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__2;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__2;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11(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; 
@@ -6375,7 +6047,7 @@ lean_inc(x_35);
 x_40 = l_Lean_mkNatLit(x_35);
 x_41 = lean_ctor_get(x_31, 3);
 lean_inc(x_41);
-x_42 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__3;
+x_42 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__3;
 lean_inc(x_41);
 lean_inc(x_34);
 lean_inc(x_40);
@@ -6388,7 +6060,7 @@ lean_closure_set(x_44, 1, x_34);
 lean_inc(x_32);
 lean_inc(x_19);
 lean_inc(x_35);
-x_45 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___boxed), 17, 10);
+x_45 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___boxed), 17, 10);
 lean_closure_set(x_45, 0, x_35);
 lean_closure_set(x_45, 1, x_41);
 lean_closure_set(x_45, 2, x_19);
@@ -6473,7 +6145,7 @@ lean_inc(x_60);
 x_65 = l_Lean_mkNatLit(x_60);
 x_66 = lean_ctor_get(x_56, 3);
 lean_inc(x_66);
-x_67 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__3;
+x_67 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__3;
 lean_inc(x_66);
 lean_inc(x_59);
 lean_inc(x_65);
@@ -6486,7 +6158,7 @@ lean_closure_set(x_69, 1, x_59);
 lean_inc(x_57);
 lean_inc(x_19);
 lean_inc(x_60);
-x_70 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___boxed), 17, 10);
+x_70 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___boxed), 17, 10);
 lean_closure_set(x_70, 0, x_60);
 lean_closure_set(x_70, 1, x_66);
 lean_closure_set(x_70, 2, x_19);
@@ -6567,7 +6239,7 @@ lean_inc(x_82);
 x_87 = l_Lean_mkNatLit(x_82);
 x_88 = lean_ctor_get(x_77, 3);
 lean_inc(x_88);
-x_89 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__3;
+x_89 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__3;
 lean_inc(x_88);
 lean_inc(x_81);
 lean_inc(x_87);
@@ -6580,7 +6252,7 @@ lean_closure_set(x_91, 1, x_81);
 lean_inc(x_79);
 lean_inc(x_19);
 lean_inc(x_82);
-x_92 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___boxed), 17, 10);
+x_92 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___boxed), 17, 10);
 lean_closure_set(x_92, 0, x_82);
 lean_closure_set(x_92, 1, x_88);
 lean_closure_set(x_92, 2, x_19);
@@ -6688,7 +6360,7 @@ return x_106;
 }
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -6696,21 +6368,21 @@ x_1 = lean_mk_string_unchecked("signExtend_congr", 16, 16);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__2() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15(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, lean_object* x_11, lean_object* x_12) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12(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, lean_object* x_11, lean_object* x_12) {
 _start:
 {
 lean_object* x_13; lean_object* x_14; 
@@ -6768,7 +6440,7 @@ if (x_24 == 0)
 {
 lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
 x_25 = lean_ctor_get(x_15, 0);
-x_26 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__2;
+x_26 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__2;
 x_27 = l_Lean_Expr_const___override(x_26, x_2);
 x_28 = l_Lean_mkApp5(x_27, x_3, x_4, x_5, x_6, x_25);
 lean_ctor_set(x_15, 0, x_28);
@@ -6780,7 +6452,7 @@ lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean
 x_29 = lean_ctor_get(x_15, 0);
 lean_inc(x_29);
 lean_dec(x_15);
-x_30 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__2;
+x_30 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__2;
 x_31 = l_Lean_Expr_const___override(x_30, x_2);
 x_32 = l_Lean_mkApp5(x_31, x_3, x_4, x_5, x_6, x_29);
 x_33 = lean_alloc_ctor(1, 1, 0);
@@ -6804,7 +6476,7 @@ if (lean_is_exclusive(x_15)) {
  lean_dec_ref(x_15);
  x_36 = lean_box(0);
 }
-x_37 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__2;
+x_37 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__2;
 x_38 = l_Lean_Expr_const___override(x_37, x_2);
 x_39 = l_Lean_mkApp5(x_38, x_3, x_4, x_5, x_6, x_35);
 if (lean_is_scalar(x_36)) {
@@ -6849,7 +6521,7 @@ return x_45;
 }
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -6857,30 +6529,30 @@ x_1 = lean_mk_string_unchecked("signExtend", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__1;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__2;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__2;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13(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; 
@@ -7002,7 +6674,7 @@ lean_ctor_set(x_35, 2, x_33);
 x_36 = lean_box(0);
 lean_inc(x_32);
 x_37 = l_Lean_mkNatLit(x_32);
-x_38 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__3;
+x_38 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__3;
 lean_inc(x_34);
 lean_inc(x_1);
 lean_inc(x_37);
@@ -7011,7 +6683,7 @@ x_40 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBV
 lean_closure_set(x_40, 0, x_32);
 lean_closure_set(x_40, 1, x_34);
 lean_inc(x_30);
-x_41 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15), 12, 5);
+x_41 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12), 12, 5);
 lean_closure_set(x_41, 0, x_30);
 lean_closure_set(x_41, 1, x_36);
 lean_closure_set(x_41, 2, x_1);
@@ -7076,7 +6748,7 @@ lean_ctor_set(x_55, 2, x_53);
 x_56 = lean_box(0);
 lean_inc(x_52);
 x_57 = l_Lean_mkNatLit(x_52);
-x_58 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__3;
+x_58 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__3;
 lean_inc(x_54);
 lean_inc(x_1);
 lean_inc(x_57);
@@ -7085,7 +6757,7 @@ x_60 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBV
 lean_closure_set(x_60, 0, x_52);
 lean_closure_set(x_60, 1, x_54);
 lean_inc(x_50);
-x_61 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15), 12, 5);
+x_61 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12), 12, 5);
 lean_closure_set(x_61, 0, x_50);
 lean_closure_set(x_61, 1, x_56);
 lean_closure_set(x_61, 2, x_1);
@@ -7151,7 +6823,7 @@ lean_ctor_set(x_72, 2, x_70);
 x_73 = lean_box(0);
 lean_inc(x_69);
 x_74 = l_Lean_mkNatLit(x_69);
-x_75 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__3;
+x_75 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__3;
 lean_inc(x_71);
 lean_inc(x_1);
 lean_inc(x_74);
@@ -7160,7 +6832,7 @@ x_77 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBV
 lean_closure_set(x_77, 0, x_69);
 lean_closure_set(x_77, 1, x_71);
 lean_inc(x_66);
-x_78 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15), 12, 5);
+x_78 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12), 12, 5);
 lean_closure_set(x_78, 0, x_66);
 lean_closure_set(x_78, 1, x_73);
 lean_closure_set(x_78, 2, x_1);
@@ -7260,7 +6932,7 @@ return x_91;
 }
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -7268,21 +6940,21 @@ x_1 = lean_mk_string_unchecked("zeroExtend_congr", 16, 16);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__2() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17(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, lean_object* x_11, lean_object* x_12) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14(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, lean_object* x_11, lean_object* x_12) {
 _start:
 {
 lean_object* x_13; lean_object* x_14; 
@@ -7340,7 +7012,7 @@ if (x_24 == 0)
 {
 lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
 x_25 = lean_ctor_get(x_15, 0);
-x_26 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__2;
+x_26 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__2;
 x_27 = l_Lean_Expr_const___override(x_26, x_2);
 x_28 = l_Lean_mkApp5(x_27, x_3, x_4, x_5, x_6, x_25);
 lean_ctor_set(x_15, 0, x_28);
@@ -7352,7 +7024,7 @@ lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean
 x_29 = lean_ctor_get(x_15, 0);
 lean_inc(x_29);
 lean_dec(x_15);
-x_30 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__2;
+x_30 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__2;
 x_31 = l_Lean_Expr_const___override(x_30, x_2);
 x_32 = l_Lean_mkApp5(x_31, x_3, x_4, x_5, x_6, x_29);
 x_33 = lean_alloc_ctor(1, 1, 0);
@@ -7376,7 +7048,7 @@ if (lean_is_exclusive(x_15)) {
  lean_dec_ref(x_15);
  x_36 = lean_box(0);
 }
-x_37 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__2;
+x_37 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__2;
 x_38 = l_Lean_Expr_const___override(x_37, x_2);
 x_39 = l_Lean_mkApp5(x_38, x_3, x_4, x_5, x_6, x_35);
 if (lean_is_scalar(x_36)) {
@@ -7421,7 +7093,7 @@ return x_45;
 }
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -7429,30 +7101,30 @@ x_1 = lean_mk_string_unchecked("zeroExtend", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__1;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__2;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__2;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15(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; 
@@ -7574,7 +7246,7 @@ lean_ctor_set(x_35, 2, x_33);
 x_36 = lean_box(0);
 lean_inc(x_32);
 x_37 = l_Lean_mkNatLit(x_32);
-x_38 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__3;
+x_38 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__3;
 lean_inc(x_34);
 lean_inc(x_1);
 lean_inc(x_37);
@@ -7583,7 +7255,7 @@ x_40 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBV
 lean_closure_set(x_40, 0, x_32);
 lean_closure_set(x_40, 1, x_34);
 lean_inc(x_30);
-x_41 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17), 12, 5);
+x_41 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14), 12, 5);
 lean_closure_set(x_41, 0, x_30);
 lean_closure_set(x_41, 1, x_36);
 lean_closure_set(x_41, 2, x_1);
@@ -7648,7 +7320,7 @@ lean_ctor_set(x_55, 2, x_53);
 x_56 = lean_box(0);
 lean_inc(x_52);
 x_57 = l_Lean_mkNatLit(x_52);
-x_58 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__3;
+x_58 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__3;
 lean_inc(x_54);
 lean_inc(x_1);
 lean_inc(x_57);
@@ -7657,7 +7329,7 @@ x_60 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBV
 lean_closure_set(x_60, 0, x_52);
 lean_closure_set(x_60, 1, x_54);
 lean_inc(x_50);
-x_61 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17), 12, 5);
+x_61 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14), 12, 5);
 lean_closure_set(x_61, 0, x_50);
 lean_closure_set(x_61, 1, x_56);
 lean_closure_set(x_61, 2, x_1);
@@ -7723,7 +7395,7 @@ lean_ctor_set(x_72, 2, x_70);
 x_73 = lean_box(0);
 lean_inc(x_69);
 x_74 = l_Lean_mkNatLit(x_69);
-x_75 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__3;
+x_75 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__3;
 lean_inc(x_71);
 lean_inc(x_1);
 lean_inc(x_74);
@@ -7732,7 +7404,7 @@ x_77 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBV
 lean_closure_set(x_77, 0, x_69);
 lean_closure_set(x_77, 1, x_71);
 lean_inc(x_66);
-x_78 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17), 12, 5);
+x_78 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14), 12, 5);
 lean_closure_set(x_78, 0, x_66);
 lean_closure_set(x_78, 1, x_73);
 lean_closure_set(x_78, 2, x_1);
@@ -7832,7 +7504,7 @@ return x_91;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
 _start:
 {
 lean_object* x_5; 
@@ -7844,7 +7516,7 @@ lean_ctor_set(x_5, 3, x_4);
 return x_5;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -7852,20 +7524,20 @@ x_1 = lean_mk_string_unchecked("arithShiftRight", 15, 15);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__1;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__3() {
 _start:
 {
 lean_object* x_1; 
@@ -7873,40 +7545,40 @@ x_1 = lean_mk_string_unchecked("arithShiftRight_congr", 21, 21);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__4() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__4() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__3;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__3;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__5() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__5() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19), 4, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16), 4, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17(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; lean_object* x_11; lean_object* x_12; lean_object* x_13; 
-x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__5;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__2;
-x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__4;
+x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__5;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__2;
+x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__4;
 x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_shiftReflection(x_2, x_1, x_10, x_11, x_12, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
 return x_13;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21(lean_object* x_1) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; 
@@ -7915,7 +7587,7 @@ lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -7923,20 +7595,20 @@ x_1 = lean_mk_string_unchecked("arithShiftRightConst", 20, 20);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__4;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__4;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__1;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__3() {
 _start:
 {
 lean_object* x_1; 
@@ -7944,29 +7616,29 @@ x_1 = lean_mk_string_unchecked("arithShiftRightNat_congr", 24, 24);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__4() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__4() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__3;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__3;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__5() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__5() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21), 1, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18), 1, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19(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; 
@@ -8022,9 +7694,9 @@ lean_dec(x_10);
 x_19 = lean_ctor_get(x_11, 0);
 lean_inc(x_19);
 lean_dec(x_11);
-x_20 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__5;
-x_21 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__2;
-x_22 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__4;
+x_20 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__5;
+x_21 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__2;
+x_22 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__4;
 x_23 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_shiftConstLikeReflection(x_19, x_1, x_20, x_21, x_22, x_3, x_4, x_5, x_6, x_7, x_8, x_18);
 return x_23;
 }
@@ -8060,7 +7732,7 @@ return x_27;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
 _start:
 {
 lean_object* x_5; 
@@ -8072,7 +7744,7 @@ lean_ctor_set(x_5, 3, x_4);
 return x_5;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8080,20 +7752,20 @@ x_1 = lean_mk_string_unchecked("shiftRight", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__1;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__3() {
 _start:
 {
 lean_object* x_1; 
@@ -8101,40 +7773,40 @@ x_1 = lean_mk_string_unchecked("shiftRight_congr", 16, 16);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__4() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__4() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__3;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__3;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__5() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__5() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23), 4, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20), 4, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24(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) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21(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:
 {
 lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; 
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__5;
-x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__2;
-x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__4;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__5;
+x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__2;
+x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__4;
 x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_shiftReflection(x_1, x_2, x_11, x_12, x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 return x_14;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25(lean_object* x_1) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; 
@@ -8143,7 +7815,7 @@ lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8151,20 +7823,20 @@ x_1 = lean_mk_string_unchecked("shiftRightConst", 15, 15);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__4;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__4;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__1;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__3() {
 _start:
 {
 lean_object* x_1; 
@@ -8172,29 +7844,29 @@ x_1 = lean_mk_string_unchecked("shiftRightNat_congr", 19, 19);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__4() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__4() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__3;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__3;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__5() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__5() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25), 1, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22), 1, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26(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) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23(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:
 {
 lean_object* x_11; 
@@ -8217,7 +7889,7 @@ lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16;
 x_13 = lean_ctor_get(x_11, 1);
 lean_inc(x_13);
 lean_dec(x_11);
-x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1;
+x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__1;
 x_15 = l_Lean_Expr_cleanupAnnotations(x_1);
 x_16 = l_Lean_Expr_isApp(x_15);
 if (x_16 == 0)
@@ -8234,7 +7906,7 @@ else
 {
 lean_object* x_19; lean_object* x_20; uint8_t x_21; 
 x_19 = l_Lean_Expr_appFnCleanup(x_15, lean_box(0));
-x_20 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__2;
+x_20 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__5;
 x_21 = l_Lean_Expr_isConstOf(x_19, x_20);
 lean_dec(x_19);
 if (x_21 == 0)
@@ -8250,7 +7922,7 @@ else
 {
 lean_object* x_24; lean_object* x_25; 
 x_24 = lean_box(0);
-x_25 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24(x_3, x_2, x_24, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
+x_25 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21(x_3, x_2, x_24, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
 return x_25;
 }
 }
@@ -8262,9 +7934,9 @@ lean_dec(x_12);
 x_26 = lean_ctor_get(x_11, 1);
 lean_inc(x_26);
 lean_dec(x_11);
-x_27 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__5;
-x_28 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__2;
-x_29 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__4;
+x_27 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__5;
+x_28 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__2;
+x_29 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__4;
 x_30 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_shiftConstReflection(x_1, x_3, x_2, x_27, x_28, x_29, x_4, x_5, x_6, x_7, x_8, x_9, x_26);
 return x_30;
 }
@@ -8302,7 +7974,7 @@ return x_34;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
 _start:
 {
 lean_object* x_5; 
@@ -8314,7 +7986,7 @@ lean_ctor_set(x_5, 3, x_4);
 return x_5;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8322,20 +7994,20 @@ x_1 = lean_mk_string_unchecked("shiftLeft", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__1;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__3() {
 _start:
 {
 lean_object* x_1; 
@@ -8343,40 +8015,40 @@ x_1 = lean_mk_string_unchecked("shiftLeft_congr", 15, 15);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__4() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__4() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__3;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__3;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__5() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__5() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27), 4, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24), 4, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28(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) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25(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:
 {
 lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; 
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__5;
-x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__2;
-x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__4;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__5;
+x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__2;
+x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__4;
 x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_shiftReflection(x_1, x_2, x_11, x_12, x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 return x_14;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29(lean_object* x_1) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; 
@@ -8385,7 +8057,7 @@ lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8393,20 +8065,20 @@ x_1 = lean_mk_string_unchecked("shiftLeftConst", 14, 14);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__4;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__4;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__1;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__3() {
 _start:
 {
 lean_object* x_1; 
@@ -8414,29 +8086,29 @@ x_1 = lean_mk_string_unchecked("shiftLeftNat_congr", 18, 18);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__4() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__4() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__3;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__3;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__5() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__5() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29), 1, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26), 1, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30(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) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27(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:
 {
 lean_object* x_11; 
@@ -8459,7 +8131,7 @@ lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16;
 x_13 = lean_ctor_get(x_11, 1);
 lean_inc(x_13);
 lean_dec(x_11);
-x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1;
+x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__1;
 x_15 = l_Lean_Expr_cleanupAnnotations(x_1);
 x_16 = l_Lean_Expr_isApp(x_15);
 if (x_16 == 0)
@@ -8476,7 +8148,7 @@ else
 {
 lean_object* x_19; lean_object* x_20; uint8_t x_21; 
 x_19 = l_Lean_Expr_appFnCleanup(x_15, lean_box(0));
-x_20 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__2;
+x_20 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__5;
 x_21 = l_Lean_Expr_isConstOf(x_19, x_20);
 lean_dec(x_19);
 if (x_21 == 0)
@@ -8492,7 +8164,7 @@ else
 {
 lean_object* x_24; lean_object* x_25; 
 x_24 = lean_box(0);
-x_25 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28(x_3, x_2, x_24, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
+x_25 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25(x_3, x_2, x_24, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
 return x_25;
 }
 }
@@ -8504,9 +8176,9 @@ lean_dec(x_12);
 x_26 = lean_ctor_get(x_11, 1);
 lean_inc(x_26);
 lean_dec(x_11);
-x_27 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__5;
-x_28 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__2;
-x_29 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__4;
+x_27 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__5;
+x_28 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__2;
+x_29 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__4;
 x_30 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_shiftConstReflection(x_1, x_3, x_2, x_27, x_28, x_29, x_4, x_5, x_6, x_7, x_8, x_9, x_26);
 return x_30;
 }
@@ -8544,7 +8216,7 @@ return x_34;
 }
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8552,31 +8224,31 @@ x_1 = lean_mk_string_unchecked("not_congr", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__2() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28(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) {
 _start:
 {
 lean_object* x_9; lean_object* x_10; lean_object* x_11; 
 x_9 = lean_box(0);
-x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__2;
+x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__2;
 x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_unaryReflection(x_1, x_9, x_10, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
 return x_11;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8584,31 +8256,31 @@ x_1 = lean_mk_string_unchecked("umod_congr", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29___closed__2() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29(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:
 {
 uint8_t x_10; lean_object* x_11; lean_object* x_12; 
 x_10 = 6;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32___closed__2;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29___closed__2;
 x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection(x_1, x_2, x_10, x_11, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
 return x_12;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8616,31 +8288,31 @@ x_1 = lean_mk_string_unchecked("udiv_congr", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__2() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30(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:
 {
 uint8_t x_10; lean_object* x_11; lean_object* x_12; 
 x_10 = 5;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33___closed__2;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__2;
 x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection(x_1, x_2, x_10, x_11, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
 return x_12;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8648,31 +8320,31 @@ x_1 = lean_mk_string_unchecked("mul_congr", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__2() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31(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:
 {
 uint8_t x_10; lean_object* x_11; lean_object* x_12; 
 x_10 = 4;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34___closed__2;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__2;
 x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection(x_1, x_2, x_10, x_11, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
 return x_12;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8680,31 +8352,31 @@ x_1 = lean_mk_string_unchecked("add_congr", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32___closed__2() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32(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:
 {
 uint8_t x_10; lean_object* x_11; lean_object* x_12; 
 x_10 = 3;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__2;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32___closed__2;
 x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection(x_1, x_2, x_10, x_11, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
 return x_12;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8712,31 +8384,31 @@ x_1 = lean_mk_string_unchecked("xor_congr", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33___closed__2() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33(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:
 {
 uint8_t x_10; lean_object* x_11; lean_object* x_12; 
 x_10 = 2;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36___closed__2;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33___closed__2;
 x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection(x_1, x_2, x_10, x_11, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
 return x_12;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8744,31 +8416,31 @@ x_1 = lean_mk_string_unchecked("or_congr", 8, 8);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34___closed__2() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34(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:
 {
 uint8_t x_10; lean_object* x_11; lean_object* x_12; 
 x_10 = 1;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37___closed__2;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34___closed__2;
 x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection(x_1, x_2, x_10, x_11, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
 return x_12;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8776,31 +8448,31 @@ x_1 = lean_mk_string_unchecked("and_congr", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__2() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35(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:
 {
 uint8_t x_10; lean_object* x_11; lean_object* x_12; 
 x_10 = 0;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38___closed__2;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__2;
 x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection(x_1, x_2, x_10, x_11, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
 return x_12;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__39(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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36(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; 
@@ -8812,7 +8484,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___boxed), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___boxed), 9, 0);
 return x_1;
 }
 }
@@ -8820,7 +8492,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___boxed), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___boxed), 9, 0);
 return x_1;
 }
 }
@@ -8828,7 +8500,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10), 10, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7), 10, 0);
 return x_1;
 }
 }
@@ -8836,7 +8508,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___boxed), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___boxed), 9, 0);
 return x_1;
 }
 }
@@ -8844,7 +8516,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11), 9, 0);
 return x_1;
 }
 }
@@ -8852,7 +8524,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13), 9, 0);
 return x_1;
 }
 }
@@ -8860,7 +8532,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15), 9, 0);
 return x_1;
 }
 }
@@ -8868,7 +8540,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17), 9, 0);
 return x_1;
 }
 }
@@ -8876,7 +8548,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___boxed), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___boxed), 9, 0);
 return x_1;
 }
 }
@@ -8884,7 +8556,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26), 10, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23), 10, 0);
 return x_1;
 }
 }
@@ -8892,7 +8564,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30), 10, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27), 10, 0);
 return x_1;
 }
 }
@@ -8900,7 +8572,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31), 8, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28), 8, 0);
 return x_1;
 }
 }
@@ -8908,7 +8580,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29), 9, 0);
 return x_1;
 }
 }
@@ -8916,7 +8588,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30), 9, 0);
 return x_1;
 }
 }
@@ -8924,7 +8596,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31), 9, 0);
 return x_1;
 }
 }
@@ -8932,7 +8604,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__32), 9, 0);
 return x_1;
 }
 }
@@ -8940,7 +8612,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__33), 9, 0);
 return x_1;
 }
 }
@@ -8948,7 +8620,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__34), 9, 0);
 return x_1;
 }
 }
@@ -8956,7 +8628,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35), 9, 0);
 return x_1;
 }
 }
@@ -8972,7 +8644,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__20;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
@@ -8982,8 +8654,8 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__5;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__5;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
@@ -8992,8 +8664,8 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
@@ -9002,8 +8674,8 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
@@ -9012,8 +8684,8 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
@@ -9022,8 +8694,8 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
@@ -9040,7 +8712,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__27;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
@@ -9084,7 +8756,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__32;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
@@ -9102,7 +8774,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__34;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
@@ -9398,7 +9070,7 @@ x_27 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__16;
 x_28 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__17;
 x_29 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__18;
 x_30 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__19;
-x_31 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1;
+x_31 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__1;
 x_32 = l_Lean_Expr_cleanupAnnotations(x_10);
 x_33 = l_Lean_Expr_isApp(x_32);
 if (x_33 == 0)
@@ -9503,239 +9175,240 @@ return x_66;
 }
 else
 {
-lean_object* x_67; lean_object* x_68; lean_object* x_69; uint8_t x_70; 
-x_67 = l_Lean_Expr_appArg(x_49, lean_box(0));
-x_68 = l_Lean_Expr_appFnCleanup(x_49, lean_box(0));
-x_69 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__33;
-x_70 = l_Lean_Expr_isConstOf(x_68, x_69);
-if (x_70 == 0)
+lean_object* x_67; lean_object* x_68; uint8_t x_69; 
+x_67 = l_Lean_Expr_appFnCleanup(x_49, lean_box(0));
+x_68 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__18;
+x_69 = l_Lean_Expr_isConstOf(x_67, x_68);
+if (x_69 == 0)
 {
-lean_object* x_71; uint8_t x_72; 
-lean_dec(x_48);
-x_71 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__35;
-x_72 = l_Lean_Expr_isConstOf(x_68, x_71);
-if (x_72 == 0)
+lean_object* x_70; uint8_t x_71; 
+lean_dec(x_1);
+x_70 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__33;
+x_71 = l_Lean_Expr_isConstOf(x_67, x_70);
+if (x_71 == 0)
 {
-uint8_t x_73; 
-x_73 = l_Lean_Expr_isApp(x_68);
+lean_object* x_72; uint8_t x_73; 
+lean_dec(x_48);
+x_72 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__35;
+x_73 = l_Lean_Expr_isConstOf(x_67, x_72);
 if (x_73 == 0)
 {
-lean_object* x_74; lean_object* x_75; 
-lean_dec(x_68);
+uint8_t x_74; 
+x_74 = l_Lean_Expr_isApp(x_67);
+if (x_74 == 0)
+{
+lean_object* x_75; lean_object* x_76; 
 lean_dec(x_67);
 lean_dec(x_41);
 lean_dec(x_36);
-lean_dec(x_1);
-x_74 = lean_box(0);
-x_75 = lean_apply_8(x_31, x_74, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
-return x_75;
+x_75 = lean_box(0);
+x_76 = lean_apply_8(x_31, x_75, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+return x_76;
 }
 else
 {
-lean_object* x_76; lean_object* x_77; lean_object* x_78; uint8_t x_79; 
-x_76 = l_Lean_Expr_appArg(x_68, lean_box(0));
-x_77 = l_Lean_Expr_appFnCleanup(x_68, lean_box(0));
-x_78 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__19;
-x_79 = l_Lean_Expr_isConstOf(x_77, x_78);
+lean_object* x_77; lean_object* x_78; uint8_t x_79; 
+x_77 = l_Lean_Expr_appArg(x_67, lean_box(0));
+x_78 = l_Lean_Expr_appFnCleanup(x_67, lean_box(0));
+x_79 = l_Lean_Expr_isApp(x_78);
 if (x_79 == 0)
 {
-uint8_t x_80; 
-lean_dec(x_67);
-lean_dec(x_1);
-x_80 = l_Lean_Expr_isApp(x_77);
-if (x_80 == 0)
-{
-lean_object* x_81; lean_object* x_82; 
+lean_object* x_80; lean_object* x_81; 
+lean_dec(x_78);
 lean_dec(x_77);
-lean_dec(x_76);
 lean_dec(x_41);
 lean_dec(x_36);
-x_81 = lean_box(0);
-x_82 = lean_apply_8(x_31, x_81, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
-return x_82;
+x_80 = lean_box(0);
+x_81 = lean_apply_8(x_31, x_80, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+return x_81;
 }
 else
 {
-lean_object* x_83; lean_object* x_84; uint8_t x_85; 
-x_83 = l_Lean_Expr_appFnCleanup(x_77, lean_box(0));
-x_84 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__38;
-x_85 = l_Lean_Expr_isConstOf(x_83, x_84);
-if (x_85 == 0)
+lean_object* x_82; lean_object* x_83; uint8_t x_84; 
+x_82 = l_Lean_Expr_appFnCleanup(x_78, lean_box(0));
+x_83 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__38;
+x_84 = l_Lean_Expr_isConstOf(x_82, x_83);
+if (x_84 == 0)
 {
-lean_object* x_86; uint8_t x_87; 
-x_86 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__41;
-x_87 = l_Lean_Expr_isConstOf(x_83, x_86);
-if (x_87 == 0)
-{
-lean_object* x_88; uint8_t x_89; 
-x_88 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__44;
-x_89 = l_Lean_Expr_isConstOf(x_83, x_88);
-if (x_89 == 0)
-{
-lean_object* x_90; uint8_t x_91; 
-lean_dec(x_76);
-x_90 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__47;
-x_91 = l_Lean_Expr_isConstOf(x_83, x_90);
-if (x_91 == 0)
-{
-lean_object* x_92; uint8_t x_93; 
-x_92 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__50;
-x_93 = l_Lean_Expr_isConstOf(x_83, x_92);
-if (x_93 == 0)
-{
-lean_object* x_94; uint8_t x_95; 
-x_94 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__53;
-x_95 = l_Lean_Expr_isConstOf(x_83, x_94);
-if (x_95 == 0)
+lean_object* x_85; uint8_t x_86; 
+x_85 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__41;
+x_86 = l_Lean_Expr_isConstOf(x_82, x_85);
+if (x_86 == 0)
 {
-lean_object* x_96; uint8_t x_97; 
-x_96 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__56;
-x_97 = l_Lean_Expr_isConstOf(x_83, x_96);
-if (x_97 == 0)
+lean_object* x_87; uint8_t x_88; 
+x_87 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__44;
+x_88 = l_Lean_Expr_isConstOf(x_82, x_87);
+if (x_88 == 0)
 {
-lean_object* x_98; uint8_t x_99; 
-x_98 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__59;
-x_99 = l_Lean_Expr_isConstOf(x_83, x_98);
-if (x_99 == 0)
+lean_object* x_89; uint8_t x_90; 
+lean_dec(x_77);
+x_89 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__47;
+x_90 = l_Lean_Expr_isConstOf(x_82, x_89);
+if (x_90 == 0)
 {
-lean_object* x_100; uint8_t x_101; 
-x_100 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__62;
-x_101 = l_Lean_Expr_isConstOf(x_83, x_100);
-if (x_101 == 0)
+lean_object* x_91; uint8_t x_92; 
+x_91 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__50;
+x_92 = l_Lean_Expr_isConstOf(x_82, x_91);
+if (x_92 == 0)
 {
-lean_object* x_102; uint8_t x_103; 
-x_102 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__65;
-x_103 = l_Lean_Expr_isConstOf(x_83, x_102);
-lean_dec(x_83);
-if (x_103 == 0)
+lean_object* x_93; uint8_t x_94; 
+x_93 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__53;
+x_94 = l_Lean_Expr_isConstOf(x_82, x_93);
+if (x_94 == 0)
+{
+lean_object* x_95; uint8_t x_96; 
+x_95 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__56;
+x_96 = l_Lean_Expr_isConstOf(x_82, x_95);
+if (x_96 == 0)
+{
+lean_object* x_97; uint8_t x_98; 
+x_97 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__59;
+x_98 = l_Lean_Expr_isConstOf(x_82, x_97);
+if (x_98 == 0)
 {
-lean_object* x_104; lean_object* x_105; 
+lean_object* x_99; uint8_t x_100; 
+x_99 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__62;
+x_100 = l_Lean_Expr_isConstOf(x_82, x_99);
+if (x_100 == 0)
+{
+lean_object* x_101; uint8_t x_102; 
+x_101 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__65;
+x_102 = l_Lean_Expr_isConstOf(x_82, x_101);
+lean_dec(x_82);
+if (x_102 == 0)
+{
+lean_object* x_103; lean_object* x_104; 
 lean_dec(x_41);
 lean_dec(x_36);
-x_104 = lean_box(0);
-x_105 = lean_apply_8(x_31, x_104, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+x_103 = lean_box(0);
+x_104 = lean_apply_8(x_31, x_103, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+return x_104;
+}
+else
+{
+lean_object* x_105; 
+x_105 = lean_apply_9(x_30, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_105;
 }
+}
 else
 {
 lean_object* x_106; 
-x_106 = lean_apply_9(x_30, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+lean_dec(x_82);
+x_106 = lean_apply_9(x_29, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_106;
 }
 }
 else
 {
 lean_object* x_107; 
-lean_dec(x_83);
-x_107 = lean_apply_9(x_29, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+lean_dec(x_82);
+x_107 = lean_apply_9(x_28, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_107;
 }
 }
 else
 {
 lean_object* x_108; 
-lean_dec(x_83);
-x_108 = lean_apply_9(x_28, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+lean_dec(x_82);
+x_108 = lean_apply_9(x_27, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_108;
 }
 }
 else
 {
 lean_object* x_109; 
-lean_dec(x_83);
-x_109 = lean_apply_9(x_27, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+lean_dec(x_82);
+x_109 = lean_apply_9(x_26, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_109;
 }
 }
 else
 {
 lean_object* x_110; 
-lean_dec(x_83);
-x_110 = lean_apply_9(x_26, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+lean_dec(x_82);
+x_110 = lean_apply_9(x_25, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_110;
 }
 }
 else
 {
 lean_object* x_111; 
-lean_dec(x_83);
-x_111 = lean_apply_9(x_25, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+lean_dec(x_82);
+x_111 = lean_apply_9(x_24, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_111;
 }
 }
 else
 {
 lean_object* x_112; 
-lean_dec(x_83);
-x_112 = lean_apply_9(x_24, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+lean_dec(x_82);
+x_112 = lean_apply_10(x_22, x_77, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_112;
 }
 }
 else
 {
 lean_object* x_113; 
-lean_dec(x_83);
-x_113 = lean_apply_10(x_22, x_76, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+lean_dec(x_82);
+x_113 = lean_apply_10(x_21, x_77, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_113;
 }
 }
 else
 {
 lean_object* x_114; 
-lean_dec(x_83);
-x_114 = lean_apply_10(x_21, x_76, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+lean_dec(x_82);
+lean_dec(x_77);
+x_114 = lean_apply_9(x_16, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_114;
 }
 }
+}
+}
 else
 {
 lean_object* x_115; 
-lean_dec(x_83);
-lean_dec(x_76);
-x_115 = lean_apply_9(x_16, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+lean_dec(x_67);
+x_115 = lean_apply_9(x_19, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_115;
 }
 }
-}
 else
 {
 lean_object* x_116; 
-lean_dec(x_77);
-lean_dec(x_76);
-x_116 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__4(x_1, x_67, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+lean_dec(x_67);
+x_116 = lean_apply_10(x_14, x_48, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_116;
 }
 }
-}
 else
 {
 lean_object* x_117; 
-lean_dec(x_68);
 lean_dec(x_67);
-lean_dec(x_1);
-x_117 = lean_apply_9(x_19, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+x_117 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__1(x_1, x_48, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_117;
 }
 }
+}
 else
 {
 lean_object* x_118; 
-lean_dec(x_68);
-lean_dec(x_67);
+lean_dec(x_49);
+lean_dec(x_48);
+lean_dec(x_41);
 lean_dec(x_1);
-x_118 = lean_apply_10(x_14, x_48, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+x_118 = lean_apply_8(x_23, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_118;
 }
 }
-}
 else
 {
 lean_object* x_119; 
 lean_dec(x_49);
 lean_dec(x_48);
-lean_dec(x_41);
 lean_dec(x_1);
-x_119 = lean_apply_8(x_23, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+x_119 = lean_apply_9(x_20, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_119;
 }
 }
@@ -9745,7 +9418,7 @@ lean_object* x_120;
 lean_dec(x_49);
 lean_dec(x_48);
 lean_dec(x_1);
-x_120 = lean_apply_9(x_20, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+x_120 = lean_apply_9(x_18, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_120;
 }
 }
@@ -9755,7 +9428,7 @@ lean_object* x_121;
 lean_dec(x_49);
 lean_dec(x_48);
 lean_dec(x_1);
-x_121 = lean_apply_9(x_18, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+x_121 = lean_apply_9(x_17, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_121;
 }
 }
@@ -9765,7 +9438,7 @@ lean_object* x_122;
 lean_dec(x_49);
 lean_dec(x_48);
 lean_dec(x_1);
-x_122 = lean_apply_9(x_17, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+x_122 = lean_apply_9(x_15, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_122;
 }
 }
@@ -9775,7 +9448,7 @@ lean_object* x_123;
 lean_dec(x_49);
 lean_dec(x_48);
 lean_dec(x_1);
-x_123 = lean_apply_9(x_15, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+x_123 = lean_apply_9(x_13, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_123;
 }
 }
@@ -9785,30 +9458,20 @@ lean_object* x_124;
 lean_dec(x_49);
 lean_dec(x_48);
 lean_dec(x_1);
-x_124 = lean_apply_9(x_13, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
+x_124 = lean_apply_9(x_12, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
 return x_124;
 }
 }
-else
-{
-lean_object* x_125; 
-lean_dec(x_49);
-lean_dec(x_48);
-lean_dec(x_1);
-x_125 = lean_apply_9(x_12, x_41, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_11);
-return x_125;
-}
-}
 }
 else
 {
-lean_object* x_126; 
+lean_object* x_125; 
 lean_dec(x_42);
 lean_dec(x_41);
 lean_dec(x_36);
 lean_dec(x_2);
-x_126 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_goBvLit(x_1, x_3, x_4, x_5, x_6, x_7, x_11);
-return x_126;
+x_125 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_goBvLit(x_1, x_3, x_4, x_5, x_6, x_7, x_11);
+return x_125;
 }
 }
 }
@@ -9826,10 +9489,10 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__1;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
@@ -9857,11 +9520,11 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
 x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__4;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__13;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__15;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
@@ -9888,9 +9551,9 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
 x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__4;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__7;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
@@ -9911,11 +9574,11 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
 x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__4;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__11;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__13;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
@@ -9942,9 +9605,9 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
 x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__4;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__12;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
@@ -9973,9 +9636,9 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
 x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__4;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__15;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
@@ -10004,9 +9667,9 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
 x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__4;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__18;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
@@ -10035,9 +9698,9 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
 x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__4;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_binaryReflection___closed__21;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
@@ -10398,10 +10061,10 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_unaryReflection___closed__1;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
@@ -10421,11 +10084,11 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__4;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__9;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2;
+x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3;
+x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__4;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__11;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
@@ -10445,7 +10108,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__2;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__2;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
@@ -10455,7 +10118,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__2;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__2;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
@@ -10465,7 +10128,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__2;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__2;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
@@ -10475,7 +10138,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__6;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__6;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
@@ -10485,7 +10148,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__2;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__2;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
@@ -12112,20 +11775,29 @@ x_9 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_goOrAtom(x_1, x_2
 return x_9;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__1___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, lean_object* x_10, lean_object* x_11) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__2___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_12; 
-x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-lean_dec(x_4);
-return x_12;
+lean_object* x_10; 
+x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__2(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_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_3);
+return x_11;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__2___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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4___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) {
 _start:
 {
 lean_object* x_9; 
-x_9 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
+x_9 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
 lean_dec(x_7);
 lean_dec(x_6);
 lean_dec(x_5);
@@ -12136,38 +11808,11 @@ lean_dec(x_1);
 return x_9;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
-_start:
-{
-lean_object* x_13; 
-x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-lean_dec(x_5);
-return x_13;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__6___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_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__6(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_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__7___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, lean_object* x_10) {
-_start:
-{
-lean_object* x_11; 
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__7(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_3);
-return x_11;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__12___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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__9___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) {
 _start:
 {
 lean_object* x_9; 
-x_9 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__12(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
+x_9 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__9(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
 lean_dec(x_7);
 lean_dec(x_6);
 lean_dec(x_5);
@@ -12178,11 +11823,11 @@ lean_dec(x_1);
 return x_9;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__13___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_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__10___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) {
 _start:
 {
 lean_object* x_9; 
-x_9 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__13(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
+x_9 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__10(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
 lean_dec(x_7);
 lean_dec(x_6);
 lean_dec(x_5);
@@ -12231,52 +11876,34 @@ x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_binaryReflection(x_
 return x_12;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
-_start:
-{
-lean_object* x_13; 
-x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-lean_dec(x_5);
-return x_13;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
-_start:
-{
-lean_object* x_14; 
-x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
-lean_dec(x_6);
-return x_14;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___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) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3(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_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___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) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5(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_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___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) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
 lean_dec(x_1);
 return x_10;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___boxed(lean_object** _args) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___boxed(lean_object** _args) {
 lean_object* x_1 = _args[0];
 lean_object* x_2 = _args[1];
 lean_object* x_3 = _args[2];
@@ -12297,42 +11924,42 @@ lean_object* x_17 = _args[16];
 _start:
 {
 lean_object* x_18; 
-x_18 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
+x_18 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
 return x_18;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___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) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19(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_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___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, lean_object* x_10) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___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, lean_object* x_10) {
 _start:
 {
 lean_object* x_11; 
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 lean_dec(x_3);
 return x_11;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___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, lean_object* x_10) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___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, lean_object* x_10) {
 _start:
 {
 lean_object* x_11; 
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 lean_dec(x_3);
 return x_11;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__39___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) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36___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_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__39(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
 lean_dec(x_3);
 lean_dec(x_2);
 return x_10;
@@ -12370,24 +11997,16 @@ lean_dec_ref(res);
 res = initialize_Lean_Elab_Tactic_BVDecide_Frontend_BVDecide_ReifiedLemmas(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__2();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__3);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__4();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__3___closed__4);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__4___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__2();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__8___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__4);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__5();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___lambda__5___closed__5);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__2();
@@ -12426,6 +12045,10 @@ l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__18 = _init
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__18);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__19 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__19();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__19);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__20 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__20();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__20);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__21 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__21();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVLogical_of_go___closed__21);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__2();
@@ -12440,148 +12063,160 @@ l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__6 = _init_l_L
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__6);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__7 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__7();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVPred_of_go___closed__7);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__4);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__5();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__5);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__6 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__6();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__6);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__7);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__8 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__8();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__8);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__9 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__9();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__9);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__10 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__10();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__3___closed__10);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__4);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__5();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__5___closed__5);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__3);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__4();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__4);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__5();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__5);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__6 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__6();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__6);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__7);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__8 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__8();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__8);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__9 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__9();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__9);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__10 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__10();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__6___closed__10);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__7___closed__4);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__3);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__4();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__4);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__5();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__8___closed__5);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__9___closed__3);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__3);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__4();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__10___closed__4);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__11___closed__3);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__12___closed__3);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__13___closed__3);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__14___closed__3);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__2();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__16___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__15___closed__3);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__2();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__18___closed__3);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__2();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__3);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__4();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__4);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__5();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__20___closed__5);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__2();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__3);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__4();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__4);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__5();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__22___closed__5);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__2();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__3);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__4();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__4);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__5();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__24___closed__5);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__2();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__3);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__4();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__4);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__5();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__26___closed__5);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__4);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__5();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__17___closed__5);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__4);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__5();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__19___closed__5);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__4);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__5();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__21___closed__5);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__4);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__5();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__23___closed__5);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__4);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__5();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__25___closed__5);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__4);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__5();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__27___closed__5);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__3);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__4();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__4);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__5();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__28___closed__5);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__29___closed__2);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__3);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__4();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__4);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__5();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__30___closed__5);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__31___closed__2();
@@ -12602,18 +12237,6 @@ l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__35___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36___closed__2();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__36___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37___closed__2();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__37___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38___closed__2();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___lambda__38___closed__2);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_ReifiedBVExpr_of_go___closed__2();
diff --git a/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/Normalize.c b/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/Normalize.c
index 3cb1d4e487da..9b023f704a1a 100644
--- a/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/Normalize.c
+++ b/stage0/stdlib/Lean/Elab/Tactic/BVDecide/Frontend/Normalize.c
@@ -14,115 +14,119 @@
 extern "C" {
 #endif
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize___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___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__2;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___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_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__5;
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___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*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__1___closed__5;
 lean_object* l_Lean_Expr_const___override(lean_object*, lean_object*);
 static lean_object* l_List_foldlM___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__3___lambda__2___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass___elambda__1___closed__2;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__15;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__10;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_passPipeline___lambda__1(lean_object*, lean_object*);
 lean_object* l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1044____closed__1;
+lean_object* l_Lean_Meta_Simp_Result_getProof(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1023_(lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__11;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__3;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660_(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bvNormalize___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_mkNatLit(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bvNormalize___lambda__1___closed__3;
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___spec__1___lambda__1(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_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__8;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__12;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__1;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__4;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__4;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351_(lean_object*);
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___spec__1(lean_object*, lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_mk_empty_array_with_capacity(lean_object*);
 lean_object* l_Lean_mkAppN(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__1;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__13;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___lambda__1___closed__5;
 extern lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_bvNormalizeExt;
 static lean_object* l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___lambda__3___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_mkPow___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_mkPow___closed__3;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__6;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__5;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__3;
 lean_object* l_Lean_Meta_getNatValue_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 extern lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_bvNormalizeSimprocExt;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bvNormalize___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__1___closed__8;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__9;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__13;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__4;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__8;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___lambda__1___closed__4;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__8;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_mkLt(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__6;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3823____closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
 static lean_object* l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___lambda__4___closed__3;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__1;
 double lean_float_div(double, double);
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___spec__1___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass___closed__1;
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_678_(lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__13;
 lean_object* l_Lean_mkAppB(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__11;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___closed__4;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__4;
 size_t lean_uint64_to_usize(uint64_t);
 LEAN_EXPORT lean_object* l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___lambda__4(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387_(lean_object*);
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___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_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass___elambda__1___spec__1(lean_object*, lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__7;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___closed__7;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__6;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass(lean_object*);
 uint8_t l_Lean_Expr_isApp(lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__20;
 lean_object* l_Lean_Name_toString(lean_object*, uint8_t, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__8;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__2;
 uint8_t l_Std_DHashMap_Internal_AssocList_contains___at_Lean_CollectFVars_visit___spec__1(lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___closed__5;
 extern lean_object* l_Lean_Elab_Tactic_tacticElabAttribute;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___closed__2;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__4;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5;
 lean_object* lean_array_push(lean_object*, lean_object*);
 lean_object* l_Lean_Meta_simpGoal(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_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass___elambda__1___closed__7;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__6;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__8;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__1;
 lean_object* lean_mk_array(lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__1;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__12;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__11;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__7;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___closed__3;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__13;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__8;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__1;
 static double l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___lambda__2___closed__1;
-static lean_object* l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__4;
 static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize__1___closed__3;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___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___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952_(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__1___closed__7;
 lean_object* l_Lean_Elab_Tactic_getMainGoal(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__1;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_acNormalizePass;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__6;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__8;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821_(lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__3;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__8;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass___elambda__1___lambda__1___closed__2;
 uint8_t lean_float_decLt(double, double);
 static lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_acNormalizePass___elambda__1___spec__1___closed__1;
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___spec__1___lambda__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*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__9;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___closed__2;
 LEAN_EXPORT lean_object* l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___lambda__2(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, double, double, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__5;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__6;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___lambda__1___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_acNormalizePass___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bvNormalize(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__12;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__16;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__13;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__4;
 lean_object* lean_io_get_num_heartbeats(lean_object*);
 uint8_t l_Lean_Syntax_isOfKind(lean_object*, lean_object*);
@@ -132,80 +136,91 @@ extern lean_object* l_Lean_trace_profiler_useHeartbeats;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_passPipeline___closed__1;
 lean_object* l_Lean_stringToMessageData(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___closed__3;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___lambda__1___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_passPipeline___lambda__2___closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__12;
 lean_object* l_Lean_mkApp4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_678____closed__1;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__1(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_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___lambda__1___closed__4;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Std_DHashMap_Internal_Raw_u2080_expand___at_Lean_CollectFVars_visit___spec__2(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___closed__6;
 LEAN_EXPORT lean_object* l_List_foldlM___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__3___lambda__1___boxed(lean_object*);
 lean_object* l_Lean_Meta_getSimpCongrTheorems___rarg(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__14;
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2609_(lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__6;
 lean_object* l_Lean_Level_ofNat(lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__12;
 LEAN_EXPORT lean_object* l_MonadExcept_ofExcept___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__11;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__13;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__5;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__2;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__14;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___lambda__1___closed__3;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__3;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__8;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1023____closed__1;
 lean_object* l_Lean_Name_mkStr3(lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__21;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__3;
 lean_object* l_List_appendTR___rarg(lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__6;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__9;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___lambda__1___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__1___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__1___closed__3;
 size_t lean_usize_of_nat(lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__5;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___lambda__1___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4167____closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__6;
 lean_object* l_Lean_MVarId_getNondepPropHyps(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__2;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__6;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__10;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__10;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__4;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__1;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__4;
 static lean_object* l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___lambda__4___closed__2;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__12;
 uint8_t l_instDecidableNot___rarg(uint8_t);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__11;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__1___closed__7;
 lean_object* l_Lean_Name_mkStr7(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_657____closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__10;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___closed__2;
 lean_object* l_BitVec_neg(lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass___elambda__1___closed__11;
 lean_object* lean_st_ref_take(lean_object*, lean_object*);
 lean_object* l___private_Lean_Util_Trace_0__Lean_getResetTraces___at_Lean_Meta_processPostponed___spec__2___rarg(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___lambda__3(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, uint8_t, double, double, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312_(lean_object*);
 extern lean_object* l_Lean_Meta_sevalSimpExtension;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__9;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__12;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__7;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__13;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___lambda__1___closed__4;
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1317_(lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__1___closed__6;
 uint64_t lean_uint64_shift_right(uint64_t, uint64_t);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bvNormalize___lambda__3___closed__1;
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_acNormalizePass___elambda__1___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Simp_SimprocExtension_getSimprocs(lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__3;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___lambda__1___closed__2;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__14;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_acNormalizePass___elambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_nat_div(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Option_get___at_Lean_profiler_threshold_getSecs___spec__1(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4510_(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___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_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass___closed__4;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__1___closed__4;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__11;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___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* l___private_Lean_Util_Trace_0__Lean_addTraceNode___at_Lean_Meta_processPostponed___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_acNormalizePass___elambda__1___spec__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_object*);
@@ -213,336 +228,1213 @@ lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_elabBVDecideConfig(lean_object
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bvNormalize___lambda__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__1___closed__1;
 LEAN_EXPORT lean_object* l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___lambda__1(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___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__8;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__5;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__14;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__10;
 static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize__1___closed__2;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__11;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__14;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__1;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__10;
 LEAN_EXPORT lean_object* l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___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_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__5___closed__1;
 lean_object* l_Lean_MessageData_ofFormat(lean_object*);
 lean_object* l_Lean_PersistentArray_append___rarg(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__9;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__3___closed__1;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__3;
 lean_object* l_Lean_MVarId_withContext___at___private_Lean_Meta_SynthInstance_0__Lean_Meta_synthPendingImp___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___closed__3;
 lean_object* l_Lean_Meta_getBitVecValue_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_BitVec_ofNat(lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__8;
 lean_object* l_Lean_Meta_AC_acNfHypMeta(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__3;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2085____closed__1;
 lean_object* l_Lean_Expr_appArg(lean_object*, lean_object*);
 lean_object* l_Lean_FVarId_getDecl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize(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___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_657_(lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___lambda__1___closed__6;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2609____closed__1;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___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_object*, lean_object*);
 lean_object* l_Lean_Meta_mkAppM(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__4;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__3___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___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__6;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__7;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___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___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4167_(lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__4;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__7;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__2;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2;
 lean_object* l_Lean_Meta_mkDecideProof(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_mkPow___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass___elambda__1___closed__10;
 lean_object* l_Lean_Meta_mkEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__2;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__7;
 lean_object* l_Lean_Expr_appFnCleanup(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__3;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___lambda__1(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_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___lambda__1___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___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1740_(lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__5;
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1044_(lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_acNormalizePass___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass___elambda__1___closed__8;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__13;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__5;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass___elambda__1___closed__5;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__2;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1662____closed__1;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___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*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__10;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__9;
 lean_object* lean_io_mono_nanos_now(lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__12;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__11;
 lean_object* l_Lean_Meta_Simp_getSEvalSimprocs___rarg(lean_object*, lean_object*);
 uint64_t l_Lean_Expr_hash(lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__5;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__10;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_FVarId_getType(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__14;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_passPipeline___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__7;
 static lean_object* l_List_foldlM___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__3___closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508_(lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__12;
 lean_object* l_BitVec_add(lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655_(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__11;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___closed__1;
 lean_object* l_Lean_Elab_throwUnsupportedSyntax___at_Lean_MVarId_elabFalseOrByContra___spec__1___rarg(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bvNormalize___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_splitAnds___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__7;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___lambda__1___closed__1;
 uint8_t lean_name_eq(lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___closed__4;
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315_(lean_object*);
 lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__9;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__7;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__1;
 lean_object* l_Lean_Meta_Simp_mkContext(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__3;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__2;
 uint8_t l_Lean_Option_get___at___private_Lean_Util_Profile_0__Lean_get__profiler___spec__1(lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__2;
 extern lean_object* l_Lean_trace_profiler_threshold;
 lean_object* l_Lean_Syntax_getArg(lean_object*, lean_object*);
 static lean_object* l_List_foldlM___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__3___lambda__2___closed__3;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__10;
 static double l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___lambda__4___closed__4;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_passPipeline___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__9;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__2;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__7;
 static lean_object* l_List_foldlM___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__3___lambda__2___closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__7;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bvNormalize___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__9;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__1___closed__4;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__5;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_passPipeline(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___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_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass___elambda__1___closed__4;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___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___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__7;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___lambda__1___closed__2;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass___elambda__1___lambda__1___closed__1;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass___elambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__3;
-LEAN_EXPORT lean_object* l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480_(lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__8;
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass___elambda__1___spec__1___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___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__1;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__3;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__6;
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476_(lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__6;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__6;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1(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_MonadExcept_ofExcept___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 extern lean_object* l_Lean_Meta_simpGlobalConfig;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1;
 static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize__1___closed__1;
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310_(lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__14;
 LEAN_EXPORT lean_object* l_List_foldlM___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__3___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__5;
 lean_object* l_Lean_Meta_SimpExtension_getTheorems(lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__15;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_acNormalizePass___closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize___closed__4;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__10;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__1___closed__6;
 double l_Float_ofScientific(lean_object*, uint8_t, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass___closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083_(lean_object*);
 lean_object* l_Lean_LocalDecl_userName(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1662_(lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_0__Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Nat_log2Exact___boxed(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___closed__4;
 lean_object* l_Lean_Name_mkStr6(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__11;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__8;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_passPipeline___lambda__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4510____closed__1;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__3;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1389_(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bvNormalize___lambda__1___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___lambda__1___closed__6;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___lambda__1___closed__1;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__5;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__8;
+lean_object* l_Lean_Expr_constLevels_x21(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___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_object*, lean_object*);
 static lean_object* l_List_foldlM___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__3___closed__1;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__3;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass___elambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___lambda__4___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass___elambda__1___closed__1;
+lean_object* l_Lean_Expr_app___override(lean_object*, lean_object*);
 lean_object* lean_nat_pow(lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___closed__1;
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607_(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__12;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__12;
 lean_object* l_Lean_Meta_Simp_registerBuiltinSimproc(lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__4;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2085_(lean_object*);
 uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349_(lean_object*);
 lean_object* l_Lean_mkApp3(lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_mkPow(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize___closed__1;
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738_(lean_object*);
 uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__9;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2954_(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___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_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__2;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__2;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__2(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_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bvNormalize___lambda__1___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__5;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__3;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__9;
 lean_object* l_Lean_Name_mkStr2(lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__15;
 lean_object* lean_nat_log2(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*);
-lean_object* l_reduceIte(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__8;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__16;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___lambda__1___closed__7;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__1;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__9;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__3;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__11;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__10;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__2;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__3;
 uint8_t l_Lean_Expr_isConstOf(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__2;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_splitAnds(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___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*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 LEAN_EXPORT lean_object* l___private_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_0__Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Nat_log2Exact(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass___elambda__1___closed__6;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__13;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__4;
 uint64_t lean_uint64_xor(uint64_t, uint64_t);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass___elambda__1___closed__3;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__5;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__3;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___lambda__2(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_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___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*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__19;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__1___closed__5;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__5___closed__2;
 lean_object* lean_nat_mul(lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___closed__3;
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3478_(lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__14;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___lambda__1___closed__5;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__3;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__9;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__16;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2954____closed__1;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___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*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__1;
 lean_object* l_Lean_Meta_instantiateMVarsIfMVarApp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_PersistentHashMap_mkEmptyEntriesArray(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__2;
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042_(lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__6;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__7;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__6;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass___closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__15;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___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_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___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_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 size_t lean_usize_sub(size_t, size_t);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__7;
 lean_object* lean_array_mk(lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1740____closed__1;
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___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_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2(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_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___lambda__3___closed__1;
 lean_object* l_Lean_MVarId_tryClearMany(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___closed__2;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__1;
 size_t lean_usize_add(size_t, size_t);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__4;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__5;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__2;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__1___closed__2;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___lambda__1___closed__5;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__2;
 LEAN_EXPORT lean_object* l_List_foldlM___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_array_uget(lean_object*, size_t);
 LEAN_EXPORT lean_object* l_List_foldlM___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__3___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Expr_fvar___override(lean_object*);
 size_t lean_array_size(lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_acNormalizePass___closed__2;
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676_(lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__3;
 extern lean_object* l_Lean_trace_profiler;
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___spec__1___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__2;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__10;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__4;
 lean_object* lean_st_ref_set(lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_addTrace___at_Lean_Meta_processPostponed_loop___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___closed__3;
 lean_object* l_Lean_Name_mkStr4(lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2;
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___spec__1___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_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__9;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___closed__1;
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165_(lean_object*);
 static double l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___lambda__4___closed__5;
 lean_object* lean_string_append(lean_object*, lean_object*);
 lean_object* l_Lean_isTracingEnabledFor___at_Lean_Meta_processPostponed_loop___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___lambda__1___closed__1;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__4;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__13;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___lambda__1___closed__2;
-static lean_object* l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__1;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass___elambda__1___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_array_get_size(lean_object*);
 lean_object* l_Lean_LocalDecl_toExpr(lean_object*);
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_embeddedConstraintPass___elambda__1___spec__1___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*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1389____closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__1___closed__3;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___closed__1;
 extern lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_builtinBVNormalizeSimprocsRef;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__1;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__15;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize___closed__3;
 uint8_t lean_nat_dec_le(lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__15;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_passPipeline___lambda__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__1___closed__1;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize___closed__5;
 uint8_t lean_usize_dec_lt(size_t, size_t);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bvNormalize___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__6;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___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_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__2;
 LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize__1(lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__11;
 lean_object* lean_nat_add(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3478____closed__1;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__10;
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__10;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__2;
 lean_object* l_Lean_MVarId_assertHypotheses(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__6;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___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_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__5;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__5;
 lean_object* l_Lean_Meta_SimpTheoremsArray_addTheorem(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__4;
-static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__13;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_passPipeline___lambda__1___boxed(lean_object*, lean_object*);
 static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize__1___closed__4;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bvNormalize___lambda__3___closed__2;
 lean_object* lean_array_uset(lean_object*, size_t, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__4;
 lean_object* l_Lean_Elab_Tactic_replaceMainGoal(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_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___lambda__1___closed__3;
 LEAN_EXPORT lean_object* l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___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_Tactic_BVDecide_Frontend_Normalize_Pass_rewriteRulesPass___elambda__1___closed__9;
 LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5;
+lean_object* lean_simp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_MVarId_falseOrByContra(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__7;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__12;
 size_t lean_usize_land(size_t, size_t);
 LEAN_EXPORT uint8_t l_List_foldlM___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__3___lambda__1(lean_object*);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1317____closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021_(lean_object*);
 double lean_float_sub(double, double);
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__11;
 static lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass___closed__3;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__1;
-static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__4;
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1() {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3823_(lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__3;
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Bool", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("true", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__2;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("false", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__4;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = lean_box(0);
+x_2 = lean_alloc_ctor(2, 1, 0);
+lean_ctor_set(x_2, 0, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__7() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("cond_neg", 8, 8);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__8() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__7;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__9() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("cond_pos", 8, 8);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__10() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__9;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; 
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_3);
+x_14 = lean_simp(x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+if (lean_obj_tag(x_14) == 0)
+{
+uint8_t x_15; 
+x_15 = !lean_is_exclusive(x_14);
+if (x_15 == 0)
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; uint8_t x_21; 
+x_16 = lean_ctor_get(x_14, 0);
+x_17 = lean_ctor_get(x_14, 1);
+x_18 = lean_ctor_get(x_16, 0);
+lean_inc(x_18);
+x_19 = l_Lean_Expr_cleanupAnnotations(x_18);
+x_20 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__3;
+x_21 = l_Lean_Expr_isConstOf(x_19, x_20);
+if (x_21 == 0)
+{
+lean_object* x_22; uint8_t x_23; 
+x_22 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__5;
+x_23 = l_Lean_Expr_isConstOf(x_19, x_22);
+lean_dec(x_19);
+if (x_23 == 0)
+{
+lean_object* x_24; 
+lean_dec(x_16);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_24 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
+lean_ctor_set(x_14, 0, x_24);
+return x_14;
+}
+else
+{
+lean_object* x_25; 
+lean_free_object(x_14);
+x_25 = l_Lean_Meta_Simp_Result_getProof(x_16, x_9, x_10, x_11, x_12, x_17);
+if (lean_obj_tag(x_25) == 0)
+{
+uint8_t x_26; 
+x_26 = !lean_is_exclusive(x_25);
+if (x_26 == 0)
+{
+lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; uint8_t x_34; lean_object* x_35; lean_object* x_36; 
+x_27 = lean_ctor_get(x_25, 0);
+x_28 = l_Lean_Expr_constLevels_x21(x_1);
+x_29 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__8;
+x_30 = l_Lean_Expr_const___override(x_29, x_28);
+lean_inc(x_5);
+x_31 = l_Lean_mkApp4(x_30, x_2, x_3, x_4, x_5);
+x_32 = l_Lean_Expr_app___override(x_31, x_27);
+x_33 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_33, 0, x_32);
+x_34 = 1;
+x_35 = lean_alloc_ctor(0, 2, 1);
+lean_ctor_set(x_35, 0, x_5);
+lean_ctor_set(x_35, 1, x_33);
+lean_ctor_set_uint8(x_35, sizeof(void*)*2, x_34);
+x_36 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_36, 0, x_35);
+lean_ctor_set(x_25, 0, x_36);
+return x_25;
+}
+else
+{
+lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; uint8_t x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; 
+x_37 = lean_ctor_get(x_25, 0);
+x_38 = lean_ctor_get(x_25, 1);
+lean_inc(x_38);
+lean_inc(x_37);
+lean_dec(x_25);
+x_39 = l_Lean_Expr_constLevels_x21(x_1);
+x_40 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__8;
+x_41 = l_Lean_Expr_const___override(x_40, x_39);
+lean_inc(x_5);
+x_42 = l_Lean_mkApp4(x_41, x_2, x_3, x_4, x_5);
+x_43 = l_Lean_Expr_app___override(x_42, x_37);
+x_44 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_44, 0, x_43);
+x_45 = 1;
+x_46 = lean_alloc_ctor(0, 2, 1);
+lean_ctor_set(x_46, 0, x_5);
+lean_ctor_set(x_46, 1, x_44);
+lean_ctor_set_uint8(x_46, sizeof(void*)*2, x_45);
+x_47 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_47, 0, x_46);
+x_48 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_48, 0, x_47);
+lean_ctor_set(x_48, 1, x_38);
+return x_48;
+}
+}
+else
+{
+uint8_t x_49; 
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_49 = !lean_is_exclusive(x_25);
+if (x_49 == 0)
+{
+return x_25;
+}
+else
+{
+lean_object* x_50; lean_object* x_51; lean_object* x_52; 
+x_50 = lean_ctor_get(x_25, 0);
+x_51 = lean_ctor_get(x_25, 1);
+lean_inc(x_51);
+lean_inc(x_50);
+lean_dec(x_25);
+x_52 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_52, 0, x_50);
+lean_ctor_set(x_52, 1, x_51);
+return x_52;
+}
+}
+}
+}
+else
+{
+lean_object* x_53; 
+lean_dec(x_19);
+lean_free_object(x_14);
+x_53 = l_Lean_Meta_Simp_Result_getProof(x_16, x_9, x_10, x_11, x_12, x_17);
+if (lean_obj_tag(x_53) == 0)
+{
+uint8_t x_54; 
+x_54 = !lean_is_exclusive(x_53);
+if (x_54 == 0)
+{
+lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; uint8_t x_62; lean_object* x_63; lean_object* x_64; 
+x_55 = lean_ctor_get(x_53, 0);
+x_56 = l_Lean_Expr_constLevels_x21(x_1);
+x_57 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__10;
+x_58 = l_Lean_Expr_const___override(x_57, x_56);
+lean_inc(x_4);
+x_59 = l_Lean_mkApp4(x_58, x_2, x_3, x_4, x_5);
+x_60 = l_Lean_Expr_app___override(x_59, x_55);
+x_61 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_61, 0, x_60);
+x_62 = 1;
+x_63 = lean_alloc_ctor(0, 2, 1);
+lean_ctor_set(x_63, 0, x_4);
+lean_ctor_set(x_63, 1, x_61);
+lean_ctor_set_uint8(x_63, sizeof(void*)*2, x_62);
+x_64 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_64, 0, x_63);
+lean_ctor_set(x_53, 0, x_64);
+return x_53;
+}
+else
+{
+lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; uint8_t x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; 
+x_65 = lean_ctor_get(x_53, 0);
+x_66 = lean_ctor_get(x_53, 1);
+lean_inc(x_66);
+lean_inc(x_65);
+lean_dec(x_53);
+x_67 = l_Lean_Expr_constLevels_x21(x_1);
+x_68 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__10;
+x_69 = l_Lean_Expr_const___override(x_68, x_67);
+lean_inc(x_4);
+x_70 = l_Lean_mkApp4(x_69, x_2, x_3, x_4, x_5);
+x_71 = l_Lean_Expr_app___override(x_70, x_65);
+x_72 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_72, 0, x_71);
+x_73 = 1;
+x_74 = lean_alloc_ctor(0, 2, 1);
+lean_ctor_set(x_74, 0, x_4);
+lean_ctor_set(x_74, 1, x_72);
+lean_ctor_set_uint8(x_74, sizeof(void*)*2, x_73);
+x_75 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_75, 0, x_74);
+x_76 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_76, 0, x_75);
+lean_ctor_set(x_76, 1, x_66);
+return x_76;
+}
+}
+else
+{
+uint8_t x_77; 
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_77 = !lean_is_exclusive(x_53);
+if (x_77 == 0)
+{
+return x_53;
+}
+else
+{
+lean_object* x_78; lean_object* x_79; lean_object* x_80; 
+x_78 = lean_ctor_get(x_53, 0);
+x_79 = lean_ctor_get(x_53, 1);
+lean_inc(x_79);
+lean_inc(x_78);
+lean_dec(x_53);
+x_80 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_80, 0, x_78);
+lean_ctor_set(x_80, 1, x_79);
+return x_80;
+}
+}
+}
+}
+else
+{
+lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; uint8_t x_86; 
+x_81 = lean_ctor_get(x_14, 0);
+x_82 = lean_ctor_get(x_14, 1);
+lean_inc(x_82);
+lean_inc(x_81);
+lean_dec(x_14);
+x_83 = lean_ctor_get(x_81, 0);
+lean_inc(x_83);
+x_84 = l_Lean_Expr_cleanupAnnotations(x_83);
+x_85 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__3;
+x_86 = l_Lean_Expr_isConstOf(x_84, x_85);
+if (x_86 == 0)
+{
+lean_object* x_87; uint8_t x_88; 
+x_87 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__5;
+x_88 = l_Lean_Expr_isConstOf(x_84, x_87);
+lean_dec(x_84);
+if (x_88 == 0)
+{
+lean_object* x_89; lean_object* x_90; 
+lean_dec(x_81);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_89 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
+x_90 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_90, 0, x_89);
+lean_ctor_set(x_90, 1, x_82);
+return x_90;
+}
+else
+{
+lean_object* x_91; 
+x_91 = l_Lean_Meta_Simp_Result_getProof(x_81, x_9, x_10, x_11, x_12, x_82);
+if (lean_obj_tag(x_91) == 0)
+{
+lean_object* x_92; lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; lean_object* x_99; lean_object* x_100; uint8_t x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; 
+x_92 = lean_ctor_get(x_91, 0);
+lean_inc(x_92);
+x_93 = lean_ctor_get(x_91, 1);
+lean_inc(x_93);
+if (lean_is_exclusive(x_91)) {
+ lean_ctor_release(x_91, 0);
+ lean_ctor_release(x_91, 1);
+ x_94 = x_91;
+} else {
+ lean_dec_ref(x_91);
+ x_94 = lean_box(0);
+}
+x_95 = l_Lean_Expr_constLevels_x21(x_1);
+x_96 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__8;
+x_97 = l_Lean_Expr_const___override(x_96, x_95);
+lean_inc(x_5);
+x_98 = l_Lean_mkApp4(x_97, x_2, x_3, x_4, x_5);
+x_99 = l_Lean_Expr_app___override(x_98, x_92);
+x_100 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_100, 0, x_99);
+x_101 = 1;
+x_102 = lean_alloc_ctor(0, 2, 1);
+lean_ctor_set(x_102, 0, x_5);
+lean_ctor_set(x_102, 1, x_100);
+lean_ctor_set_uint8(x_102, sizeof(void*)*2, x_101);
+x_103 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_103, 0, x_102);
+if (lean_is_scalar(x_94)) {
+ x_104 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_104 = x_94;
+}
+lean_ctor_set(x_104, 0, x_103);
+lean_ctor_set(x_104, 1, x_93);
+return x_104;
+}
+else
+{
+lean_object* x_105; lean_object* x_106; lean_object* x_107; lean_object* x_108; 
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_105 = lean_ctor_get(x_91, 0);
+lean_inc(x_105);
+x_106 = lean_ctor_get(x_91, 1);
+lean_inc(x_106);
+if (lean_is_exclusive(x_91)) {
+ lean_ctor_release(x_91, 0);
+ lean_ctor_release(x_91, 1);
+ x_107 = x_91;
+} else {
+ lean_dec_ref(x_91);
+ x_107 = lean_box(0);
+}
+if (lean_is_scalar(x_107)) {
+ x_108 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_108 = x_107;
+}
+lean_ctor_set(x_108, 0, x_105);
+lean_ctor_set(x_108, 1, x_106);
+return x_108;
+}
+}
+}
+else
+{
+lean_object* x_109; 
+lean_dec(x_84);
+x_109 = l_Lean_Meta_Simp_Result_getProof(x_81, x_9, x_10, x_11, x_12, x_82);
+if (lean_obj_tag(x_109) == 0)
+{
+lean_object* x_110; lean_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; lean_object* x_115; lean_object* x_116; lean_object* x_117; lean_object* x_118; uint8_t x_119; lean_object* x_120; lean_object* x_121; lean_object* x_122; 
+x_110 = lean_ctor_get(x_109, 0);
+lean_inc(x_110);
+x_111 = lean_ctor_get(x_109, 1);
+lean_inc(x_111);
+if (lean_is_exclusive(x_109)) {
+ lean_ctor_release(x_109, 0);
+ lean_ctor_release(x_109, 1);
+ x_112 = x_109;
+} else {
+ lean_dec_ref(x_109);
+ x_112 = lean_box(0);
+}
+x_113 = l_Lean_Expr_constLevels_x21(x_1);
+x_114 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__10;
+x_115 = l_Lean_Expr_const___override(x_114, x_113);
+lean_inc(x_4);
+x_116 = l_Lean_mkApp4(x_115, x_2, x_3, x_4, x_5);
+x_117 = l_Lean_Expr_app___override(x_116, x_110);
+x_118 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_118, 0, x_117);
+x_119 = 1;
+x_120 = lean_alloc_ctor(0, 2, 1);
+lean_ctor_set(x_120, 0, x_4);
+lean_ctor_set(x_120, 1, x_118);
+lean_ctor_set_uint8(x_120, sizeof(void*)*2, x_119);
+x_121 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_121, 0, x_120);
+if (lean_is_scalar(x_112)) {
+ x_122 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_122 = x_112;
+}
+lean_ctor_set(x_122, 0, x_121);
+lean_ctor_set(x_122, 1, x_111);
+return x_122;
+}
+else
+{
+lean_object* x_123; lean_object* x_124; lean_object* x_125; lean_object* x_126; 
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_123 = lean_ctor_get(x_109, 0);
+lean_inc(x_123);
+x_124 = lean_ctor_get(x_109, 1);
+lean_inc(x_124);
+if (lean_is_exclusive(x_109)) {
+ lean_ctor_release(x_109, 0);
+ lean_ctor_release(x_109, 1);
+ x_125 = x_109;
+} else {
+ lean_dec_ref(x_109);
+ x_125 = lean_box(0);
+}
+if (lean_is_scalar(x_125)) {
+ x_126 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_126 = x_125;
+}
+lean_ctor_set(x_126, 0, x_123);
+lean_ctor_set(x_126, 1, x_124);
+return x_126;
+}
+}
+}
+}
+else
+{
+uint8_t x_127; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_127 = !lean_is_exclusive(x_14);
+if (x_127 == 0)
+{
+return x_14;
+}
+else
+{
+lean_object* x_128; lean_object* x_129; lean_object* x_130; 
+x_128 = lean_ctor_get(x_14, 0);
+x_129 = lean_ctor_get(x_14, 1);
+lean_inc(x_129);
+lean_inc(x_128);
+lean_dec(x_14);
+x_130 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_130, 0, x_128);
+lean_ctor_set(x_130, 1, x_129);
+return x_130;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__2(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; lean_object* x_11; 
+x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
+x_11 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_11, 0, x_10);
+lean_ctor_set(x_11, 1, x_9);
+return x_11;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___boxed), 13, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__2___boxed), 9, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("cond", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__3;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond(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; lean_object* x_11; lean_object* x_12; uint8_t x_13; 
+x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__1;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2;
+x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_13 = l_Lean_Expr_isApp(x_12);
+if (x_13 == 0)
+{
+lean_object* x_14; lean_object* x_15; 
+lean_dec(x_12);
+x_14 = lean_box(0);
+x_15 = lean_apply_9(x_11, x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+return x_15;
+}
+else
+{
+lean_object* x_16; lean_object* x_17; uint8_t x_18; 
+x_16 = l_Lean_Expr_appArg(x_12, lean_box(0));
+x_17 = l_Lean_Expr_appFnCleanup(x_12, lean_box(0));
+x_18 = l_Lean_Expr_isApp(x_17);
+if (x_18 == 0)
+{
+lean_object* x_19; lean_object* x_20; 
+lean_dec(x_17);
+lean_dec(x_16);
+x_19 = lean_box(0);
+x_20 = lean_apply_9(x_11, x_19, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+return x_20;
+}
+else
+{
+lean_object* x_21; lean_object* x_22; uint8_t x_23; 
+x_21 = l_Lean_Expr_appArg(x_17, lean_box(0));
+x_22 = l_Lean_Expr_appFnCleanup(x_17, lean_box(0));
+x_23 = l_Lean_Expr_isApp(x_22);
+if (x_23 == 0)
+{
+lean_object* x_24; lean_object* x_25; 
+lean_dec(x_22);
+lean_dec(x_21);
+lean_dec(x_16);
+x_24 = lean_box(0);
+x_25 = lean_apply_9(x_11, x_24, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+return x_25;
+}
+else
+{
+lean_object* x_26; lean_object* x_27; uint8_t x_28; 
+x_26 = l_Lean_Expr_appArg(x_22, lean_box(0));
+x_27 = l_Lean_Expr_appFnCleanup(x_22, lean_box(0));
+x_28 = l_Lean_Expr_isApp(x_27);
+if (x_28 == 0)
+{
+lean_object* x_29; lean_object* x_30; 
+lean_dec(x_27);
+lean_dec(x_26);
+lean_dec(x_21);
+lean_dec(x_16);
+x_29 = lean_box(0);
+x_30 = lean_apply_9(x_11, x_29, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+return x_30;
+}
+else
+{
+lean_object* x_31; lean_object* x_32; lean_object* x_33; uint8_t x_34; 
+x_31 = l_Lean_Expr_appArg(x_27, lean_box(0));
+x_32 = l_Lean_Expr_appFnCleanup(x_27, lean_box(0));
+x_33 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__4;
+x_34 = l_Lean_Expr_isConstOf(x_32, x_33);
+if (x_34 == 0)
+{
+lean_object* x_35; lean_object* x_36; 
+lean_dec(x_32);
+lean_dec(x_31);
+lean_dec(x_26);
+lean_dec(x_21);
+lean_dec(x_16);
+x_35 = lean_box(0);
+x_36 = lean_apply_9(x_11, x_35, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+return x_36;
+}
+else
+{
+lean_object* x_37; 
+x_37 = lean_apply_13(x_10, x_32, x_31, x_26, x_21, x_16, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+return x_37;
+}
+}
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; 
+x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_1);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__2___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_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+lean_dec(x_8);
+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_10;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Lean", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Elab", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Tactic", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("BVDecide", 8, 8);
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Frontend", 8, 8);
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Normalize", 9, 9);
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__7() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("reduceCond", 10, 10);
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__8() {
+_start:
+{
+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; 
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5;
+x_6 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
+x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__7;
+x_8 = l_Lean_Name_mkStr7(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
+return x_8;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__9() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__4;
+x_2 = lean_unsigned_to_nat(4u);
+x_3 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_3, 0, x_1);
+lean_ctor_set(x_3, 1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__10() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = lean_box(3);
+x_3 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_3, 0, x_2);
+lean_ctor_set(x_3, 1, x_1);
+return x_3;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__11() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(3);
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__10;
+x_3 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_3, 0, x_1);
+lean_ctor_set(x_3, 1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__12() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(3);
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__11;
+x_3 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_3, 0, x_1);
+lean_ctor_set(x_3, 1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__13() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(3);
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__12;
+x_3 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_3, 0, x_1);
+lean_ctor_set(x_3, 1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__14() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__9;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__13;
+x_3 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_3, 0, x_1);
+lean_ctor_set(x_3, 1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__15() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = lean_box(0);
-x_2 = lean_alloc_ctor(2, 1, 0);
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__14;
+x_2 = lean_array_mk(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__16() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond), 9, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349_(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__8;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__15;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__16;
+x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
+return x_5;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__16;
+x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___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) {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__2() {
 _start:
 {
-lean_object* x_10; lean_object* x_11; 
-x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
-x_11 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_11, 0, x_10);
-lean_ctor_set(x_11, 1, x_9);
-return x_11;
+lean_object* x_1; 
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_builtinBVNormalizeSimprocsRef;
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351_(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__8;
+x_4 = 0;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__1;
+x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
+return x_6;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__1() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -550,7 +1442,7 @@ x_1 = lean_mk_string_unchecked("BEq", 3, 3);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__2() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__2() {
 _start:
 {
 lean_object* x_1; 
@@ -558,17 +1450,17 @@ x_1 = lean_mk_string_unchecked("beq", 3, 3);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__3() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__2;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__2;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__4() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__4() {
 _start:
 {
 lean_object* x_1; 
@@ -576,17 +1468,17 @@ x_1 = lean_mk_string_unchecked("Eq", 2, 2);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__5() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__4;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__4;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__6() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
@@ -595,85 +1487,59 @@ x_2 = l_Lean_Level_ofNat(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__7() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__6;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_2);
 lean_ctor_set(x_3, 1, x_1);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__8() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__8() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__5;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__7;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__5;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__7;
 x_3 = l_Lean_Expr_const___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__9() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Bool", 4, 4);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__10() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__9() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__9;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__1;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__11() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__10() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__10;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__9;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__12() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("true", 4, 4);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__13() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__9;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__12;
-x_3 = l_Lean_Name_mkStr2(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__14() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__11() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__13;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__3;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12() {
 _start:
 {
 lean_object* x_1; 
@@ -681,31 +1547,7 @@ x_1 = lean_mk_string_unchecked("Std", 3, 3);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Tactic", 6, 6);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("BVDecide", 8, 8);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Normalize", 9, 9);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__19() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__13() {
 _start:
 {
 lean_object* x_1; 
@@ -713,31 +1555,31 @@ x_1 = lean_mk_string_unchecked("eq_to_beq", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__20() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__14() {
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__9;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__19;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__1;
+x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__13;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__21() {
+static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__15() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__20;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__14;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2(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, lean_object* x_11) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___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, lean_object* x_11) {
 _start:
 {
 lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; 
@@ -751,7 +1593,7 @@ x_14 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_14, 0, x_2);
 lean_ctor_set(x_14, 1, x_13);
 x_15 = lean_array_mk(x_14);
-x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__3;
+x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__3;
 x_17 = l_Lean_Meta_mkAppM(x_16, x_15, x_7, x_8, x_9, x_10, x_11);
 if (lean_obj_tag(x_17) == 0)
 {
@@ -761,11 +1603,11 @@ if (x_18 == 0)
 {
 lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; uint8_t x_27; lean_object* x_28; lean_object* x_29; 
 x_19 = lean_ctor_get(x_17, 0);
-x_20 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__8;
-x_21 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__11;
-x_22 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__14;
+x_20 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__8;
+x_21 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__10;
+x_22 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__11;
 x_23 = l_Lean_mkApp3(x_20, x_21, x_19, x_22);
-x_24 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__21;
+x_24 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__15;
 x_25 = l_Lean_mkAppB(x_24, x_2, x_1);
 x_26 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_26, 0, x_25);
@@ -787,11 +1629,11 @@ x_31 = lean_ctor_get(x_17, 1);
 lean_inc(x_31);
 lean_inc(x_30);
 lean_dec(x_17);
-x_32 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__8;
-x_33 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__11;
-x_34 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__14;
+x_32 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__8;
+x_33 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__10;
+x_34 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__11;
 x_35 = l_Lean_mkApp3(x_32, x_33, x_30, x_34);
-x_36 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__21;
+x_36 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__15;
 x_37 = l_Lean_mkAppB(x_36, x_2, x_1);
 x_38 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_38, 0, x_37);
@@ -834,15 +1676,7 @@ return x_46;
 }
 }
 }
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___boxed), 9, 0);
-return x_1;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3(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) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2(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:
 {
 lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; uint8_t x_17; 
@@ -853,16 +1687,16 @@ lean_inc(x_12);
 x_13 = lean_ctor_get(x_11, 1);
 lean_inc(x_13);
 lean_dec(x_11);
-x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1;
+x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2;
 x_15 = l_Lean_Expr_cleanupAnnotations(x_12);
-x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__13;
+x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__3;
 x_17 = l_Lean_Expr_isConstOf(x_15, x_16);
 lean_dec(x_15);
 if (x_17 == 0)
 {
 lean_object* x_18; lean_object* x_19; 
 x_18 = lean_box(0);
-x_19 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2(x_2, x_1, x_18, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
+x_19 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1(x_2, x_1, x_18, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
@@ -883,7 +1717,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3), 10, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2), 10, 0);
 return x_1;
 }
 }
@@ -892,7 +1726,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq(
 {
 lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13; 
 x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___closed__1;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2;
 x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
 x_13 = l_Lean_Expr_isApp(x_12);
 if (x_13 == 0)
@@ -938,7 +1772,7 @@ else
 {
 lean_object* x_26; lean_object* x_27; uint8_t x_28; 
 x_26 = l_Lean_Expr_appFnCleanup(x_22, lean_box(0));
-x_27 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__5;
+x_27 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__5;
 x_28 = l_Lean_Expr_isConstOf(x_26, x_27);
 lean_dec(x_26);
 if (x_28 == 0)
@@ -961,27 +1795,11 @@ return x_31;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___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_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
-lean_dec(x_8);
-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_10;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___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, lean_object* x_10, lean_object* x_11) {
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___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, lean_object* x_10, lean_object* x_11) {
 _start:
 {
 lean_object* x_12; 
-x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
 lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
@@ -989,31 +1807,7 @@ lean_dec(x_3);
 return x_12;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Lean", 4, 4);
-return x_1;
-}
-}
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__2() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Elab", 4, 4);
-return x_1;
-}
-}
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__3() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Frontend", 8, 8);
-return x_1;
-}
-}
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__4() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -1021,26 +1815,26 @@ x_1 = lean_mk_string_unchecked("eqToBEq", 7, 7);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__5() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__2() {
 _start:
 {
 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; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__3;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
-x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__4;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5;
+x_6 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
+x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__1;
 x_8 = l_Lean_Name_mkStr7(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
 return x_8;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__6() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__5;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__5;
 x_2 = lean_unsigned_to_nat(3u);
 x_3 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
@@ -1048,11 +1842,11 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__7() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__10;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__9;
 x_2 = lean_unsigned_to_nat(0u);
 x_3 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
@@ -1060,64 +1854,40 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__8() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = lean_box(3);
-x_3 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_3, 0, x_2);
-lean_ctor_set(x_3, 1, x_1);
-return x_3;
-}
-}
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__9() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__8;
-x_3 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_3, 0, x_1);
-lean_ctor_set(x_3, 1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__10() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__7;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__9;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__4;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__11;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__11() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__6;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__10;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__3;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__12() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__11;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__6;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__13() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__8() {
 _start:
 {
 lean_object* x_1; 
@@ -1125,43 +1895,35 @@ x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__5;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__12;
-x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__13;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__7;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__8;
 x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_657____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__13;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__8;
 x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__2() {
-_start:
-{
-lean_object* x_1; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_builtinBVNormalizeSimprocsRef;
-return x_1;
-}
-}
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_657_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__2;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__5;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__1;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_657____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -1186,10 +1948,10 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__1;
 x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__2;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
@@ -1226,7 +1988,7 @@ if (x_13 == 0)
 lean_object* x_14; lean_object* x_15; 
 x_14 = lean_ctor_get(x_11, 0);
 lean_dec(x_14);
-x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_11, 0, x_15);
 return x_11;
 }
@@ -1236,7 +1998,7 @@ lean_object* x_16; lean_object* x_17; lean_object* x_18;
 x_16 = lean_ctor_get(x_11, 1);
 lean_inc(x_16);
 lean_dec(x_11);
-x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_18 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_18, 0, x_17);
 lean_ctor_set(x_18, 1, x_16);
@@ -1275,7 +2037,7 @@ lean_object* x_29;
 lean_dec(x_23);
 lean_free_object(x_12);
 lean_dec(x_1);
-x_29 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_29 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_11, 0, x_29);
 return x_11;
 }
@@ -1323,7 +2085,7 @@ lean_object* x_44; lean_object* x_45;
 lean_dec(x_38);
 lean_free_object(x_12);
 lean_dec(x_1);
-x_44 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_44 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_45 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_45, 0, x_44);
 lean_ctor_set(x_45, 1, x_37);
@@ -1384,7 +2146,7 @@ if (x_61 == 0)
 lean_object* x_62; lean_object* x_63; 
 lean_dec(x_56);
 lean_dec(x_1);
-x_62 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_62 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_55)) {
  x_63 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -1486,7 +2248,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes(
 {
 lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13; 
 x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___closed__1;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2;
 x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
 x_13 = l_Lean_Expr_isApp(x_12);
 if (x_13 == 0)
@@ -1614,7 +2376,7 @@ lean_dec(x_3);
 return x_11;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -1622,22 +2384,22 @@ x_1 = lean_mk_string_unchecked("andOnes", 7, 7);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__2() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__2() {
 _start:
 {
 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; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__3;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
-x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__1;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5;
+x_6 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
+x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__1;
 x_8 = l_Lean_Name_mkStr7(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
 return x_8;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__3() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -1649,7 +2411,7 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__4() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -1659,11 +2421,11 @@ x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__4;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__4;
 x_2 = lean_unsigned_to_nat(1u);
 x_3 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
@@ -1671,100 +2433,76 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__6() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__9;
-x_3 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_3, 0, x_1);
-lean_ctor_set(x_3, 1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__7() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__6;
-x_3 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_3, 0, x_1);
-lean_ctor_set(x_3, 1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__8() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__7;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__13;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__9() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__8;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__10() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__8() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__9;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__7;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__11() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__9() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__10;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__8;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__12() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__10() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__3;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__11;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__3;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__9;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__13() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__11() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__12;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__10;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__14() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__12() {
 _start:
 {
 lean_object* x_1; 
@@ -1772,35 +2510,35 @@ x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__2;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__13;
-x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__14;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__11;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__12;
 x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_678____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1023____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__14;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__12;
 x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_678_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1023_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__2;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__2;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_678____closed__1;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1023____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -1817,10 +2555,10 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__1;
 x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___lambda__1___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
@@ -1857,7 +2595,7 @@ if (x_13 == 0)
 lean_object* x_14; lean_object* x_15; 
 x_14 = lean_ctor_get(x_11, 0);
 lean_dec(x_14);
-x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_11, 0, x_15);
 return x_11;
 }
@@ -1867,7 +2605,7 @@ lean_object* x_16; lean_object* x_17; lean_object* x_18;
 x_16 = lean_ctor_get(x_11, 1);
 lean_inc(x_16);
 lean_dec(x_11);
-x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_18 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_18, 0, x_17);
 lean_ctor_set(x_18, 1, x_16);
@@ -1906,7 +2644,7 @@ lean_object* x_29;
 lean_dec(x_23);
 lean_free_object(x_12);
 lean_dec(x_2);
-x_29 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_29 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_11, 0, x_29);
 return x_11;
 }
@@ -1954,7 +2692,7 @@ lean_object* x_44; lean_object* x_45;
 lean_dec(x_38);
 lean_free_object(x_12);
 lean_dec(x_2);
-x_44 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_44 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_45 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_45, 0, x_44);
 lean_ctor_set(x_45, 1, x_37);
@@ -2015,7 +2753,7 @@ if (x_61 == 0)
 lean_object* x_62; lean_object* x_63; 
 lean_dec(x_56);
 lean_dec(x_2);
-x_62 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_62 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_55)) {
  x_63 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -2091,7 +2829,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd(
 {
 lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13; 
 x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___closed__1;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2;
 x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
 x_13 = l_Lean_Expr_isApp(x_12);
 if (x_13 == 0)
@@ -2219,7 +2957,7 @@ lean_dec(x_3);
 return x_11;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -2227,22 +2965,22 @@ x_1 = lean_mk_string_unchecked("onesAnd", 7, 7);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__2() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__2() {
 _start:
 {
 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; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__3;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
-x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__1;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5;
+x_6 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
+x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__1;
 x_8 = l_Lean_Name_mkStr7(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
 return x_8;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__3() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__3() {
 _start:
 {
 lean_object* x_1; 
@@ -2250,35 +2988,35 @@ x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__2;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__13;
-x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__3;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__11;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__3;
 x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1044____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1389____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__3;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__3;
 x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1044_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1389_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__2;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__2;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1044____closed__1;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1389____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -2295,10 +3033,10 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__1;
 x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
@@ -2318,27 +3056,9 @@ return x_3;
 static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__4() {
 _start:
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("false", 5, 5);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__5() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__9;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__4;
-x_3 = l_Lean_Name_mkStr2(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__6() {
-_start:
-{
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__5;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__5;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
@@ -2363,7 +3083,7 @@ if (x_13 == 0)
 lean_object* x_14; lean_object* x_15; 
 x_14 = lean_ctor_get(x_11, 0);
 lean_dec(x_14);
-x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_11, 0, x_15);
 return x_11;
 }
@@ -2373,7 +3093,7 @@ lean_object* x_16; lean_object* x_17; lean_object* x_18;
 x_16 = lean_ctor_get(x_11, 1);
 lean_inc(x_16);
 lean_dec(x_11);
-x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_18 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_18, 0, x_17);
 lean_ctor_set(x_18, 1, x_16);
@@ -2412,7 +3132,7 @@ lean_object* x_29;
 lean_dec(x_23);
 lean_free_object(x_12);
 lean_dec(x_2);
-x_29 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_29 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_11, 0, x_29);
 return x_11;
 }
@@ -2423,7 +3143,7 @@ x_30 = l_Lean_mkNatLit(x_23);
 x_31 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__3;
 x_32 = l_Lean_mkAppB(x_31, x_30, x_2);
 lean_ctor_set(x_12, 0, x_32);
-x_33 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__6;
+x_33 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__4;
 x_34 = 1;
 x_35 = lean_alloc_ctor(0, 2, 1);
 lean_ctor_set(x_35, 0, x_33);
@@ -2460,7 +3180,7 @@ lean_object* x_45; lean_object* x_46;
 lean_dec(x_39);
 lean_free_object(x_12);
 lean_dec(x_2);
-x_45 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_45 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_46 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_46, 0, x_45);
 lean_ctor_set(x_46, 1, x_38);
@@ -2473,7 +3193,7 @@ x_47 = l_Lean_mkNatLit(x_39);
 x_48 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__3;
 x_49 = l_Lean_mkAppB(x_48, x_47, x_2);
 lean_ctor_set(x_12, 0, x_49);
-x_50 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__6;
+x_50 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__4;
 x_51 = 1;
 x_52 = lean_alloc_ctor(0, 2, 1);
 lean_ctor_set(x_52, 0, x_50);
@@ -2521,7 +3241,7 @@ if (x_63 == 0)
 lean_object* x_64; lean_object* x_65; 
 lean_dec(x_58);
 lean_dec(x_2);
-x_64 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_64 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_57)) {
  x_65 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -2539,7 +3259,7 @@ x_67 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___close
 x_68 = l_Lean_mkAppB(x_67, x_66, x_2);
 x_69 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_69, 0, x_68);
-x_70 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__6;
+x_70 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__4;
 x_71 = 1;
 x_72 = lean_alloc_ctor(0, 2, 1);
 lean_ctor_set(x_72, 0, x_70);
@@ -2615,7 +3335,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt(l
 {
 lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13; 
 x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___closed__1;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2;
 x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
 x_13 = l_Lean_Expr_isApp(x_12);
 if (x_13 == 0)
@@ -2695,7 +3415,7 @@ lean_dec(x_3);
 return x_11;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -2703,22 +3423,22 @@ x_1 = lean_mk_string_unchecked("maxUlt", 6, 6);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__2() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__2() {
 _start:
 {
 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; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__3;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
-x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__1;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5;
+x_6 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
+x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__1;
 x_8 = l_Lean_Name_mkStr7(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
 return x_8;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__3() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -2730,28 +3450,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__4() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__3;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__6;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__3;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__12;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__5() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__4;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__6() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -2759,35 +3479,35 @@ x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__2;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__5;
-x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__6;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__5;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1317____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1662____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__6;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__6;
 x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1317_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1662_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__2;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__2;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1317____closed__1;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1662____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -2928,7 +3648,7 @@ if (x_13 == 0)
 lean_object* x_14; lean_object* x_15; 
 x_14 = lean_ctor_get(x_11, 0);
 lean_dec(x_14);
-x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_15 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_11, 0, x_15);
 return x_11;
 }
@@ -2938,7 +3658,7 @@ lean_object* x_16; lean_object* x_17; lean_object* x_18;
 x_16 = lean_ctor_get(x_11, 1);
 lean_inc(x_16);
 lean_dec(x_11);
-x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_17 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_18 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_18, 0, x_17);
 lean_ctor_set(x_18, 1, x_16);
@@ -3127,7 +3847,7 @@ if (x_64 == 0)
 lean_object* x_65; lean_object* x_66; 
 x_65 = lean_ctor_get(x_22, 0);
 lean_dec(x_65);
-x_66 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_66 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_22, 0, x_66);
 return x_22;
 }
@@ -3137,7 +3857,7 @@ lean_object* x_67; lean_object* x_68; lean_object* x_69;
 x_67 = lean_ctor_get(x_22, 1);
 lean_inc(x_67);
 lean_dec(x_22);
-x_68 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_68 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_69 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_69, 0, x_68);
 lean_ctor_set(x_69, 1, x_67);
@@ -3349,7 +4069,7 @@ if (lean_is_exclusive(x_75)) {
  lean_dec_ref(x_75);
  x_115 = lean_box(0);
 }
-x_116 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_116 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_115)) {
  x_117 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -3426,7 +4146,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq_
 _start:
 {
 lean_object* x_11; lean_object* x_12; uint8_t x_13; 
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2;
 x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
 x_13 = l_Lean_Expr_isApp(x_12);
 if (x_13 == 0)
@@ -3443,7 +4163,7 @@ else
 lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; 
 x_16 = l_Lean_Expr_appArg(x_12, lean_box(0));
 x_17 = l_Lean_Expr_appFnCleanup(x_12, lean_box(0));
-x_18 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__4;
+x_18 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__4;
 x_19 = l_Lean_Expr_isConstOf(x_17, x_18);
 lean_dec(x_17);
 if (x_19 == 0)
@@ -3507,7 +4227,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq_
 {
 lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13; 
 x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___closed__1;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2;
 x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
 x_13 = l_Lean_Expr_isApp(x_12);
 if (x_13 == 0)
@@ -3587,22 +4307,22 @@ lean_dec(x_2);
 return x_11;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__1() {
 _start:
 {
 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; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__3;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5;
+x_6 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
 x_7 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__1;
 x_8 = l_Lean_Name_mkStr7(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
 return x_8;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__2() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -3614,40 +4334,40 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__3() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__6;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__12;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__4() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__2;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__3;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__2;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__3;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__5() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__4;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__6() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -3655,35 +4375,35 @@ x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__1;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__5;
-x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__6;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__1;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__5;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1740____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2085____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__6;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__6;
 x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1740_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2085_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__2;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__1;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__1;
 x_4 = 1;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1740____closed__1;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2085____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -3710,10 +4430,10 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__1;
 x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__1___closed__2;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
@@ -3742,10 +4462,10 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__1;
 x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__1___closed__5;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
@@ -3793,7 +4513,7 @@ if (x_14 == 0)
 lean_object* x_15; lean_object* x_16; 
 x_15 = lean_ctor_get(x_12, 0);
 lean_dec(x_15);
-x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_12, 0, x_16);
 return x_12;
 }
@@ -3803,7 +4523,7 @@ lean_object* x_17; lean_object* x_18; lean_object* x_19;
 x_17 = lean_ctor_get(x_12, 1);
 lean_inc(x_17);
 lean_dec(x_12);
-x_18 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_18 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_19 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_19, 0, x_18);
 lean_ctor_set(x_19, 1, x_17);
@@ -3875,7 +4595,7 @@ if (x_31 == 0)
 lean_object* x_32; lean_object* x_33; 
 x_32 = lean_ctor_get(x_29, 0);
 lean_dec(x_32);
-x_33 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_33 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_29, 0, x_33);
 return x_29;
 }
@@ -3885,7 +4605,7 @@ lean_object* x_34; lean_object* x_35; lean_object* x_36;
 x_34 = lean_ctor_get(x_29, 1);
 lean_inc(x_34);
 lean_dec(x_29);
-x_35 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_35 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_36 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_36, 0, x_35);
 lean_ctor_set(x_36, 1, x_34);
@@ -3932,7 +4652,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_46 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_46 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_29, 0, x_46);
 return x_29;
 }
@@ -4058,7 +4778,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_76 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_76 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_29, 0, x_76);
 return x_29;
 }
@@ -4189,7 +4909,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_105 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_105 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_106 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_106, 0, x_105);
 lean_ctor_set(x_106, 1, x_100);
@@ -4334,7 +5054,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_136 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_136 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_131)) {
  x_137 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -4513,7 +5233,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_174 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_174 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_26, 0, x_174);
 return x_26;
 }
@@ -4639,7 +5359,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_204 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_204 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_26, 0, x_204);
 return x_26;
 }
@@ -4770,7 +5490,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_233 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_233 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_234 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_234, 0, x_233);
 lean_ctor_set(x_234, 1, x_228);
@@ -4915,7 +5635,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_264 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_264 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_259)) {
  x_265 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -5113,7 +5833,7 @@ if (lean_is_exclusive(x_298)) {
  lean_dec_ref(x_298);
  x_301 = lean_box(0);
 }
-x_302 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_302 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_301)) {
  x_303 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -5175,7 +5895,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_312 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_312 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_307)) {
  x_313 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -5371,7 +6091,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_350 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_350 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_345)) {
  x_351 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -5588,7 +6308,7 @@ if (lean_is_exclusive(x_388)) {
  lean_dec_ref(x_388);
  x_391 = lean_box(0);
 }
-x_392 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_392 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_391)) {
  x_393 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -5650,7 +6370,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_402 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_402 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_397)) {
  x_403 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -5851,7 +6571,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_441 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_441 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_436)) {
  x_442 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -6037,7 +6757,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add_
 _start:
 {
 lean_object* x_11; lean_object* x_12; uint8_t x_13; 
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2;
 x_12 = l_Lean_Expr_cleanupAnnotations(x_2);
 x_13 = l_Lean_Expr_isApp(x_12);
 if (x_13 == 0)
@@ -6177,7 +6897,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add_
 {
 lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13; 
 x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___closed__1;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2;
 x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
 x_13 = l_Lean_Expr_isApp(x_12);
 if (x_13 == 0)
@@ -6305,7 +7025,7 @@ lean_dec(x_4);
 return x_12;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -6313,22 +7033,22 @@ x_1 = lean_mk_string_unchecked("bv_add_const", 12, 12);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__2() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__2() {
 _start:
 {
 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; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__3;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
-x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__1;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5;
+x_6 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
+x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__1;
 x_8 = l_Lean_Name_mkStr7(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
 return x_8;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__3() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -6340,112 +7060,112 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__4() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__3;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__11;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__3;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__9;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__5() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__4;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__4;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__6() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__5;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__7() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__6;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__8() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__8() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__7;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__7;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__9() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__9() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__8;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__8;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__10() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__10() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__9;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__9;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__11() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__11() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__3;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__10;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__3;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__10;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__12() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__12() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__11;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__11;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__13() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__13() {
 _start:
 {
 lean_object* x_1; 
@@ -6453,35 +7173,35 @@ x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__2;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__12;
-x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__13;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__12;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__13;
 x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2609____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2954____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__13;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__13;
 x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2609_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2954_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__2;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__2;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2609____closed__1;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2954____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -6498,10 +7218,10 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__1;
 x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___lambda__1___closed__1;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
@@ -6530,10 +7250,10 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__1;
 x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___lambda__1___closed__4;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
@@ -6581,7 +7301,7 @@ if (x_14 == 0)
 lean_object* x_15; lean_object* x_16; 
 x_15 = lean_ctor_get(x_12, 0);
 lean_dec(x_15);
-x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_16 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_12, 0, x_16);
 return x_12;
 }
@@ -6591,7 +7311,7 @@ lean_object* x_17; lean_object* x_18; lean_object* x_19;
 x_17 = lean_ctor_get(x_12, 1);
 lean_inc(x_17);
 lean_dec(x_12);
-x_18 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_18 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_19 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_19, 0, x_18);
 lean_ctor_set(x_19, 1, x_17);
@@ -6663,7 +7383,7 @@ if (x_31 == 0)
 lean_object* x_32; lean_object* x_33; 
 x_32 = lean_ctor_get(x_29, 0);
 lean_dec(x_32);
-x_33 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_33 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_29, 0, x_33);
 return x_29;
 }
@@ -6673,7 +7393,7 @@ lean_object* x_34; lean_object* x_35; lean_object* x_36;
 x_34 = lean_ctor_get(x_29, 1);
 lean_inc(x_34);
 lean_dec(x_29);
-x_35 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_35 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_36 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_36, 0, x_35);
 lean_ctor_set(x_36, 1, x_34);
@@ -6720,7 +7440,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_46 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_46 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_29, 0, x_46);
 return x_29;
 }
@@ -6846,7 +7566,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_76 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_76 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_29, 0, x_76);
 return x_29;
 }
@@ -6977,7 +7697,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_105 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_105 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_106 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_106, 0, x_105);
 lean_ctor_set(x_106, 1, x_100);
@@ -7122,7 +7842,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_136 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_136 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_131)) {
  x_137 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -7301,7 +8021,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_174 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_174 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_26, 0, x_174);
 return x_26;
 }
@@ -7427,7 +8147,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_204 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_204 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_26, 0, x_204);
 return x_26;
 }
@@ -7558,7 +8278,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_233 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_233 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_234 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_234, 0, x_233);
 lean_ctor_set(x_234, 1, x_228);
@@ -7703,7 +8423,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_264 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_264 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_259)) {
  x_265 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -7901,7 +8621,7 @@ if (lean_is_exclusive(x_298)) {
  lean_dec_ref(x_298);
  x_301 = lean_box(0);
 }
-x_302 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_302 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_301)) {
  x_303 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -7963,7 +8683,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_312 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_312 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_307)) {
  x_313 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -8159,7 +8879,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_350 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_350 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_345)) {
  x_351 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -8376,7 +9096,7 @@ if (lean_is_exclusive(x_388)) {
  lean_dec_ref(x_388);
  x_391 = lean_box(0);
 }
-x_392 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_392 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_391)) {
  x_393 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -8438,7 +9158,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_402 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_402 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_397)) {
  x_403 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -8639,7 +9359,7 @@ lean_dec(x_7);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_441 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_441 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 if (lean_is_scalar(x_436)) {
  x_442 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -8825,7 +9545,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add_
 _start:
 {
 lean_object* x_11; lean_object* x_12; uint8_t x_13; 
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2;
 x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
 x_13 = l_Lean_Expr_isApp(x_12);
 if (x_13 == 0)
@@ -8965,7 +9685,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add_
 {
 lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13; 
 x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___closed__1;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2;
 x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
 x_13 = l_Lean_Expr_isApp(x_12);
 if (x_13 == 0)
@@ -9093,7 +9813,7 @@ lean_dec(x_4);
 return x_12;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -9101,163 +9821,163 @@ x_1 = lean_mk_string_unchecked("bv_add_const'", 13, 13);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__2() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__2() {
 _start:
 {
 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; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__3;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
-x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__1;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5;
+x_6 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
+x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__1;
 x_8 = l_Lean_Name_mkStr7(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
 return x_8;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__3() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__8;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__4() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__3;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__3;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__5() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__4;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__4;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__6() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__5;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__7() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__3;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__6;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__3;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__8() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__8() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__7;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__7;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__9() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__9() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__8;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__8;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__10() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__10() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__9;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__9;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__11() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__11() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__10;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__10;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__12() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__12() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__11;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__11;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__13() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__13() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__3;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__12;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__3;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__12;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__14() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__14() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__13;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__13;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__15() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__15() {
 _start:
 {
 lean_object* x_1; 
@@ -9265,83 +9985,35 @@ x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__2;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__14;
-x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__15;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__14;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__15;
 x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3478____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3823____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__15;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__15;
 x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3478_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3823_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__2;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__2;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3478____closed__1;
-x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
-return x_6;
-}
-}
-static lean_object* _init_l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("reduceIte", 9, 9);
-return x_1;
-}
-}
-static lean_object* _init_l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__2() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__1;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__3() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_reduceIte), 9, 0);
-return x_1;
-}
-}
-static lean_object* _init_l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__4() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__3;
-x_2 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_2, 0, x_1);
-return x_2;
-}
-}
-LEAN_EXPORT lean_object* l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480_(lean_object* x_1) {
-_start:
-{
-lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__2;
-x_3 = l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__2;
-x_4 = 0;
-x_5 = l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__4;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3823____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -9483,10 +10155,10 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udi
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
 x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__1;
 x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___lambda__1___closed__5;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
@@ -9897,7 +10569,7 @@ if (x_17 == 0)
 lean_object* x_18; lean_object* x_19; 
 x_18 = lean_ctor_get(x_15, 0);
 lean_dec(x_18);
-x_19 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_19 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_15, 0, x_19);
 return x_15;
 }
@@ -9907,7 +10579,7 @@ lean_object* x_20; lean_object* x_21; lean_object* x_22;
 x_20 = lean_ctor_get(x_15, 1);
 lean_inc(x_20);
 lean_dec(x_15);
-x_21 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_21 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_22 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_22, 0, x_21);
 lean_ctor_set(x_22, 1, x_20);
@@ -9943,7 +10615,7 @@ lean_dec(x_12);
 lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_5);
-x_30 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_30 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_15, 0, x_30);
 return x_15;
 }
@@ -9973,7 +10645,7 @@ lean_dec(x_12);
 lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_5);
-x_35 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_35 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 lean_ctor_set(x_15, 0, x_35);
 return x_15;
 }
@@ -10001,7 +10673,7 @@ lean_dec(x_12);
 lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_5);
-x_40 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_40 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_41 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_41, 0, x_40);
 lean_ctor_set(x_41, 1, x_36);
@@ -10032,7 +10704,7 @@ lean_dec(x_12);
 lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_5);
-x_46 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1;
+x_46 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6;
 x_47 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_47, 0, x_46);
 lean_ctor_set(x_47, 1, x_36);
@@ -10110,7 +10782,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv
 {
 lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13; 
 x_10 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___closed__1;
-x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1;
+x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2;
 x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
 x_13 = l_Lean_Expr_isApp(x_12);
 if (x_13 == 0)
@@ -10268,7 +10940,7 @@ lean_dec(x_1);
 return x_15;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -10276,22 +10948,22 @@ x_1 = lean_mk_string_unchecked("bv_udiv_of_two_pow", 18, 18);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__2() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__2() {
 _start:
 {
 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; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__3;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
-x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__1;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5;
+x_6 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
+x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__1;
 x_8 = l_Lean_Name_mkStr7(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
 return x_8;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__3() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -10303,7 +10975,7 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__4() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -10315,136 +10987,136 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__5() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__4;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__9;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__4;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__11;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__6() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__5;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__7() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__6;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__8() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__8() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__7;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__7;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__9() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__9() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__8;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__8;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__10() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__10() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__9;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__9;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__11() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__11() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__10;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__10;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__12() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__12() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__11;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__11;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__13() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__13() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__12;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__12;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__14() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__14() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__3;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__13;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__3;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__13;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__15() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__15() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__14;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__14;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__16() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__16() {
 _start:
 {
 lean_object* x_1; 
@@ -10452,35 +11124,35 @@ x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__2;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__15;
-x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__16;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__15;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__16;
 x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4167____closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4510____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__16;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__16;
 x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4167_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4510_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__2;
-x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__2;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4167____closed__1;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4510____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -12158,7 +12830,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fi
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
 x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___closed__1;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
 x_3 = l_List_foldlM___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__3___closed__1;
 x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
 return x_4;
@@ -13946,7 +14618,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_an
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__6;
+x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_2);
 lean_ctor_set(x_3, 1, x_1);
@@ -13957,7 +14629,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_an
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__5;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__5;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__1___closed__1;
 x_3 = l_Lean_Expr_const___override(x_1, x_2);
 return x_3;
@@ -13975,11 +14647,11 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_an
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__9;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__1;
 x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__1___closed__3;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
@@ -14007,11 +14679,11 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_an
 _start:
 {
 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; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15;
-x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
-x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__9;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
+x_5 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__1;
 x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__1___closed__6;
 x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
 return x_7;
@@ -14034,8 +14706,8 @@ lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean
 x_10 = lean_ctor_get(x_1, 0);
 lean_inc(x_10);
 x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__1___closed__2;
-x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__11;
-x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__14;
+x_12 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__10;
+x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__11;
 lean_inc(x_2);
 x_14 = l_Lean_mkApp3(x_11, x_12, x_2, x_13);
 x_15 = lean_ctor_get(x_1, 2);
@@ -14101,7 +14773,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_and
 lean_object* x_11; lean_object* x_12; lean_object* x_13; uint8_t x_14; 
 x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__3___closed__1;
 x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
-x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__10;
+x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__9;
 x_14 = l_Lean_Expr_isConstOf(x_12, x_13);
 lean_dec(x_12);
 if (x_14 == 0)
@@ -14133,7 +14805,7 @@ LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_and
 lean_object* x_11; lean_object* x_12; lean_object* x_13; uint8_t x_14; 
 x_11 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__3___closed__1;
 x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
-x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__13;
+x_13 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__3;
 x_14 = l_Lean_Expr_isConstOf(x_12, x_13);
 lean_dec(x_12);
 if (x_14 == 0)
@@ -14168,7 +14840,7 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_an
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__9;
+x_1 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__1;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_andFlatteningPass_trySplit___lambda__5___closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
@@ -14296,7 +14968,7 @@ else
 lean_object* x_23; lean_object* x_24; lean_object* x_25; uint8_t x_26; 
 x_23 = l_Lean_Expr_appArg(x_19, lean_box(0));
 x_24 = l_Lean_Expr_appFnCleanup(x_19, lean_box(0));
-x_25 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__5;
+x_25 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__5;
 x_26 = l_Lean_Expr_isConstOf(x_24, x_25);
 lean_dec(x_24);
 if (x_26 == 0)
@@ -15650,7 +16322,7 @@ LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDe
 {
 lean_object* x_13; lean_object* x_14; uint8_t x_15; 
 x_13 = l_Lean_Expr_cleanupAnnotations(x_1);
-x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__10;
+x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__9;
 x_15 = l_Lean_Expr_isConstOf(x_13, x_14);
 lean_dec(x_13);
 if (x_15 == 0)
@@ -15680,7 +16352,7 @@ LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Elab_Tactic_BVDe
 {
 lean_object* x_13; lean_object* x_14; uint8_t x_15; 
 x_13 = l_Lean_Expr_cleanupAnnotations(x_7);
-x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__13;
+x_14 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__3;
 x_15 = l_Lean_Expr_isConstOf(x_13, x_14);
 lean_dec(x_13);
 if (x_15 == 0)
@@ -15818,7 +16490,7 @@ else
 lean_object* x_51; lean_object* x_52; lean_object* x_53; uint8_t x_54; 
 x_51 = l_Lean_Expr_appArg(x_45, lean_box(0));
 x_52 = l_Lean_Expr_appFnCleanup(x_45, lean_box(0));
-x_53 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__5;
+x_53 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__5;
 x_54 = l_Lean_Expr_isConstOf(x_52, x_53);
 lean_dec(x_52);
 if (x_54 == 0)
@@ -17400,9 +18072,9 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVN
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize___closed__1;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
 x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize___closed__2;
 x_5 = l_Lean_Name_mkStr4(x_1, x_2, x_3, x_4);
 return x_5;
@@ -17420,9 +18092,9 @@ static lean_object* _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVN
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1;
 x_2 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize___closed__1;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
 x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize___closed__4;
 x_5 = l_Lean_Name_mkStr4(x_1, x_2, x_3, x_4);
 return x_5;
@@ -17659,12 +18331,12 @@ static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Norm
 _start:
 {
 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; 
-x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1;
-x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__2;
-x_3 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16;
-x_4 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17;
-x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__3;
-x_6 = l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18;
+x_1 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2;
+x_3 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5;
+x_6 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6;
 x_7 = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_evalBVNormalize__1___closed__1;
 x_8 = l_Lean_Name_mkStr7(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
 return x_8;
@@ -17731,88 +18403,130 @@ lean_dec_ref(res);
 res = initialize_Std_Tactic_BVDecide_Syntax(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1();
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__4);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__5();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__5);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__6);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__7 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__7();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__7);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__8 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__8();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__8);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__9 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__9();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__9);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__10 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__10();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___lambda__1___closed__10);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond___closed__4);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__1);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__2);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__3);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__4);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__5);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__6);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__7 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__7();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__7);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__8 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__8();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__8);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__9 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__9();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__9);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__10 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__10();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__10);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__11 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__11();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__11);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__12 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__12();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__12);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__13 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__13();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__13);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__14 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__14();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__14);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__15 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__15();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__15);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__16 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__16();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349____closed__16);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_349_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__1);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__2();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351____closed__2);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_reduceCond_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_351_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__1);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__2();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__2);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__3();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__3);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__4();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__4);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__5();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__5);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__6 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__6();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__6);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__7 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__7();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__7);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__8 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__8();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__8);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__9 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__9();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__9);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__10 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__10();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__10);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__11 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__11();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__11);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__12 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__12();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__12);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__13 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__13();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__13);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__14 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__14();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__14);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__15);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__16);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__17);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__18);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__19 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__19();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__19);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__20 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__20();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__20);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__21 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__21();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__2___closed__21);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__3___closed__1);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__2);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__3);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__4);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__5();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__5);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__6 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__6();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__6);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__7 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__7();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__7);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__8 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__8();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__8);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__9 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__9();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__9);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__10 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__10();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__10);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__11 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__11();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__11);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__12);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__13 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__13();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__13);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__14 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__14();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__14);
+l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__15 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__15();
+lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___lambda__1___closed__15);
 l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq___closed__1);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__1);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__2();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__2);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__3();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__3);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__4();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__4);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__5();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__5);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__6();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__6);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__7 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__7();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__7);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__8 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__8();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__8);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__9 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__9();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__9);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__10 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__10();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__10);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__11 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__11();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__11);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__12 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__12();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__12);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__13 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__13();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310____closed__13);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_310_(lean_io_mk_world());
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__1);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__2();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__2);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__3();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__3);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__4();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__4);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__5();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__5);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__6();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__6);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__7 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__7();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__7);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__8 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__8();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655____closed__8);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_655_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__1);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__2();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312____closed__2);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_312_(lean_io_mk_world());
+}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_657____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_657____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_657____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_eqToBEq_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_657_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___lambda__1___closed__1();
@@ -17831,40 +18545,36 @@ l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___closed__3 = _init_l_Lea
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___closed__3);
 l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___closed__4();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes___closed__4);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__1);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__2();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__2);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__3();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__3);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__4();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__4);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__5);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__6();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__6);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__7 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__7();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__7);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__8 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__8();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__8);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__9 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__9();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__9);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__10 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__10();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__10);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__11 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__11();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__11);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__12 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__12();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__12);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__13 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__13();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__13);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__14 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__14();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676____closed__14);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_676_(lean_io_mk_world());
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__1);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__2();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__2);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__3();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__3);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__4();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__4);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__5);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__6();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__6);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__7 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__7();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__7);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__8 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__8();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__8);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__9 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__9();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__9);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__10 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__10();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__10);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__11 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__11();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__11);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__12 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__12();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021____closed__12);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1021_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_678____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_678____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_678____closed__1);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_678_(lean_io_mk_world());
+}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1023____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1023____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1023____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_andOnes_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1023_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___lambda__1___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___lambda__1___closed__1();
@@ -17875,18 +18585,18 @@ l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___lambda__1___closed__3 =
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___lambda__1___closed__3);
 l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd___closed__1);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__1);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__2();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__2);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__3();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042____closed__3);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1042_(lean_io_mk_world());
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__1);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__2();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__2);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__3();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387____closed__3);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1387_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1044____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1044____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1044____closed__1);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1044_(lean_io_mk_world());
+}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1389____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1389____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1389____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_onesAnd_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1389_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__1();
@@ -17897,34 +18607,30 @@ l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__3 =
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__3);
 l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__4();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__4);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__5 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__5();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__5);
-l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__6 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__6();
-lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___lambda__1___closed__6);
 l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___closed__1);
 l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___closed__2 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___closed__2();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___closed__2);
 l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___closed__3 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___closed__3();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt___closed__3);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__1);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__2();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__2);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__3();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__3);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__4();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__4);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__5();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__5);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__6();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315____closed__6);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1315_(lean_io_mk_world());
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__1);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__2();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__2);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__3();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__3);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__4();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__4);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__5();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__5);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__6();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660____closed__6);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1660_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1317____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1317____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1317____closed__1);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1317_(lean_io_mk_world());
+}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1662____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1662____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1662____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_maxUlt_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1662_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___lambda__1___closed__1();
@@ -17959,24 +18665,24 @@ l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___closed__3 = _
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___closed__3);
 l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___closed__4();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add___closed__4);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__1);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__2();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__2);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__3();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__3);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__4();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__4);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__5();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__5);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__6();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738____closed__6);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1738_(lean_io_mk_world());
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__1);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__2();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__2);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__3();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__3);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__4();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__4);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__5();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__5);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__6();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083____closed__6);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2083_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1740____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1740____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1740____closed__1);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_1740_(lean_io_mk_world());
+}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2085____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2085____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2085____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_neg__eq__not__add_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2085_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__1___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__1___closed__1();
@@ -17995,38 +18701,38 @@ l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__1___clos
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___lambda__1___closed__7);
 l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const___closed__1);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__1);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__2();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__2);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__3();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__3);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__4();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__4);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__5();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__5);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__6();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__6);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__7 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__7();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__7);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__8 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__8();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__8);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__9 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__9();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__9);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__10 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__10();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__10);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__11 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__11();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__11);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__12 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__12();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__12);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__13 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__13();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607____closed__13);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2607_(lean_io_mk_world());
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__1);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__2();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__2);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__3();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__3);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__4();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__4);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__5();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__5);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__6();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__6);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__7 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__7();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__7);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__8 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__8();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__8);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__9 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__9();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__9);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__10 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__10();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__10);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__11 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__11();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__11);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__12 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__12();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__12);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__13 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__13();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952____closed__13);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2952_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2609____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2609____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2609____closed__1);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2609_(lean_io_mk_world());
+}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2954____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2954____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2954____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_2954_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___lambda__1___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___lambda__1___closed__1();
@@ -18043,53 +18749,42 @@ l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___lambda__1___
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___lambda__1___closed__6);
 l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___closed__1();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27___closed__1);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__1);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__2();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__2);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__3();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__3);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__4();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__4);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__5();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__5);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__6();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__6);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__7 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__7();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__7);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__8 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__8();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__8);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__9 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__9();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__9);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__10 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__10();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__10);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__11 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__11();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__11);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__12 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__12();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__12);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__13 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__13();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__13);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__14 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__14();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__14);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__15 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__15();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476____closed__15);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3476_(lean_io_mk_world());
-if (lean_io_result_is_error(res)) return res;
-lean_dec_ref(res);
-}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3478____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3478____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3478____closed__1);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3478_(lean_io_mk_world());
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__1);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__2();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__2);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__3();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__3);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__4();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__4);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__5();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__5);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__6();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__6);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__7 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__7();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__7);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__8 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__8();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__8);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__9 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__9();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__9);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__10 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__10();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__10);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__11 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__11();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__11);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__12 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__12();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__12);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__13 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__13();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__13);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__14 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__14();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__14);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__15 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__15();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821____closed__15);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3821_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__1 = _init_l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__1();
-lean_mark_persistent(l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__1);
-l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__2 = _init_l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__2();
-lean_mark_persistent(l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__2);
-l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__3 = _init_l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__3();
-lean_mark_persistent(l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__3);
-l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__4 = _init_l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__4();
-lean_mark_persistent(l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480____closed__4);
-if (builtin) {res = l___regBuiltin_reduceIte_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3480_(lean_io_mk_world());
+}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3823____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3823____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3823____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__add__const_x27_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_3823_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_mkPow___closed__1 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_mkPow___closed__1();
@@ -18120,44 +18815,44 @@ l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___closed__
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___closed__3);
 l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___closed__4 = _init_l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___closed__4();
 lean_mark_persistent(l_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow___closed__4);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__1);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__2();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__2);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__3();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__3);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__4();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__4);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__5();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__5);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__6();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__6);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__7 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__7();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__7);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__8 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__8();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__8);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__9 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__9();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__9);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__10 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__10();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__10);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__11 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__11();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__11);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__12 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__12();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__12);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__13 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__13();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__13);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__14 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__14();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__14);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__15 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__15();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__15);
-l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__16 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__16();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165____closed__16);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4165_(lean_io_mk_world());
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__1);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__2();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__2);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__3();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__3);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__4();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__4);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__5();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__5);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__6 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__6();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__6);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__7 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__7();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__7);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__8 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__8();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__8);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__9 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__9();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__9);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__10 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__10();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__10);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__11 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__11();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__11);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__12 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__12();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__12);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__13 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__13();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__13);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__14 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__14();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__14);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__15 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__15();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__15);
+l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__16 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__16();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508____closed__16);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4508_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4167____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4167____closed__1();
-lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4167____closed__1);
-if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4167_(lean_io_mk_world());
+}l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4510____closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4510____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4510____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_bv__udiv__of__two__pow_declare__1____x40_Lean_Elab_Tactic_BVDecide_Frontend_Normalize___hyg_4510_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___lambda__2___closed__1 = _init_l_Lean_withTraceNode___at_Lean_Elab_Tactic_BVDecide_Frontend_Normalize_Pass_fixpointPipeline___spec__1___lambda__2___closed__1();
diff --git a/stage0/stdlib/Lean/Elab/Tactic/Grind.c b/stage0/stdlib/Lean/Elab/Tactic/Grind.c
new file mode 100644
index 000000000000..44d7fffd7940
--- /dev/null
+++ b/stage0/stdlib/Lean/Elab/Tactic/Grind.c
@@ -0,0 +1,561 @@
+// Lean compiler output
+// Module: Lean.Elab.Tactic.Grind
+// Imports: Init.Grind.Tactics Lean.Meta.Tactic.Grind Lean.Elab.Tactic.Basic
+#include <lean/lean.h>
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Wunused-parameter"
+#pragma clang diagnostic ignored "-Wunused-label"
+#elif defined(__GNUC__) && !defined(__CLANG__)
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#pragma GCC diagnostic ignored "-Wunused-label"
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+lean_object* l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_grind___closed__2;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__5;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__1;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__4;
+lean_object* l_Lean_logAt___at_Lean_Elab_Tactic_closeUsingOrAdmit___spec__2(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+extern lean_object* l_Lean_Elab_Tactic_tacticElabAttribute;
+static lean_object* l_Lean_Elab_Tactic_grind___closed__1;
+static lean_object* l_Lean_Elab_Tactic_evalApplyRfl___closed__6;
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__3;
+uint8_t l_Lean_Syntax_isOfKind(lean_object*, lean_object*);
+lean_object* l_Lean_stringToMessageData(lean_object*);
+lean_object* l_Lean_throwError___at_Lean_Meta_setInlineAttribute___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_evalApplyRfl___closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg(lean_object*);
+static lean_object* l_Lean_Elab_Tactic_evalApplyRfl___closed__9;
+static lean_object* l_Lean_Elab_Tactic_evalApplyRfl___closed__8;
+static lean_object* l_Lean_Elab_Tactic_evalApplyRfl___closed__5;
+lean_object* l_Lean_Elab_goalsToMessageData(lean_object*);
+lean_object* l_Lean_MessageData_ofFormat(lean_object*);
+static lean_object* l_Lean_Elab_Tactic_evalApplyRfl___closed__4;
+lean_object* l_Lean_Elab_Tactic_withMainContext___rarg(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_Elab_Tactic_evalApplyRfl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint8_t l_List_isEmpty___rarg(lean_object*);
+lean_object* l_Lean_Elab_Term_getDeclName_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_evalApplyRfl___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_grind___closed__4;
+lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__2;
+lean_object* l_Lean_Meta_Grind_main(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg___closed__1;
+static lean_object* l_Lean_Elab_Tactic_evalApplyRfl___closed__3;
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_grind(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_evalApplyRfl___closed__2;
+static lean_object* l_Lean_Elab_Tactic_evalApplyRfl___closed__10;
+static lean_object* l_Lean_Elab_Tactic_grind___closed__3;
+static lean_object* l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg___closed__2;
+LEAN_EXPORT lean_object* l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Elab_Tactic_liftMetaFinishingTactic(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Name_mkStr4(lean_object*, lean_object*, lean_object*, lean_object*);
+extern lean_object* l_Lean_Elab_unsupportedSyntaxExceptionId;
+LEAN_EXPORT lean_object* l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Elab_Tactic_evalApplyRfl___closed__7;
+static lean_object* _init_l_Lean_Elab_Tactic_grind___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("`grind` failed\n", 15, 15);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_grind___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Elab_Tactic_grind___closed__1;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_grind___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("", 0, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_grind___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Elab_Tactic_grind___closed__3;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_grind(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) {
+_start:
+{
+lean_object* x_8; 
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_8 = l_Lean_Meta_Grind_main(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
+if (lean_obj_tag(x_8) == 0)
+{
+uint8_t x_9; 
+x_9 = !lean_is_exclusive(x_8);
+if (x_9 == 0)
+{
+lean_object* x_10; lean_object* x_11; uint8_t x_12; 
+x_10 = lean_ctor_get(x_8, 0);
+x_11 = lean_ctor_get(x_8, 1);
+x_12 = l_List_isEmpty___rarg(x_10);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+lean_free_object(x_8);
+x_13 = l_Lean_Elab_goalsToMessageData(x_10);
+x_14 = l_Lean_Elab_Tactic_grind___closed__2;
+x_15 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_15, 0, x_14);
+lean_ctor_set(x_15, 1, x_13);
+x_16 = l_Lean_Elab_Tactic_grind___closed__4;
+x_17 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_17, 0, x_15);
+lean_ctor_set(x_17, 1, x_16);
+x_18 = l_Lean_throwError___at_Lean_Meta_setInlineAttribute___spec__1(x_17, x_3, x_4, x_5, x_6, x_11);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_18;
+}
+else
+{
+lean_object* x_19; 
+lean_dec(x_10);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_19 = lean_box(0);
+lean_ctor_set(x_8, 0, x_19);
+return x_8;
+}
+}
+else
+{
+lean_object* x_20; lean_object* x_21; uint8_t x_22; 
+x_20 = lean_ctor_get(x_8, 0);
+x_21 = lean_ctor_get(x_8, 1);
+lean_inc(x_21);
+lean_inc(x_20);
+lean_dec(x_8);
+x_22 = l_List_isEmpty___rarg(x_20);
+if (x_22 == 0)
+{
+lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_23 = l_Lean_Elab_goalsToMessageData(x_20);
+x_24 = l_Lean_Elab_Tactic_grind___closed__2;
+x_25 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_25, 0, x_24);
+lean_ctor_set(x_25, 1, x_23);
+x_26 = l_Lean_Elab_Tactic_grind___closed__4;
+x_27 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_27, 0, x_25);
+lean_ctor_set(x_27, 1, x_26);
+x_28 = l_Lean_throwError___at_Lean_Meta_setInlineAttribute___spec__1(x_27, x_3, x_4, x_5, x_6, x_21);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_28;
+}
+else
+{
+lean_object* x_29; lean_object* x_30; 
+lean_dec(x_20);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_29 = lean_box(0);
+x_30 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_30, 0, x_29);
+lean_ctor_set(x_30, 1, x_21);
+return x_30;
+}
+}
+}
+else
+{
+uint8_t x_31; 
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_31 = !lean_is_exclusive(x_8);
+if (x_31 == 0)
+{
+return x_8;
+}
+else
+{
+lean_object* x_32; lean_object* x_33; lean_object* x_34; 
+x_32 = lean_ctor_get(x_8, 0);
+x_33 = lean_ctor_get(x_8, 1);
+lean_inc(x_33);
+lean_inc(x_32);
+lean_dec(x_8);
+x_34 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_34, 0, x_32);
+lean_ctor_set(x_34, 1, x_33);
+return x_34;
+}
+}
+}
+}
+static lean_object* _init_l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_Elab_unsupportedSyntaxExceptionId;
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg___closed__1;
+x_3 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_3, 0, x_2);
+lean_ctor_set(x_3, 1, x_1);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; lean_object* x_3; 
+x_2 = l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg___closed__2;
+x_3 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_3, 0, x_2);
+lean_ctor_set(x_3, 1, x_1);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__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) {
+_start:
+{
+lean_object* x_9; 
+x_9 = lean_alloc_closure((void*)(l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg), 1, 0);
+return x_9;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_evalApplyRfl___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) {
+_start:
+{
+lean_object* x_8; 
+x_8 = l_Lean_Elab_Tactic_grind(x_2, x_1, x_3, x_4, x_5, x_6, x_7);
+return x_8;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Lean", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Parser", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Tactic", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("grind", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
+x_1 = l_Lean_Elab_Tactic_evalApplyRfl___closed__1;
+x_2 = l_Lean_Elab_Tactic_evalApplyRfl___closed__2;
+x_3 = l_Lean_Elab_Tactic_evalApplyRfl___closed__3;
+x_4 = l_Lean_Elab_Tactic_evalApplyRfl___closed__4;
+x_5 = l_Lean_Name_mkStr4(x_1, x_2, x_3, x_4);
+return x_5;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__6() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("The `grind` tactic is experimental and still under development. Avoid using it in production projects", 101, 101);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__7() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Elab_Tactic_evalApplyRfl___closed__6;
+x_2 = lean_alloc_ctor(3, 1, 0);
+lean_ctor_set(x_2, 0, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__8() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Elab_Tactic_evalApplyRfl___closed__7;
+x_2 = l_Lean_MessageData_ofFormat(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__9() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("_grind", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__10() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Elab_Tactic_evalApplyRfl___closed__9;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Elab_Tactic_evalApplyRfl(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:
+{
+lean_object* x_11; uint8_t x_12; 
+x_11 = l_Lean_Elab_Tactic_evalApplyRfl___closed__5;
+lean_inc(x_1);
+x_12 = l_Lean_Syntax_isOfKind(x_1, x_11);
+if (x_12 == 0)
+{
+lean_object* x_13; 
+lean_dec(x_9);
+lean_dec(x_8);
+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_13 = l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg(x_10);
+return x_13;
+}
+else
+{
+lean_object* x_14; uint8_t x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_14 = l_Lean_Elab_Tactic_evalApplyRfl___closed__8;
+x_15 = 1;
+lean_inc(x_8);
+x_16 = l_Lean_logAt___at_Lean_Elab_Tactic_closeUsingOrAdmit___spec__2(x_1, x_14, x_15, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_1);
+x_17 = lean_ctor_get(x_16, 1);
+lean_inc(x_17);
+lean_dec(x_16);
+x_18 = l_Lean_Elab_Term_getDeclName_x3f(x_4, x_5, x_6, x_7, x_8, x_9, x_17);
+x_19 = lean_ctor_get(x_18, 0);
+lean_inc(x_19);
+if (lean_obj_tag(x_19) == 0)
+{
+lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_20 = lean_ctor_get(x_18, 1);
+lean_inc(x_20);
+lean_dec(x_18);
+x_21 = l_Lean_Elab_Tactic_evalApplyRfl___closed__10;
+x_22 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_evalApplyRfl___lambda__1), 7, 1);
+lean_closure_set(x_22, 0, x_21);
+x_23 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_liftMetaFinishingTactic), 10, 1);
+lean_closure_set(x_23, 0, x_22);
+x_24 = l_Lean_Elab_Tactic_withMainContext___rarg(x_23, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_20);
+return x_24;
+}
+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_18, 1);
+lean_inc(x_25);
+lean_dec(x_18);
+x_26 = lean_ctor_get(x_19, 0);
+lean_inc(x_26);
+lean_dec(x_19);
+x_27 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_evalApplyRfl___lambda__1), 7, 1);
+lean_closure_set(x_27, 0, x_26);
+x_28 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_liftMetaFinishingTactic), 10, 1);
+lean_closure_set(x_28, 0, x_27);
+x_29 = l_Lean_Elab_Tactic_withMainContext___rarg(x_28, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_25);
+return x_29;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___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) {
+_start:
+{
+lean_object* x_9; 
+x_9 = l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
+lean_dec(x_8);
+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_9;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Elab", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("evalApplyRfl", 12, 12);
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
+x_1 = l_Lean_Elab_Tactic_evalApplyRfl___closed__1;
+x_2 = l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__1;
+x_3 = l_Lean_Elab_Tactic_evalApplyRfl___closed__3;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__2;
+x_5 = l_Lean_Name_mkStr4(x_1, x_2, x_3, x_4);
+return x_5;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_Elab_Tactic_tacticElabAttribute;
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__5() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_evalApplyRfl), 10, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_2 = l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__4;
+x_3 = l_Lean_Elab_Tactic_evalApplyRfl___closed__5;
+x_4 = l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__3;
+x_5 = l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__5;
+x_6 = l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(x_2, x_3, x_4, x_5, x_1);
+return x_6;
+}
+}
+lean_object* initialize_Init_Grind_Tactics(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Elab_Tactic_Basic(uint8_t builtin, lean_object*);
+static bool _G_initialized = false;
+LEAN_EXPORT lean_object* initialize_Lean_Elab_Tactic_Grind(uint8_t builtin, lean_object* w) {
+lean_object * res;
+if (_G_initialized) return lean_io_result_mk_ok(lean_box(0));
+_G_initialized = true;
+res = initialize_Init_Grind_Tactics(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+res = initialize_Lean_Meta_Tactic_Grind(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+res = initialize_Lean_Elab_Tactic_Basic(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+l_Lean_Elab_Tactic_grind___closed__1 = _init_l_Lean_Elab_Tactic_grind___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_grind___closed__1);
+l_Lean_Elab_Tactic_grind___closed__2 = _init_l_Lean_Elab_Tactic_grind___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_grind___closed__2);
+l_Lean_Elab_Tactic_grind___closed__3 = _init_l_Lean_Elab_Tactic_grind___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_grind___closed__3);
+l_Lean_Elab_Tactic_grind___closed__4 = _init_l_Lean_Elab_Tactic_grind___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_grind___closed__4);
+l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg___closed__1 = _init_l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg___closed__1();
+lean_mark_persistent(l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg___closed__1);
+l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg___closed__2 = _init_l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg___closed__2();
+lean_mark_persistent(l_Lean_Elab_throwUnsupportedSyntax___at_Lean_Elab_Tactic_evalApplyRfl___spec__1___rarg___closed__2);
+l_Lean_Elab_Tactic_evalApplyRfl___closed__1 = _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__1();
+lean_mark_persistent(l_Lean_Elab_Tactic_evalApplyRfl___closed__1);
+l_Lean_Elab_Tactic_evalApplyRfl___closed__2 = _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__2();
+lean_mark_persistent(l_Lean_Elab_Tactic_evalApplyRfl___closed__2);
+l_Lean_Elab_Tactic_evalApplyRfl___closed__3 = _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__3();
+lean_mark_persistent(l_Lean_Elab_Tactic_evalApplyRfl___closed__3);
+l_Lean_Elab_Tactic_evalApplyRfl___closed__4 = _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__4();
+lean_mark_persistent(l_Lean_Elab_Tactic_evalApplyRfl___closed__4);
+l_Lean_Elab_Tactic_evalApplyRfl___closed__5 = _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__5();
+lean_mark_persistent(l_Lean_Elab_Tactic_evalApplyRfl___closed__5);
+l_Lean_Elab_Tactic_evalApplyRfl___closed__6 = _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__6();
+lean_mark_persistent(l_Lean_Elab_Tactic_evalApplyRfl___closed__6);
+l_Lean_Elab_Tactic_evalApplyRfl___closed__7 = _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__7();
+lean_mark_persistent(l_Lean_Elab_Tactic_evalApplyRfl___closed__7);
+l_Lean_Elab_Tactic_evalApplyRfl___closed__8 = _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__8();
+lean_mark_persistent(l_Lean_Elab_Tactic_evalApplyRfl___closed__8);
+l_Lean_Elab_Tactic_evalApplyRfl___closed__9 = _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__9();
+lean_mark_persistent(l_Lean_Elab_Tactic_evalApplyRfl___closed__9);
+l_Lean_Elab_Tactic_evalApplyRfl___closed__10 = _init_l_Lean_Elab_Tactic_evalApplyRfl___closed__10();
+lean_mark_persistent(l_Lean_Elab_Tactic_evalApplyRfl___closed__10);
+l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__1 = _init_l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__1);
+l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__2 = _init_l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__2();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__2);
+l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__3 = _init_l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__3();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__3);
+l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__4 = _init_l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__4();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__4);
+l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__5 = _init_l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__5();
+lean_mark_persistent(l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1___closed__5);
+if (builtin) {res = l___regBuiltin_Lean_Elab_Tactic_evalApplyRfl__1(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}return lean_io_result_mk_ok(lean_box(0));
+}
+#ifdef __cplusplus
+}
+#endif
diff --git a/stage0/stdlib/Lean/Expr.c b/stage0/stdlib/Lean/Expr.c
index 78ed5202cbb6..1ed2b8b914ab 100644
--- a/stage0/stdlib/Lean/Expr.c
+++ b/stage0/stdlib/Lean/Expr.c
@@ -854,6 +854,7 @@ LEAN_EXPORT lean_object* l_Lean_Expr_getArgD(lean_object*, lean_object*, lean_ob
 LEAN_EXPORT lean_object* l_Lean_instMVarIdSetEmptyCollection;
 LEAN_EXPORT lean_object* l_Std_Format_joinSep___at___private_Lean_Expr_0__Lean_reprExpr____x40_Lean_Expr___hyg_3036____spec__3(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Expr_appArg___boxed(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Expr_getForallArity(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Expr_getRevArgD(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Expr_0__Lean_mkAppRangeAux___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT uint8_t l_Lean_BinderInfo_isExplicit(uint8_t);
@@ -28230,6 +28231,67 @@ x_3 = lean_box(x_2);
 return x_3;
 }
 }
+LEAN_EXPORT lean_object* l_Lean_Expr_getForallArity(lean_object* x_1) {
+_start:
+{
+switch (lean_obj_tag(x_1)) {
+case 7:
+{
+lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = lean_ctor_get(x_1, 2);
+lean_inc(x_2);
+lean_dec(x_1);
+x_3 = l_Lean_Expr_getForallArity(x_2);
+x_4 = lean_unsigned_to_nat(1u);
+x_5 = lean_nat_add(x_3, x_4);
+lean_dec(x_3);
+return x_5;
+}
+case 10:
+{
+lean_object* x_6; 
+x_6 = lean_ctor_get(x_1, 1);
+lean_inc(x_6);
+lean_dec(x_1);
+x_1 = x_6;
+goto _start;
+}
+default: 
+{
+uint8_t x_8; uint8_t x_9; 
+x_8 = 0;
+x_9 = l_Lean_Expr_isHeadBetaTarget(x_1, x_8);
+if (x_9 == 0)
+{
+lean_object* x_10; uint8_t x_11; 
+lean_inc(x_1);
+x_10 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_11 = lean_expr_eqv(x_1, x_10);
+lean_dec(x_1);
+if (x_11 == 0)
+{
+x_1 = x_10;
+goto _start;
+}
+else
+{
+lean_object* x_13; 
+lean_dec(x_10);
+x_13 = lean_unsigned_to_nat(0u);
+return x_13;
+}
+}
+else
+{
+lean_object* x_14; 
+x_14 = l_Lean_Expr_headBeta(x_1);
+x_1 = x_14;
+goto _start;
+}
+}
+}
+}
+}
 LEAN_EXPORT lean_object* l_Lean_Expr_nat_x3f(lean_object* x_1) {
 _start:
 {
@@ -28891,7 +28953,7 @@ static lean_object* _init_l___private_Lean_Expr_0__Lean_Expr_updateApp_x21Impl__
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Expr_mkData___closed__5;
 x_2 = l___private_Lean_Expr_0__Lean_Expr_updateApp_x21Impl___closed__1;
-x_3 = lean_unsigned_to_nat(1703u);
+x_3 = lean_unsigned_to_nat(1720u);
 x_4 = lean_unsigned_to_nat(18u);
 x_5 = l_Lean_Expr_appFn_x21___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -28970,7 +29032,7 @@ static lean_object* _init_l_Lean_Expr_updateFVar_x21___closed__2() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Expr_mkData___closed__5;
 x_2 = l_Lean_Expr_updateFVar_x21___closed__1;
-x_3 = lean_unsigned_to_nat(1714u);
+x_3 = lean_unsigned_to_nat(1731u);
 x_4 = lean_unsigned_to_nat(20u);
 x_5 = l_Lean_Expr_fvarId_x21___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -29031,7 +29093,7 @@ static lean_object* _init_l___private_Lean_Expr_0__Lean_Expr_updateConst_x21Impl
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Expr_mkData___closed__5;
 x_2 = l___private_Lean_Expr_0__Lean_Expr_updateConst_x21Impl___closed__1;
-x_3 = lean_unsigned_to_nat(1719u);
+x_3 = lean_unsigned_to_nat(1736u);
 x_4 = lean_unsigned_to_nat(18u);
 x_5 = l_Lean_Expr_constName_x21___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -29097,7 +29159,7 @@ static lean_object* _init_l___private_Lean_Expr_0__Lean_Expr_updateSort_x21Impl_
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Expr_mkData___closed__5;
 x_2 = l___private_Lean_Expr_0__Lean_Expr_updateSort_x21Impl___closed__1;
-x_3 = lean_unsigned_to_nat(1730u);
+x_3 = lean_unsigned_to_nat(1747u);
 x_4 = lean_unsigned_to_nat(14u);
 x_5 = l___private_Lean_Expr_0__Lean_Expr_updateSort_x21Impl___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -29168,7 +29230,7 @@ static lean_object* _init_l___private_Lean_Expr_0__Lean_Expr_updateMData_x21Impl
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Expr_mkData___closed__5;
 x_2 = l___private_Lean_Expr_0__Lean_Expr_updateMData_x21Impl___closed__1;
-x_3 = lean_unsigned_to_nat(1741u);
+x_3 = lean_unsigned_to_nat(1758u);
 x_4 = lean_unsigned_to_nat(17u);
 x_5 = l___private_Lean_Expr_0__Lean_Expr_updateMData_x21Impl___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -29236,7 +29298,7 @@ static lean_object* _init_l___private_Lean_Expr_0__Lean_Expr_updateProj_x21Impl_
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Expr_mkData___closed__5;
 x_2 = l___private_Lean_Expr_0__Lean_Expr_updateProj_x21Impl___closed__1;
-x_3 = lean_unsigned_to_nat(1752u);
+x_3 = lean_unsigned_to_nat(1769u);
 x_4 = lean_unsigned_to_nat(18u);
 x_5 = l___private_Lean_Expr_0__Lean_Expr_updateProj_x21Impl___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -29307,7 +29369,7 @@ static lean_object* _init_l___private_Lean_Expr_0__Lean_Expr_updateForall_x21Imp
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Expr_mkData___closed__5;
 x_2 = l___private_Lean_Expr_0__Lean_Expr_updateForall_x21Impl___closed__1;
-x_3 = lean_unsigned_to_nat(1767u);
+x_3 = lean_unsigned_to_nat(1784u);
 x_4 = lean_unsigned_to_nat(23u);
 x_5 = l___private_Lean_Expr_0__Lean_Expr_updateForall_x21Impl___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -29410,7 +29472,7 @@ static lean_object* _init_l_Lean_Expr_updateForallE_x21___closed__2() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Expr_mkData___closed__5;
 x_2 = l_Lean_Expr_updateForallE_x21___closed__1;
-x_3 = lean_unsigned_to_nat(1778u);
+x_3 = lean_unsigned_to_nat(1795u);
 x_4 = lean_unsigned_to_nat(24u);
 x_5 = l___private_Lean_Expr_0__Lean_Expr_updateForall_x21Impl___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -29516,7 +29578,7 @@ static lean_object* _init_l___private_Lean_Expr_0__Lean_Expr_updateLambda_x21Imp
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Expr_mkData___closed__5;
 x_2 = l___private_Lean_Expr_0__Lean_Expr_updateLambda_x21Impl___closed__1;
-x_3 = lean_unsigned_to_nat(1787u);
+x_3 = lean_unsigned_to_nat(1804u);
 x_4 = lean_unsigned_to_nat(19u);
 x_5 = l___private_Lean_Expr_0__Lean_Expr_updateLambda_x21Impl___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -29619,7 +29681,7 @@ static lean_object* _init_l_Lean_Expr_updateLambdaE_x21___closed__2() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Expr_mkData___closed__5;
 x_2 = l_Lean_Expr_updateLambdaE_x21___closed__1;
-x_3 = lean_unsigned_to_nat(1798u);
+x_3 = lean_unsigned_to_nat(1815u);
 x_4 = lean_unsigned_to_nat(20u);
 x_5 = l___private_Lean_Expr_0__Lean_Expr_updateLambda_x21Impl___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -29717,7 +29779,7 @@ static lean_object* _init_l___private_Lean_Expr_0__Lean_Expr_updateLet_x21Impl__
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Expr_mkData___closed__5;
 x_2 = l___private_Lean_Expr_0__Lean_Expr_updateLet_x21Impl___closed__1;
-x_3 = lean_unsigned_to_nat(1807u);
+x_3 = lean_unsigned_to_nat(1824u);
 x_4 = lean_unsigned_to_nat(22u);
 x_5 = l_Lean_Expr_letName_x21___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
diff --git a/stage0/stdlib/Lean/Meta/AppBuilder.c b/stage0/stdlib/Lean/Meta/AppBuilder.c
index 499cc9b5e7de..dbc16ff6c192 100644
--- a/stage0/stdlib/Lean/Meta/AppBuilder.c
+++ b/stage0/stdlib/Lean/Meta/AppBuilder.c
@@ -44,9 +44,9 @@ lean_object* l_Lean_mkAppN(lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkAppMArgs_loop___closed__1;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkPure(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_mkEqNDRec___closed__5;
-static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__1;
 static lean_object* l_Lean_Meta_mkPropExt___closed__2;
 static lean_object* l_Lean_Meta_mkNumeral___closed__4;
+static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__3;
 lean_object* l_Lean_Meta_mkFreshLevelMVar(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_mkSome___closed__1;
@@ -66,6 +66,7 @@ lean_object* l_Lean_Core_instantiateTypeLevelParams(lean_object*, lean_object*,
 static lean_object* l_Lean_Meta_congrArg_x3f___lambda__4___closed__5;
 lean_object* l_Lean_ConstantInfo_levelParams(lean_object*);
 lean_object* l_Lean_indentD(lean_object*);
+static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__13;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkEqSymm(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t l_Lean_Exception_isInterrupt(lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkBinaryOp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -77,6 +78,7 @@ static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilder
 static lean_object* l_Lean_Meta_mkMul___closed__3;
 static lean_object* l_Lean_Meta_mkAdd___closed__4;
 lean_object* l_Lean_Meta_isExprDefEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__9;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkCongrFun___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkAppMArgs_loop(lean_object*, 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_congrArg_x3f___lambda__4___closed__7;
@@ -87,9 +89,11 @@ static lean_object* l_Lean_Meta_mkLetFun___closed__1;
 static lean_object* l_Lean_Meta_mkOfEqTrue___closed__1;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_throwAppBuilderException(lean_object*);
 lean_object* l_Lean_Name_toString(lean_object*, uint8_t, lean_object*);
+static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__7;
 static lean_object* l_Lean_Meta_mkEqRec___closed__2;
 static lean_object* l_Lean_Meta_mkEqNDRec___closed__4;
 lean_object* l_Lean_Expr_sort___override(lean_object*);
+static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__10;
 lean_object* l_Lean_Meta_trySynthInstance(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_MessageData_ofList(lean_object*);
 static lean_object* l_Lean_Meta_mkDecideProof___closed__1;
@@ -106,6 +110,7 @@ extern uint8_t l_instInhabitedBool;
 static lean_object* l_Lean_Meta_mkNumeral___closed__3;
 static lean_object* l_Lean_Meta_mkIffOfEq___closed__1;
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___rarg___lambda__1___closed__8;
+static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__12;
 static lean_object* l_Lean_Meta_mkEqMPR___closed__2;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace(lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_mkCongr___closed__2;
@@ -115,6 +120,7 @@ lean_object* lean_array_fget(lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___rarg___lambda__3___closed__6;
 static lean_object* l_Lean_Meta_mkNoConfusion___closed__5;
 static lean_object* l_Lean_Meta_mkForallCongr___closed__1;
+LEAN_EXPORT lean_object* l_Lean_Meta_mkHEqOfEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_isRefl_x3f(lean_object*);
 static lean_object* l_Lean_Meta_congrArg_x3f___closed__1;
 static lean_object* l_Lean_Meta_congrArg_x3f___lambda__4___closed__9;
@@ -142,23 +148,24 @@ static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_throwAppBuilde
 LEAN_EXPORT lean_object* l_List_anyM___at___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkAppMFinal___spec__6___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___rarg___lambda__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_mkApp4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_mkHEqOfEq___closed__1;
 static lean_object* l_Lean_Meta_mkHEqSymm___closed__2;
 static lean_object* l_Lean_Meta_mkProjection___lambda__2___closed__6;
 lean_object* l_Lean_Exception_toMessageData(lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___rarg___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* l_Lean_Meta_getDecLevel(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkAppMArgs_loop___closed__6;
+static lean_object* l_Lean_Meta_mkHEqOfEq___closed__3;
 static lean_object* l_Lean_Meta_mkSome___closed__2;
 static lean_object* l_Lean_Meta_mkAdd___closed__3;
 LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_AppBuilder_0__Lean_Meta_throwAppBuilderException___spec__1___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Expr_appArg_x21(lean_object*);
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___rarg___lambda__3___closed__3;
-LEAN_EXPORT lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301_(lean_object*);
 static lean_object* l_Lean_Meta_mkImpCongr___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkAdd(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_mkCongrArg___closed__2;
+static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__5;
 lean_object* l_Lean_getStructureFields(lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__14;
 static lean_object* l_Lean_Meta_mkNoConfusion___closed__7;
 uint8_t l_Lean_Expr_hasMVar(lean_object*);
 static lean_object* l_Lean_Meta_mkProjection___lambda__2___closed__4;
@@ -192,17 +199,16 @@ LEAN_EXPORT lean_object* l_Lean_Meta_congrArg_x3f___lambda__3(lean_object*, lean
 static lean_object* l_Lean_Meta_mkFunExt___closed__1;
 static lean_object* l_Lean_Meta_mkEqFalse_x27___closed__1;
 static lean_object* l_Lean_Meta_mkProjection___lambda__2___closed__1;
+static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__11;
 static lean_object* l_Lean_Meta_mkDecide___closed__3;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___at_Lean_Meta_mkAppM_x27___spec__1___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_mkHEqTrans___closed__1;
-static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__8;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkCongrFun___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkAppOptMAux___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkImpDepCongrCtx(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_mkEqTrans___closed__1;
 static lean_object* l_Lean_Meta_mkSub___closed__2;
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___rarg___lambda__3___closed__1;
-static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__12;
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkAppOptMAux___closed__10;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkAppMArgs(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_isMonad_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -216,6 +222,7 @@ LEAN_EXPORT lean_object* l_List_anyM___at___private_Lean_Meta_AppBuilder_0__Lean
 LEAN_EXPORT lean_object* l_Lean_Meta_mkEqNDRec(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_mkHEqRefl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_SavedState_restore(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__1;
 static lean_object* l_Lean_Meta_mkLetBodyCongr___closed__2;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___at_Lean_Meta_mkAppM___spec__1___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_List_mapTR_loop___at_Lean_MessageData_instCoeListExpr___spec__1(lean_object*, lean_object*);
@@ -238,6 +245,7 @@ static lean_object* l_Lean_Meta_mkNumeral___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkAbsurd(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_isMonad_x3f___closed__2;
 static lean_object* l_Lean_Meta_mkAbsurd___closed__1;
+static lean_object* l_Lean_Meta_mkHEqOfEq___closed__2;
 extern lean_object* l_Lean_checkEmoji;
 lean_object* lean_st_ref_get(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_mkEqTrans(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -260,7 +268,6 @@ lean_object* l_Lean_Name_num___override(lean_object*, lean_object*);
 lean_object* l_Lean_Meta_synthInstance(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_hasTypeMsg___closed__3;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkCongrArg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__10;
 static lean_object* l_Lean_Meta_mkLE___closed__1;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkLE(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_mkId(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -269,7 +276,6 @@ extern lean_object* l_Lean_levelZero;
 static lean_object* l_Lean_Meta_congrArg_x3f___lambda__4___closed__1;
 static lean_object* l_Lean_Meta_mkDecideProof___closed__5;
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___rarg___lambda__3___closed__5;
-static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__5;
 uint8_t l_Lean_Level_hasMVar(lean_object*);
 static lean_object* l_Lean_Meta_mkEq___closed__1;
 lean_object* l_Lean_Meta_whnfD(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -277,14 +283,13 @@ LEAN_EXPORT lean_object* l_Lean_Meta_congrArg_x3f(lean_object*, lean_object*, le
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkFun(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_mkDecide(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_mkCongr___closed__1;
-static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__3;
 static lean_object* l_Lean_Meta_mkProjection___lambda__2___closed__7;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkForallCongr(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__9;
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkAppMArgs_loop___closed__9;
 lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_congrArg_x3f___lambda__4___closed__6;
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_throwAppBuilderException___rarg___closed__1;
+static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__6;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkEqOfHEq___lambda__1___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_Meta_mkLt___closed__2;
 static lean_object* l_Lean_Meta_mkHEqSymm___closed__1;
@@ -306,6 +311,7 @@ lean_object* l_Lean_Expr_appFn_x21(lean_object*);
 extern lean_object* l_Lean_Meta_instMonadMetaM;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_throwAppBuilderException___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_mkSub___closed__4;
+LEAN_EXPORT lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417_(lean_object*);
 static lean_object* l_Lean_Meta_mkAdd___closed__2;
 static lean_object* l_Lean_Meta_mkNoConfusion___closed__1;
 static lean_object* l_Lean_Meta_mkPure___closed__1;
@@ -353,13 +359,13 @@ lean_object* l_Lean_Expr_app___override(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkAppOptMAux___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_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_mkProjection___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_mkProjection___lambda__2___closed__8;
-static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__2;
 uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_List_mapM_loop___at___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkFun___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_mkDefault___closed__3;
 lean_object* l_Lean_MVarId_getDecl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_mkApp3(lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkAppMArgs_loop___closed__5;
+static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__8;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___at_Lean_Meta_mkAppOptM___spec__1___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_mkEqRec___closed__1;
 static lean_object* l_Lean_Meta_mkEqSymm___closed__4;
@@ -376,8 +382,6 @@ static lean_object* l_List_mapTR_loop___at_Lean_Meta_mkAppOptM___spec__2___close
 static lean_object* l_Lean_Meta_mkProjection___lambda__2___closed__2;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkAppMFinal___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_mkListLit(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__13;
-static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__4;
 lean_object* l_Lean_Name_mkStr2(lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_mkLetValCongr___closed__1;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkEqRefl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -391,6 +395,7 @@ static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkAppMArgs_loo
 static lean_object* l_Lean_Meta_mkEqTrue___closed__1;
 static lean_object* l_Lean_Meta_mkIffOfEq___closed__2;
 LEAN_EXPORT lean_object* l_List_mapM_loop___at___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkFun___spec__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_AppBuilder___hyg_7417____closed__14;
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_throwAppBuilderException___rarg___closed__3;
 lean_object* l_Lean_Meta_mkForallFVars(lean_object*, lean_object*, uint8_t, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_hasTypeMsg___closed__1;
@@ -410,8 +415,8 @@ uint8_t l_Lean_isStructure(lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_mkDecide___closed__1;
 static lean_object* l_Lean_Meta_mkEqSymm___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkFunExt(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__11;
 static lean_object* l_Lean_Meta_mkEqNDRec___closed__3;
+static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__4;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___at_Lean_Meta_mkAppOptM_x27___spec__1___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___rarg___lambda__1___closed__2;
 static lean_object* l_Lean_Meta_mkListLit___closed__5;
@@ -438,10 +443,10 @@ LEAN_EXPORT lean_object* l_Lean_Meta_mkEqFalse(lean_object*, lean_object*, lean_
 static lean_object* l_Lean_Meta_mkProjection___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkEqOfHEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_array_uget(lean_object*, size_t);
+static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__2;
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkAppOptMAux___closed__6;
 LEAN_EXPORT lean_object* l_Lean_Meta_congrArg_x3f___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 size_t lean_array_size(lean_object*);
-static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__7;
 lean_object* l_instInhabitedOfMonad___rarg(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_mkProjection___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_object*);
 lean_object* l_Lean_addTrace___at_Lean_Meta_processPostponed_loop___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -509,7 +514,6 @@ LEAN_EXPORT lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBu
 static lean_object* l_Lean_Meta_mkLT___closed__1;
 static lean_object* l_Lean_Meta_mkSub___closed__3;
 static lean_object* l_Lean_Meta_mkEqOfHEq___closed__2;
-static lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__6;
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_throwAppBuilderException___rarg___closed__2;
 static lean_object* l___private_Lean_Meta_AppBuilder_0__Lean_Meta_mkAppMArgs_loop___closed__4;
 LEAN_EXPORT lean_object* l_Lean_Meta_mkArrayLit(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -4040,6 +4044,184 @@ lean_dec(x_5);
 return x_11;
 }
 }
+static lean_object* _init_l_Lean_Meta_mkHEqOfEq___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("heq_of_eq", 9, 9);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_mkHEqOfEq___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_mkHEqOfEq___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_mkHEqOfEq___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_mkEqSymm___closed__3;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_mkHEqOfEq(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:
+{
+lean_object* x_7; 
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+lean_inc(x_2);
+lean_inc(x_1);
+x_7 = l___private_Lean_Meta_AppBuilder_0__Lean_Meta_infer(x_1, x_2, x_3, x_4, x_5, 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; uint8_t x_12; 
+x_8 = lean_ctor_get(x_7, 0);
+lean_inc(x_8);
+x_9 = lean_ctor_get(x_7, 1);
+lean_inc(x_9);
+lean_dec(x_7);
+x_10 = l_Lean_Meta_mkEq___closed__2;
+x_11 = lean_unsigned_to_nat(3u);
+x_12 = l_Lean_Expr_isAppOfArity(x_8, x_10, x_11);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+lean_dec(x_8);
+x_13 = l_Lean_indentExpr(x_1);
+x_14 = l_Lean_Meta_mkHEqOfEq___closed__3;
+x_15 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_15, 0, x_14);
+lean_ctor_set(x_15, 1, x_13);
+x_16 = l___private_Lean_Meta_AppBuilder_0__Lean_Meta_hasTypeMsg___closed__2;
+x_17 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_17, 0, x_15);
+lean_ctor_set(x_17, 1, x_16);
+x_18 = l_Lean_Meta_mkHEqOfEq___closed__2;
+x_19 = l___private_Lean_Meta_AppBuilder_0__Lean_Meta_throwAppBuilderException___rarg(x_18, x_17, x_2, x_3, x_4, x_5, x_9);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_19;
+}
+else
+{
+lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+x_20 = l_Lean_Expr_appFn_x21(x_8);
+x_21 = l_Lean_Expr_appFn_x21(x_20);
+x_22 = l_Lean_Expr_appArg_x21(x_21);
+lean_dec(x_21);
+x_23 = l_Lean_Expr_appArg_x21(x_20);
+lean_dec(x_20);
+x_24 = l_Lean_Expr_appArg_x21(x_8);
+lean_dec(x_8);
+lean_inc(x_22);
+x_25 = l_Lean_Meta_getLevel(x_22, x_2, x_3, x_4, x_5, x_9);
+if (lean_obj_tag(x_25) == 0)
+{
+uint8_t x_26; 
+x_26 = !lean_is_exclusive(x_25);
+if (x_26 == 0)
+{
+lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; 
+x_27 = lean_ctor_get(x_25, 0);
+x_28 = lean_box(0);
+x_29 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_29, 0, x_27);
+lean_ctor_set(x_29, 1, x_28);
+x_30 = l_Lean_Meta_mkHEqOfEq___closed__2;
+x_31 = l_Lean_Expr_const___override(x_30, x_29);
+x_32 = l_Lean_mkApp4(x_31, x_22, x_23, x_24, x_1);
+lean_ctor_set(x_25, 0, x_32);
+return x_25;
+}
+else
+{
+lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+x_33 = lean_ctor_get(x_25, 0);
+x_34 = lean_ctor_get(x_25, 1);
+lean_inc(x_34);
+lean_inc(x_33);
+lean_dec(x_25);
+x_35 = lean_box(0);
+x_36 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_36, 0, x_33);
+lean_ctor_set(x_36, 1, x_35);
+x_37 = l_Lean_Meta_mkHEqOfEq___closed__2;
+x_38 = l_Lean_Expr_const___override(x_37, x_36);
+x_39 = l_Lean_mkApp4(x_38, x_22, x_23, x_24, x_1);
+x_40 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_40, 0, x_39);
+lean_ctor_set(x_40, 1, x_34);
+return x_40;
+}
+}
+else
+{
+uint8_t x_41; 
+lean_dec(x_24);
+lean_dec(x_23);
+lean_dec(x_22);
+lean_dec(x_1);
+x_41 = !lean_is_exclusive(x_25);
+if (x_41 == 0)
+{
+return x_25;
+}
+else
+{
+lean_object* x_42; lean_object* x_43; lean_object* x_44; 
+x_42 = lean_ctor_get(x_25, 0);
+x_43 = lean_ctor_get(x_25, 1);
+lean_inc(x_43);
+lean_inc(x_42);
+lean_dec(x_25);
+x_44 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_44, 0, x_42);
+lean_ctor_set(x_44, 1, x_43);
+return x_44;
+}
+}
+}
+}
+else
+{
+uint8_t x_45; 
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_45 = !lean_is_exclusive(x_7);
+if (x_45 == 0)
+{
+return x_7;
+}
+else
+{
+lean_object* x_46; lean_object* x_47; lean_object* x_48; 
+x_46 = lean_ctor_get(x_7, 0);
+x_47 = lean_ctor_get(x_7, 1);
+lean_inc(x_47);
+lean_inc(x_46);
+lean_dec(x_7);
+x_48 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_48, 0, x_46);
+lean_ctor_set(x_48, 1, x_47);
+return x_48;
+}
+}
+}
+}
 LEAN_EXPORT lean_object* l_Lean_Meta_isRefl_x3f(lean_object* x_1) {
 _start:
 {
@@ -4205,7 +4387,7 @@ static lean_object* _init_l_Lean_Meta_congrArg_x3f___lambda__4___closed__8() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Meta_congrArg_x3f___lambda__4___closed__5;
 x_2 = l_Lean_Meta_congrArg_x3f___lambda__4___closed__6;
-x_3 = lean_unsigned_to_nat(197u);
+x_3 = lean_unsigned_to_nat(205u);
 x_4 = lean_unsigned_to_nat(48u);
 x_5 = l_Lean_Meta_congrArg_x3f___lambda__4___closed__7;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -4463,7 +4645,7 @@ static lean_object* _init_l_Lean_Meta_congrArg_x3f___closed__3() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Meta_congrArg_x3f___lambda__4___closed__5;
 x_2 = l_Lean_Meta_congrArg_x3f___lambda__4___closed__6;
-x_3 = lean_unsigned_to_nat(194u);
+x_3 = lean_unsigned_to_nat(202u);
 x_4 = lean_unsigned_to_nat(49u);
 x_5 = l_Lean_Meta_congrArg_x3f___lambda__4___closed__7;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -16831,7 +17013,7 @@ return x_16;
 }
 }
 }
-static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__1() {
+static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -16839,27 +17021,27 @@ x_1 = lean_mk_string_unchecked("Lean", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__2() {
+static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__1;
+x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__1;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__3() {
+static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__2;
+x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__2;
 x_2 = l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___rarg___lambda__3___closed__1;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__4() {
+static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__4() {
 _start:
 {
 lean_object* x_1; 
@@ -16867,17 +17049,17 @@ x_1 = lean_mk_string_unchecked("initFn", 6, 6);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__5() {
+static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__3;
-x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__4;
+x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__3;
+x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__4;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__6() {
+static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -16885,37 +17067,37 @@ x_1 = lean_mk_string_unchecked("_@", 2, 2);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__7() {
+static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__5;
-x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__6;
+x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__5;
+x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__6;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__8() {
+static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__8() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__7;
-x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__1;
+x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__7;
+x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__1;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__9() {
+static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__9() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__8;
+x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__8;
 x_2 = l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___rarg___lambda__3___closed__1;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__10() {
+static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__10() {
 _start:
 {
 lean_object* x_1; 
@@ -16923,17 +17105,17 @@ x_1 = lean_mk_string_unchecked("AppBuilder", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__11() {
+static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__11() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__9;
-x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__10;
+x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__9;
+x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__10;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__12() {
+static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__12() {
 _start:
 {
 lean_object* x_1; 
@@ -16941,33 +17123,33 @@ x_1 = lean_mk_string_unchecked("_hyg", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__13() {
+static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__13() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__11;
-x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__12;
+x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__11;
+x_2 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__12;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__14() {
+static lean_object* _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__14() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__13;
-x_2 = lean_unsigned_to_nat(7301u);
+x_1 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__13;
+x_2 = lean_unsigned_to_nat(7417u);
 x_3 = l_Lean_Name_num___override(x_1, x_2);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; uint8_t x_3; lean_object* x_4; lean_object* x_5; 
 x_2 = l___private_Lean_Meta_AppBuilder_0__Lean_Meta_withAppBuilderTrace___rarg___closed__1;
 x_3 = 0;
-x_4 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__14;
+x_4 = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__14;
 x_5 = l_Lean_registerTraceClass(x_2, x_3, x_4, x_1);
 if (lean_obj_tag(x_5) == 0)
 {
@@ -17142,6 +17324,12 @@ l_Lean_Meta_mkEqOfHEq___closed__4 = _init_l_Lean_Meta_mkEqOfHEq___closed__4();
 lean_mark_persistent(l_Lean_Meta_mkEqOfHEq___closed__4);
 l_Lean_Meta_mkEqOfHEq___closed__5 = _init_l_Lean_Meta_mkEqOfHEq___closed__5();
 lean_mark_persistent(l_Lean_Meta_mkEqOfHEq___closed__5);
+l_Lean_Meta_mkHEqOfEq___closed__1 = _init_l_Lean_Meta_mkHEqOfEq___closed__1();
+lean_mark_persistent(l_Lean_Meta_mkHEqOfEq___closed__1);
+l_Lean_Meta_mkHEqOfEq___closed__2 = _init_l_Lean_Meta_mkHEqOfEq___closed__2();
+lean_mark_persistent(l_Lean_Meta_mkHEqOfEq___closed__2);
+l_Lean_Meta_mkHEqOfEq___closed__3 = _init_l_Lean_Meta_mkHEqOfEq___closed__3();
+lean_mark_persistent(l_Lean_Meta_mkHEqOfEq___closed__3);
 l_panic___at_Lean_Meta_congrArg_x3f___spec__1___closed__1 = _init_l_panic___at_Lean_Meta_congrArg_x3f___spec__1___closed__1();
 lean_mark_persistent(l_panic___at_Lean_Meta_congrArg_x3f___spec__1___closed__1);
 l_Lean_Meta_congrArg_x3f___lambda__4___closed__1 = _init_l_Lean_Meta_congrArg_x3f___lambda__4___closed__1();
@@ -17518,35 +17706,35 @@ l_Lean_Meta_mkIffOfEq___closed__2 = _init_l_Lean_Meta_mkIffOfEq___closed__2();
 lean_mark_persistent(l_Lean_Meta_mkIffOfEq___closed__2);
 l_Lean_Meta_mkIffOfEq___closed__3 = _init_l_Lean_Meta_mkIffOfEq___closed__3();
 lean_mark_persistent(l_Lean_Meta_mkIffOfEq___closed__3);
-l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__1 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__1();
-lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__1);
-l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__2 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__2();
-lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__2);
-l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__3 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__3();
-lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__3);
-l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__4 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__4();
-lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__4);
-l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__5 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__5();
-lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__5);
-l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__6 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__6();
-lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__6);
-l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__7 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__7();
-lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__7);
-l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__8 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__8();
-lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__8);
-l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__9 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__9();
-lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__9);
-l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__10 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__10();
-lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__10);
-l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__11 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__11();
-lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__11);
-l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__12 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__12();
-lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__12);
-l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__13 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__13();
-lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__13);
-l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__14 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__14();
-lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301____closed__14);
-if (builtin) {res = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7301_(lean_io_mk_world());
+l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__1 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__1();
+lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__1);
+l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__2 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__2();
+lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__2);
+l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__3 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__3();
+lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__3);
+l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__4 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__4();
+lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__4);
+l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__5 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__5();
+lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__5);
+l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__6 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__6();
+lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__6);
+l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__7 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__7();
+lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__7);
+l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__8 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__8();
+lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__8);
+l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__9 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__9();
+lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__9);
+l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__10 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__10();
+lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__10);
+l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__11 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__11();
+lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__11);
+l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__12 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__12();
+lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__12);
+l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__13 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__13();
+lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__13);
+l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__14 = _init_l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__14();
+lean_mark_persistent(l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417____closed__14);
+if (builtin) {res = l_Lean_Meta_initFn____x40_Lean_Meta_AppBuilder___hyg_7417_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }return lean_io_result_mk_ok(lean_box(0));
diff --git a/stage0/stdlib/Lean/Meta/Closure.c b/stage0/stdlib/Lean/Meta/Closure.c
index bf4fa5a80746..9d2d85e398ce 100644
--- a/stage0/stdlib/Lean/Meta/Closure.c
+++ b/stage0/stdlib/Lean/Meta/Closure.c
@@ -6686,7 +6686,7 @@ static lean_object* _init_l_Lean_Meta_Closure_collectExprAux___closed__4() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Meta_Closure_collectExprAux___closed__1;
 x_2 = l_Lean_Meta_Closure_collectExprAux___closed__2;
-x_3 = lean_unsigned_to_nat(1741u);
+x_3 = lean_unsigned_to_nat(1758u);
 x_4 = lean_unsigned_to_nat(17u);
 x_5 = l_Lean_Meta_Closure_collectExprAux___closed__3;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -6715,7 +6715,7 @@ static lean_object* _init_l_Lean_Meta_Closure_collectExprAux___closed__7() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Meta_Closure_collectExprAux___closed__1;
 x_2 = l_Lean_Meta_Closure_collectExprAux___closed__5;
-x_3 = lean_unsigned_to_nat(1752u);
+x_3 = lean_unsigned_to_nat(1769u);
 x_4 = lean_unsigned_to_nat(18u);
 x_5 = l_Lean_Meta_Closure_collectExprAux___closed__6;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -6744,7 +6744,7 @@ static lean_object* _init_l_Lean_Meta_Closure_collectExprAux___closed__10() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Meta_Closure_collectExprAux___closed__1;
 x_2 = l_Lean_Meta_Closure_collectExprAux___closed__8;
-x_3 = lean_unsigned_to_nat(1703u);
+x_3 = lean_unsigned_to_nat(1720u);
 x_4 = lean_unsigned_to_nat(18u);
 x_5 = l_Lean_Meta_Closure_collectExprAux___closed__9;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -6773,7 +6773,7 @@ static lean_object* _init_l_Lean_Meta_Closure_collectExprAux___closed__13() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Meta_Closure_collectExprAux___closed__1;
 x_2 = l_Lean_Meta_Closure_collectExprAux___closed__11;
-x_3 = lean_unsigned_to_nat(1798u);
+x_3 = lean_unsigned_to_nat(1815u);
 x_4 = lean_unsigned_to_nat(20u);
 x_5 = l_Lean_Meta_Closure_collectExprAux___closed__12;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -6802,7 +6802,7 @@ static lean_object* _init_l_Lean_Meta_Closure_collectExprAux___closed__16() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Meta_Closure_collectExprAux___closed__1;
 x_2 = l_Lean_Meta_Closure_collectExprAux___closed__14;
-x_3 = lean_unsigned_to_nat(1778u);
+x_3 = lean_unsigned_to_nat(1795u);
 x_4 = lean_unsigned_to_nat(24u);
 x_5 = l_Lean_Meta_Closure_collectExprAux___closed__15;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -6831,7 +6831,7 @@ static lean_object* _init_l_Lean_Meta_Closure_collectExprAux___closed__19() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Meta_Closure_collectExprAux___closed__1;
 x_2 = l_Lean_Meta_Closure_collectExprAux___closed__17;
-x_3 = lean_unsigned_to_nat(1807u);
+x_3 = lean_unsigned_to_nat(1824u);
 x_4 = lean_unsigned_to_nat(22u);
 x_5 = l_Lean_Meta_Closure_collectExprAux___closed__18;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
diff --git a/stage0/stdlib/Lean/Meta/ExprLens.c b/stage0/stdlib/Lean/Meta/ExprLens.c
index e00a4ad8d4e8..25099edcca02 100644
--- a/stage0/stdlib/Lean/Meta/ExprLens.c
+++ b/stage0/stdlib/Lean/Meta/ExprLens.c
@@ -417,7 +417,7 @@ static lean_object* _init_l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord_
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord___rarg___lambda__3___closed__1;
 x_2 = l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord___rarg___lambda__3___closed__2;
-x_3 = lean_unsigned_to_nat(1703u);
+x_3 = lean_unsigned_to_nat(1720u);
 x_4 = lean_unsigned_to_nat(18u);
 x_5 = l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord___rarg___lambda__3___closed__3;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -603,7 +603,7 @@ static lean_object* _init_l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord_
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord___rarg___lambda__3___closed__1;
 x_2 = l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord___rarg___lambda__8___closed__1;
-x_3 = lean_unsigned_to_nat(1807u);
+x_3 = lean_unsigned_to_nat(1824u);
 x_4 = lean_unsigned_to_nat(22u);
 x_5 = l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord___rarg___lambda__8___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -804,7 +804,7 @@ static lean_object* _init_l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord_
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord___rarg___lambda__3___closed__1;
 x_2 = l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord___rarg___lambda__10___closed__1;
-x_3 = lean_unsigned_to_nat(1798u);
+x_3 = lean_unsigned_to_nat(1815u);
 x_4 = lean_unsigned_to_nat(20u);
 x_5 = l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord___rarg___lambda__10___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -928,7 +928,7 @@ static lean_object* _init_l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord_
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord___rarg___lambda__3___closed__1;
 x_2 = l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord___rarg___lambda__11___closed__1;
-x_3 = lean_unsigned_to_nat(1778u);
+x_3 = lean_unsigned_to_nat(1795u);
 x_4 = lean_unsigned_to_nat(24u);
 x_5 = l___private_Lean_Meta_ExprLens_0__Lean_Meta_lensCoord___rarg___lambda__11___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
diff --git a/stage0/stdlib/Lean/Meta/Tactic/FunInd.c b/stage0/stdlib/Lean/Meta/Tactic/FunInd.c
index f4903b6a03a8..9ff57d2014b6 100644
--- a/stage0/stdlib/Lean/Meta/Tactic/FunInd.c
+++ b/stage0/stdlib/Lean/Meta/Tactic/FunInd.c
@@ -52800,7 +52800,7 @@ static lean_object* _init_l_Lean_Tactic_FunInd_buildInductionBody___lambda__18__
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Tactic_FunInd_buildInductionBody___lambda__18___closed__1;
 x_2 = l_Lean_Tactic_FunInd_buildInductionBody___lambda__18___closed__2;
-x_3 = lean_unsigned_to_nat(1741u);
+x_3 = lean_unsigned_to_nat(1758u);
 x_4 = lean_unsigned_to_nat(17u);
 x_5 = l_Lean_Tactic_FunInd_buildInductionBody___lambda__18___closed__3;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Grind.c b/stage0/stdlib/Lean/Meta/Tactic/Grind.c
index 2c55cd6a5ef1..b82803572d46 100644
--- a/stage0/stdlib/Lean/Meta/Tactic/Grind.c
+++ b/stage0/stdlib/Lean/Meta/Tactic/Grind.c
@@ -1,6 +1,6 @@
 // Lean compiler output
 // Module: Lean.Meta.Tactic.Grind
-// Imports: Lean.Meta.Tactic.Grind.Attr Lean.Meta.Tactic.Grind.RevertAll Lean.Meta.Tactic.Grind.Types Lean.Meta.Tactic.Grind.Preprocessor Lean.Meta.Tactic.Grind.Util Lean.Meta.Tactic.Grind.Cases Lean.Meta.Tactic.Grind.Injection Lean.Meta.Tactic.Grind.Core Lean.Meta.Tactic.Grind.Canon Lean.Meta.Tactic.Grind.MarkNestedProofs Lean.Meta.Tactic.Grind.Inv Lean.Meta.Tactic.Grind.Proof Lean.Meta.Tactic.Grind.Propagate Lean.Meta.Tactic.Grind.PP Lean.Meta.Tactic.Grind.Simp
+// Imports: Lean.Meta.Tactic.Grind.Attr Lean.Meta.Tactic.Grind.RevertAll Lean.Meta.Tactic.Grind.Types Lean.Meta.Tactic.Grind.Preprocessor Lean.Meta.Tactic.Grind.Util Lean.Meta.Tactic.Grind.Cases Lean.Meta.Tactic.Grind.Injection Lean.Meta.Tactic.Grind.Core Lean.Meta.Tactic.Grind.Canon Lean.Meta.Tactic.Grind.MarkNestedProofs Lean.Meta.Tactic.Grind.Inv Lean.Meta.Tactic.Grind.Proof Lean.Meta.Tactic.Grind.Propagate Lean.Meta.Tactic.Grind.PP Lean.Meta.Tactic.Grind.Simp Lean.Meta.Tactic.Grind.Ctor Lean.Meta.Tactic.Grind.Parser
 #include <lean/lean.h>
 #if defined(__clang__)
 #pragma clang diagnostic ignored "-Wunused-parameter"
@@ -13,25 +13,35 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
+static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__1;
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_188____closed__1;
+static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__2;
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_40____closed__2;
 LEAN_EXPORT lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_151_(lean_object*);
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_40____closed__3;
 LEAN_EXPORT lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_262_(lean_object*);
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_225____closed__3;
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__2;
+LEAN_EXPORT lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336_(lean_object*);
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__14;
 LEAN_EXPORT lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_188_(lean_object*);
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__15;
 LEAN_EXPORT lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_114_(lean_object*);
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__10;
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_188____closed__2;
+static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__3;
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_151____closed__2;
+static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__3;
+static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__3;
+lean_object* l_Lean_Name_mkStr3(lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_40____closed__1;
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_225____closed__1;
 lean_object* l_Lean_registerTraceClass(lean_object*, uint8_t, lean_object*, lean_object*);
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__4;
+static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__1;
+static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__2;
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__9;
+LEAN_EXPORT lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373_(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3_(lean_object*);
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_262____closed__1;
 lean_object* l_Lean_Name_num___override(lean_object*, lean_object*);
@@ -47,6 +57,8 @@ static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_114____clo
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__13;
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__1;
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_188____closed__3;
+LEAN_EXPORT lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299_(lean_object*);
+static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__1;
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__11;
 lean_object* l_Lean_Name_mkStr2(lean_object*, lean_object*);
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_114____closed__3;
@@ -56,6 +68,7 @@ static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____close
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_114____closed__1;
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_151____closed__3;
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__12;
+static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__2;
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_262____closed__2;
 static lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__6;
 LEAN_EXPORT lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_77_(lean_object*);
@@ -438,18 +451,19 @@ static lean_object* _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_225_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("simp", 4, 4);
+x_1 = lean_mk_string_unchecked("proofs", 6, 6);
 return x_1;
 }
 }
 static lean_object* _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_225____closed__2() {
 _start:
 {
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
 x_1 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__1;
-x_2 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_225____closed__1;
-x_3 = l_Lean_Name_mkStr2(x_1, x_2);
-return x_3;
+x_2 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_188____closed__1;
+x_3 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_225____closed__1;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
 }
 }
 static lean_object* _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_225____closed__3() {
@@ -477,7 +491,7 @@ static lean_object* _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_262_
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("congr", 5, 5);
+x_1 = lean_mk_string_unchecked("simp", 4, 4);
 return x_1;
 }
 }
@@ -512,6 +526,124 @@ x_5 = l_Lean_registerTraceClass(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
+static lean_object* _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("congr", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__1;
+x_2 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__1;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__17;
+x_2 = lean_unsigned_to_nat(299u);
+x_3 = l_Lean_Name_num___override(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299_(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; uint8_t x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__2;
+x_3 = 0;
+x_4 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__3;
+x_5 = l_Lean_registerTraceClass(x_2, x_3, x_4, x_1);
+return x_5;
+}
+}
+static lean_object* _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("proof", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__1;
+x_2 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__1;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__17;
+x_2 = lean_unsigned_to_nat(336u);
+x_3 = l_Lean_Name_num___override(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336_(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; uint8_t x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__2;
+x_3 = 0;
+x_4 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__3;
+x_5 = l_Lean_registerTraceClass(x_2, x_3, x_4, x_1);
+return x_5;
+}
+}
+static lean_object* _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("detail", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__1;
+x_2 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__1;
+x_3 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__1;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
+}
+}
+static lean_object* _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__17;
+x_2 = lean_unsigned_to_nat(373u);
+x_3 = l_Lean_Name_num___override(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373_(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; uint8_t x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__2;
+x_3 = 0;
+x_4 = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__3;
+x_5 = l_Lean_registerTraceClass(x_2, x_3, x_4, x_1);
+return x_5;
+}
+}
 lean_object* initialize_Lean_Meta_Tactic_Grind_Attr(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Meta_Tactic_Grind_RevertAll(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Meta_Tactic_Grind_Types(uint8_t builtin, lean_object*);
@@ -527,6 +659,8 @@ lean_object* initialize_Lean_Meta_Tactic_Grind_Proof(uint8_t builtin, lean_objec
 lean_object* initialize_Lean_Meta_Tactic_Grind_Propagate(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Meta_Tactic_Grind_PP(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Meta_Tactic_Grind_Simp(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind_Ctor(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind_Parser(uint8_t builtin, lean_object*);
 static bool _G_initialized = false;
 LEAN_EXPORT lean_object* initialize_Lean_Meta_Tactic_Grind(uint8_t builtin, lean_object* w) {
 lean_object * res;
@@ -577,6 +711,12 @@ lean_dec_ref(res);
 res = initialize_Lean_Meta_Tactic_Grind_Simp(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
+res = initialize_Lean_Meta_Tactic_Grind_Ctor(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+res = initialize_Lean_Meta_Tactic_Grind_Parser(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
 l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__1 = _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__1();
 lean_mark_persistent(l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__1);
 l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__2 = _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_3____closed__2();
@@ -679,6 +819,33 @@ lean_mark_persistent(l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_262____cl
 if (builtin) {res = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_262_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
+}l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__1 = _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__1();
+lean_mark_persistent(l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__1);
+l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__2 = _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__2();
+lean_mark_persistent(l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__2);
+l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__3 = _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__3();
+lean_mark_persistent(l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299____closed__3);
+if (builtin) {res = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_299_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__1 = _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__1();
+lean_mark_persistent(l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__1);
+l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__2 = _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__2();
+lean_mark_persistent(l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__2);
+l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__3 = _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__3();
+lean_mark_persistent(l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336____closed__3);
+if (builtin) {res = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_336_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__1 = _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__1();
+lean_mark_persistent(l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__1);
+l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__2 = _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__2();
+lean_mark_persistent(l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__2);
+l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__3 = _init_l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__3();
+lean_mark_persistent(l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373____closed__3);
+if (builtin) {res = l_Lean_initFn____x40_Lean_Meta_Tactic_Grind___hyg_373_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
 }return lean_io_result_mk_ok(lean_box(0));
 }
 #ifdef __cplusplus
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Grind/Core.c b/stage0/stdlib/Lean/Meta/Tactic/Grind/Core.c
index b3c8304ec08a..bf0206f87bc8 100644
--- a/stage0/stdlib/Lean/Meta/Tactic/Grind/Core.c
+++ b/stage0/stdlib/Lean/Meta/Tactic/Grind/Core.c
@@ -1,6 +1,6 @@
 // Lean compiler output
 // Module: Lean.Meta.Tactic.Grind.Core
-// Imports: Init.Grind.Util Lean.Meta.LitValues Lean.Meta.Tactic.Grind.Types Lean.Meta.Tactic.Grind.Inv Lean.Meta.Tactic.Grind.Propagate Lean.Meta.Tactic.Grind.PP
+// Imports: Init.Grind.Util Lean.Meta.LitValues Lean.Meta.Tactic.Grind.Types Lean.Meta.Tactic.Grind.Inv Lean.Meta.Tactic.Grind.PP Lean.Meta.Tactic.Grind.Ctor Lean.Meta.Tactic.Grind.Internalize
 #include <lean/lean.h>
 #if defined(__clang__)
 #pragma clang diagnostic ignored "-Wunused-parameter"
@@ -13,7292 +13,1946 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
-static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__8;
-LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at_Lean_Meta_Grind_internalize___spec__1(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_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4;
 lean_object* l_Lean_Expr_const___override(lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_Grind_add_go___closed__3;
 static lean_object* l_Lean_Meta_Grind_add___closed__1;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__1___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_Grind_addHEq(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_Lean_Meta_Grind_internalize___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_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__4;
-LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(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_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__2;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__8___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 size_t lean_usize_shift_right(size_t, size_t);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add___lambda__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*);
 static lean_object* l_Lean_Meta_Grind_add_go___closed__12;
-lean_object* l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(lean_object*, lean_object*);
-static double l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__1;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__5;
 lean_object* l_Lean_Meta_mkEqTrue(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__3;
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__7(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5___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_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__7(lean_object*, 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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___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_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add_go___lambda__4(lean_object*, 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*);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__2___closed__1;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_markAsInconsistent(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_Grind_add_go___closed__11;
 static lean_object* l_Lean_Meta_Grind_add_go___closed__13;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1___boxed(lean_object**);
-LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___spec__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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__1;
-uint8_t lean_usize_dec_le(size_t, size_t);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqCore_processTodo___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__3;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans___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_mkAppB(lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__2;
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__8;
-lean_object* l_Lean_Meta_isExprDefEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__6;
 size_t lean_uint64_to_usize(uint64_t);
-static lean_object* l_Lean_Meta_Grind_add_go___lambda__4___closed__4;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__1;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add___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*);
 static lean_object* l_Lean_Meta_Grind_add_go___closed__9;
-lean_object* l_Lean_Meta_Grind_mkENode(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_Meta_Grind_propagateCtor(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t l_Lean_Expr_isApp(lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_popNextEq_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t l_Lean_Meta_Grind_isCongruent(lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__7;
-lean_object* l_Lean_Expr_sort___override(lean_object*);
-lean_object* l_Lean_PersistentArray_push___rarg(lean_object*, lean_object*);
-lean_object* lean_array_push(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots___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*);
-static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__4;
-size_t lean_usize_mul(size_t, size_t);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add___lambda__3(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_mk_array(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents___spec__1___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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__3;
+static size_t l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2___closed__2;
 static lean_object* l_Lean_Meta_Grind_add_go___lambda__4___closed__1;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents___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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__11;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint64_t l_Lean_Meta_Grind_congrHash(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__16;
 lean_object* lean_array_fget(lean_object*, lean_object*);
-lean_object* lean_array_fset(lean_object*, lean_object*, lean_object*);
-lean_object* l_Lean_Meta_Grind_pushEqCore(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__6;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__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_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__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* l_Lean_Meta_Grind_propagateDown(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__2___closed__2;
-LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___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_object*);
+LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT___spec__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_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq(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_Grind_add_go___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_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, uint8_t, uint8_t, uint8_t, 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_PersistentHashMap_findEntry_x3f___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__1(lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(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_Grind_add_go___closed__8;
 lean_object* l_Lean_Meta_Grind_setENode(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_cleanupAnnotations(lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___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_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___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_object*, lean_object*);
 lean_object* l_Lean_stringToMessageData(lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(lean_object*, 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*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__1;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, 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_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addEq(lean_object*, 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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__7;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__2;
-static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__9;
 static lean_object* l_Lean_Meta_Grind_add_go___closed__10;
+LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT___spec__1(lean_object*, 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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__4;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add_goEq(lean_object*, lean_object*, lean_object*, 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*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__7;
+lean_object* l_Lean_Level_ofNat(lean_object*);
+lean_object* l_Lean_Expr_appArg_x21(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add_go___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_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__3;
+lean_object* l_Lean_Meta_Grind_propagateUp(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_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(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_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAtAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT(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_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT___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_Meta_Grind_getRoot(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_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots(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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots(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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__5;
 static lean_object* l_Lean_Meta_Grind_add_go___lambda__4___closed__3;
-lean_object* l_Lean_Name_mkStr3(lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_MVarId_isAssigned___at_Lean_Meta_Grind_closeGoal___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__1(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_PersistentHashMap_findEntryAtAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_mkEqMP(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_getFalseExpr___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__2;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__2;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9(lean_object*, 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*);
 static lean_object* l_Lean_Meta_Grind_add_go___lambda__4___closed__2;
 lean_object* l_Lean_PersistentHashMap_isUnaryNode___rarg(lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__1;
 LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents___spec__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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans(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_Grind_add_go(lean_object*, 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_EXPORT lean_object* l_Lean_Meta_Grind_add(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_st_ref_take(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(lean_object*, 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*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__12;
 LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___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_EXPORT lean_object* l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2(lean_object*, lean_object*, size_t, lean_object*);
 static lean_object* l_Lean_Meta_Grind_add_go___closed__6;
-static lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__2;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__2;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqCore_processTodo(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insert___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__4(lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_closeGoal(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_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, 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*, lean_object*, lean_object*);
 lean_object* l_Lean_MessageData_ofFormat(lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_popNextEq_x3f___boxed(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_Tactic_Grind_Core_0__Lean_Meta_Grind_popNextEq_x3f___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_Lean_Meta_Grind_add___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_object*);
 lean_object* l_Lean_Expr_appArg(lean_object*, lean_object*);
 lean_object* l_Array_back_x3f___rarg(lean_object*);
-lean_object* l_outOfBounds___rarg(lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__2;
 lean_object* l_Lean_Meta_Grind_getTrueExpr___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__1;
 lean_object* lean_st_ref_get(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_array_pop(lean_object*);
 static lean_object* l_Lean_Meta_Grind_add___lambda__3___closed__1;
+lean_object* l_Lean_Meta_mkEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add___lambda__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_object* l_Lean_Expr_appFnCleanup(lean_object*, lean_object*);
+lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(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_Meta_Grind_addCongrTable(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_Tactic_Grind_Core_0__Lean_Meta_Grind_resetNewEqs(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__15;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add_go___lambda__1(lean_object*, 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_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__6___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-extern lean_object* l_Lean_levelZero;
-lean_object* l_Lean_Meta_Grind_checkInvariants(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_checkInvariants(uint8_t, 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_Tactic_Grind_Core_0__Lean_Meta_Grind_resetNewEqs___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-extern lean_object* l_Lean_instInhabitedExpr;
 lean_object* l_Lean_Meta_Grind_ppState(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_Grind_add_go___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_Lean_Meta_Grind_internalize___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_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__3;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__8(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_FVarId_getType(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___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_object*);
-LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2(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_object* l_Lean_Meta_mkDecide(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static size_t l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2___closed__1;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(lean_object*, uint8_t, lean_object*, 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*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_erase___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__1(lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__1;
-static lean_object* l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__3;
 lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add_go___lambda__3(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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(lean_object*, lean_object*, lean_object*, uint8_t, 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*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(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*);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__1;
 uint8_t l_Lean_Meta_Grind_isSameExpr_unsafe__1(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqCore_processTodo___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* l_Lean_Meta_Grind_alreadyInternalized(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__3;
 static lean_object* l_Lean_Meta_Grind_add___closed__2;
-lean_object* l___private_Init_Util_0__mkPanicMessageWithDecl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_getParents(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_resetNewEqs___closed__1;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqCore(lean_object*, 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_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqCore_processTodo___closed__1;
-static size_t l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___closed__1;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__10;
 lean_object* l_Array_eraseIdx___rarg(lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__5;
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__6(lean_object*, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static size_t l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(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_usize_to_nat(size_t);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__5;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__3;
 lean_object* l_Lean_MessageData_ofExpr(lean_object*);
 lean_object* l_Lean_Meta_Grind_copyParentsTo(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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__5;
-double l_Float_ofScientific(lean_object*, uint8_t, lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add_go___lambda__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_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___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_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add___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_object*, lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqCore___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*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__4;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add___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*, lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5(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_Tactic_Grind_Core_0__Lean_Meta_Grind_markAsInconsistent___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_Grind_add_go___closed__14;
-lean_object* l_Lean_Meta_Grind_propagateConnectivesDown(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_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* lean_grind_mk_eq_proof(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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__7;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5(uint8_t, 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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___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*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__1;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__5;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__3;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
+lean_object* l_Lean_mkApp3(lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_mkEqFalseProof(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_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___boxed(lean_object**);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___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_object*, lean_object*);
 uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, 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*, lean_object*, lean_object*);
-lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4(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_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, uint8_t, uint8_t, 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_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__4;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___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_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__6;
 lean_object* l_Lean_Name_mkStr2(lean_object*, lean_object*);
-lean_object* l_Lean_Meta_Grind_registerParent(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_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___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_indentExpr(lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* l_Lean_PersistentHashMap_mkEmptyEntries(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___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*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___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_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___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*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__7___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_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_markAsInconsistent(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t l_Lean_Expr_isConstOf(lean_object*, lean_object*);
 lean_object* lean_array_set(lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__2;
-lean_object* l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Array_indexOfAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__3(lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__3;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___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*);
-static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__6;
-lean_object* lean_nat_sub(lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__4;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___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*);
 static lean_object* l_Lean_Meta_Grind_add_go___closed__2;
-lean_object* l_Lean_PersistentHashMap_mkCollisionNode___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_getENode(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_Grind_internalize___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_object*);
 lean_object* l_Lean_Meta_instantiateMVarsIfMVarApp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add_goEq___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_object*, lean_object*);
-lean_object* l_Lean_Meta_Grind_mkENodeCore(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_object*);
-static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__5;
-lean_object* l_Lean_Meta_Grind_isTrueExpr(lean_object*, 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_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(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_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___boxed(lean_object**);
 lean_object* l_Lean_Meta_Grind_ppENodeRef(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_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___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*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__1;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__8;
 size_t lean_usize_sub(size_t, size_t);
 lean_object* lean_array_mk(lean_object*);
 lean_object* l_Lean_Meta_Grind_getParentsAndReset(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t l_Lean_Expr_isTrue(lean_object*);
-lean_object* l_Lean_isTracingEnabledForCore(lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__2;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__5;
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__1;
-size_t lean_usize_add(size_t, size_t);
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2(lean_object*, lean_object*, size_t, lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_popNextEq_x3f___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_object* l_Lean_Meta_mkEqFalse(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_Grind_add_go___closed__7;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__3;
 lean_object* l_Lean_Expr_fvar___override(lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__4;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__4;
 LEAN_EXPORT lean_object* l_Array_indexOfAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at_Lean_Meta_Grind_internalize___spec__1___boxed(lean_object**);
 lean_object* lean_st_ref_set(lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5___closed__1;
 size_t lean_usize_shift_left(size_t, size_t);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__4;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3___boxed(lean_object**);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___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*);
 static lean_object* l_Lean_Meta_Grind_add_go___closed__1;
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__2___closed__3;
 LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___spec__1(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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__2;
-lean_object* l_Lean_Meta_Grind_propagateConectivesUp(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_Grind_addHyp(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_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__4(lean_object*, 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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__4(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* lean_array_get_size(lean_object*);
-lean_object* l_Lean_Meta_Grind_isFalseExpr(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__1;
-lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__2;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__9;
 lean_object* lean_nat_add(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5(lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*);
-lean_object* l_Lean_PersistentHashMap_getCollisionNodeSize___rarg(lean_object*);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__6;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___boxed(lean_object**);
 LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-uint8_t l_Lean_Expr_isConst(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add_go___lambda__2(lean_object*, 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*);
-static lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__3;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__13;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__3;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add_go___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*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_Grind_add_go___closed__4;
 static lean_object* l_Lean_Meta_Grind_add___lambda__3___closed__2;
 lean_object* lean_array_get(lean_object*, lean_object*, lean_object*);
-lean_object* l_Lean_Meta_isLitValue(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3___closed__1;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2(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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___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_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_isInconsistent(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_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___boxed(lean_object**);
 static lean_object* l_Lean_Meta_Grind_add_go___closed__5;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_internalize(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_Grind_internalize___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*);
+lean_object* l_Lean_Meta_Grind_internalize(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 size_t lean_usize_land(size_t, size_t);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___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_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__14;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__2(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_Expr_withAppAux___at_Lean_Meta_Grind_internalize___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*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__1;
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__1() {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
 _start:
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("[congruence]", 12, 12);
-return x_1;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__2() {
-_start:
+uint8_t x_16; 
+x_16 = !lean_is_exclusive(x_1);
+if (x_16 == 0)
 {
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__1;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
+lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_17 = lean_ctor_get(x_1, 5);
+lean_dec(x_17);
+x_18 = lean_ctor_get(x_1, 4);
+lean_dec(x_18);
+lean_ctor_set(x_1, 5, x_3);
+lean_ctor_set(x_1, 4, x_2);
+lean_ctor_set_uint8(x_1, sizeof(void*)*10, x_4);
+x_19 = l_Lean_Meta_Grind_setENode(x_5, x_1, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
+return x_19;
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__3() {
-_start:
+else
 {
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__2;
-x_3 = l_Lean_Expr_const___override(x_2, x_1);
-return x_3;
-}
+lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; uint8_t x_25; uint8_t x_26; uint8_t x_27; uint8_t x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_20 = lean_ctor_get(x_1, 0);
+x_21 = lean_ctor_get(x_1, 1);
+x_22 = lean_ctor_get(x_1, 2);
+x_23 = lean_ctor_get(x_1, 3);
+x_24 = lean_ctor_get(x_1, 6);
+x_25 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 1);
+x_26 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 2);
+x_27 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 3);
+x_28 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 4);
+x_29 = lean_ctor_get(x_1, 7);
+x_30 = lean_ctor_get(x_1, 8);
+x_31 = lean_ctor_get(x_1, 9);
+lean_inc(x_31);
+lean_inc(x_30);
+lean_inc(x_29);
+lean_inc(x_24);
+lean_inc(x_23);
+lean_inc(x_22);
+lean_inc(x_21);
+lean_inc(x_20);
+lean_dec(x_1);
+x_32 = lean_alloc_ctor(0, 10, 5);
+lean_ctor_set(x_32, 0, x_20);
+lean_ctor_set(x_32, 1, x_21);
+lean_ctor_set(x_32, 2, x_22);
+lean_ctor_set(x_32, 3, x_23);
+lean_ctor_set(x_32, 4, x_2);
+lean_ctor_set(x_32, 5, x_3);
+lean_ctor_set(x_32, 6, x_24);
+lean_ctor_set(x_32, 7, x_29);
+lean_ctor_set(x_32, 8, x_30);
+lean_ctor_set(x_32, 9, x_31);
+lean_ctor_set_uint8(x_32, sizeof(void*)*10, x_4);
+lean_ctor_set_uint8(x_32, sizeof(void*)*10 + 1, x_25);
+lean_ctor_set_uint8(x_32, sizeof(void*)*10 + 2, x_26);
+lean_ctor_set_uint8(x_32, sizeof(void*)*10 + 3, x_27);
+lean_ctor_set_uint8(x_32, sizeof(void*)*10 + 4, x_28);
+x_33 = l_Lean_Meta_Grind_setENode(x_5, x_32, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
+return x_33;
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof() {
-_start:
-{
-lean_object* x_1; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__3;
-return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAtAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__3(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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(lean_object* x_1, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
 _start:
 {
-lean_object* x_7; lean_object* x_8; uint8_t x_9; 
-x_7 = lean_ctor_get(x_1, 1);
-lean_inc(x_7);
-x_8 = lean_array_get_size(x_2);
-x_9 = lean_nat_dec_lt(x_5, x_8);
-lean_dec(x_8);
-if (x_9 == 0)
+lean_object* x_14; 
+lean_inc(x_1);
+x_14 = l_Lean_Meta_Grind_getENode(x_1, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+if (lean_obj_tag(x_14) == 0)
 {
-lean_object* x_10; 
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
+lean_object* x_15; lean_object* x_16; 
+x_15 = lean_ctor_get(x_14, 0);
+lean_inc(x_15);
+x_16 = lean_ctor_get(x_15, 4);
+lean_inc(x_16);
+if (lean_obj_tag(x_16) == 0)
+{
+lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_17 = lean_ctor_get(x_14, 1);
+lean_inc(x_17);
+lean_dec(x_14);
+x_18 = lean_box(0);
+x_19 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(x_15, x_3, x_4, x_2, x_1, x_18, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_17);
 lean_dec(x_1);
-x_10 = lean_box(0);
-return x_10;
+return x_19;
 }
 else
 {
-lean_object* x_11; uint8_t x_12; 
-x_11 = lean_array_fget(x_2, x_5);
-lean_inc(x_11);
-lean_inc(x_6);
-x_12 = l_Lean_Meta_Grind_isCongruent(x_7, x_6, x_11);
-if (x_12 == 0)
+lean_object* x_20; lean_object* x_21; uint8_t x_22; 
+x_20 = lean_ctor_get(x_14, 1);
+lean_inc(x_20);
+lean_dec(x_14);
+x_21 = lean_ctor_get(x_15, 5);
+lean_inc(x_21);
+x_22 = !lean_is_exclusive(x_16);
+if (x_22 == 0)
 {
-lean_object* x_13; lean_object* x_14; 
-lean_dec(x_11);
-x_13 = lean_unsigned_to_nat(1u);
-x_14 = lean_nat_add(x_5, x_13);
-lean_dec(x_5);
-x_4 = lean_box(0);
-x_5 = x_14;
-goto _start;
+uint8_t x_23; lean_object* x_24; 
+x_23 = lean_ctor_get_uint8(x_15, sizeof(void*)*10);
+x_24 = lean_ctor_get(x_16, 0);
+lean_inc(x_1);
+lean_ctor_set(x_16, 0, x_1);
+if (x_23 == 0)
+{
+uint8_t x_25; lean_object* x_26; 
+x_25 = 1;
+x_26 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(x_24, x_25, x_16, x_21, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_20);
+if (lean_obj_tag(x_26) == 0)
+{
+lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_27 = lean_ctor_get(x_26, 0);
+lean_inc(x_27);
+x_28 = lean_ctor_get(x_26, 1);
+lean_inc(x_28);
+lean_dec(x_26);
+x_29 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(x_15, x_3, x_4, x_2, x_1, x_27, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_28);
+lean_dec(x_27);
+lean_dec(x_1);
+return x_29;
 }
 else
 {
-lean_object* x_16; lean_object* x_17; lean_object* x_18; 
-lean_dec(x_6);
+uint8_t x_30; 
+lean_dec(x_15);
+lean_dec(x_4);
+lean_dec(x_3);
 lean_dec(x_1);
-x_16 = lean_array_fget(x_3, x_5);
-lean_dec(x_5);
-x_17 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_17, 0, x_11);
-lean_ctor_set(x_17, 1, x_16);
-x_18 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_18, 0, x_17);
-return x_18;
-}
-}
-}
-}
-static size_t _init_l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___closed__1() {
-_start:
+x_30 = !lean_is_exclusive(x_26);
+if (x_30 == 0)
 {
-size_t x_1; size_t x_2; size_t x_3; 
-x_1 = 1;
-x_2 = 5;
-x_3 = lean_usize_shift_left(x_1, x_2);
-return x_3;
-}
+return x_26;
 }
-static size_t _init_l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___closed__2() {
-_start:
+else
 {
-size_t x_1; size_t x_2; size_t x_3; 
-x_1 = 1;
-x_2 = l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___closed__1;
-x_3 = lean_usize_sub(x_2, x_1);
-return x_3;
+lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_31 = lean_ctor_get(x_26, 0);
+x_32 = lean_ctor_get(x_26, 1);
+lean_inc(x_32);
+lean_inc(x_31);
+lean_dec(x_26);
+x_33 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_33, 0, x_31);
+lean_ctor_set(x_33, 1, x_32);
+return x_33;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2(lean_object* x_1, lean_object* x_2, size_t x_3, lean_object* x_4) {
-_start:
-{
-if (lean_obj_tag(x_2) == 0)
-{
-uint8_t x_5; 
-x_5 = !lean_is_exclusive(x_2);
-if (x_5 == 0)
-{
-lean_object* x_6; lean_object* x_7; size_t x_8; size_t x_9; size_t x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; 
-x_6 = lean_ctor_get(x_2, 0);
-x_7 = lean_ctor_get(x_1, 1);
-lean_inc(x_7);
-x_8 = 5;
-x_9 = l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
-x_10 = lean_usize_land(x_3, x_9);
-x_11 = lean_usize_to_nat(x_10);
-x_12 = lean_box(2);
-x_13 = lean_array_get(x_12, x_6, x_11);
-lean_dec(x_11);
-lean_dec(x_6);
-switch (lean_obj_tag(x_13)) {
-case 0:
-{
-uint8_t x_14; 
-lean_dec(x_1);
-x_14 = !lean_is_exclusive(x_13);
-if (x_14 == 0)
-{
-lean_object* x_15; lean_object* x_16; uint8_t x_17; 
-x_15 = lean_ctor_get(x_13, 0);
-x_16 = lean_ctor_get(x_13, 1);
-lean_inc(x_15);
-x_17 = l_Lean_Meta_Grind_isCongruent(x_7, x_4, x_15);
-if (x_17 == 0)
-{
-lean_object* x_18; 
-lean_free_object(x_13);
-lean_dec(x_16);
-lean_dec(x_15);
-lean_free_object(x_2);
-x_18 = lean_box(0);
-return x_18;
 }
 else
 {
-lean_ctor_set_tag(x_2, 1);
-lean_ctor_set(x_2, 0, x_13);
-return x_2;
-}
+uint8_t x_34; lean_object* x_35; 
+x_34 = 0;
+x_35 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(x_24, x_34, x_16, x_21, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_20);
+if (lean_obj_tag(x_35) == 0)
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; 
+x_36 = lean_ctor_get(x_35, 0);
+lean_inc(x_36);
+x_37 = lean_ctor_get(x_35, 1);
+lean_inc(x_37);
+lean_dec(x_35);
+x_38 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(x_15, x_3, x_4, x_2, x_1, x_36, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_37);
+lean_dec(x_36);
+lean_dec(x_1);
+return x_38;
 }
 else
 {
-lean_object* x_19; lean_object* x_20; uint8_t x_21; 
-x_19 = lean_ctor_get(x_13, 0);
-x_20 = lean_ctor_get(x_13, 1);
-lean_inc(x_20);
-lean_inc(x_19);
-lean_dec(x_13);
-lean_inc(x_19);
-x_21 = l_Lean_Meta_Grind_isCongruent(x_7, x_4, x_19);
-if (x_21 == 0)
+uint8_t x_39; 
+lean_dec(x_15);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_1);
+x_39 = !lean_is_exclusive(x_35);
+if (x_39 == 0)
 {
-lean_object* x_22; 
-lean_dec(x_20);
-lean_dec(x_19);
-lean_free_object(x_2);
-x_22 = lean_box(0);
-return x_22;
+return x_35;
 }
 else
 {
-lean_object* x_23; 
-x_23 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_23, 0, x_19);
-lean_ctor_set(x_23, 1, x_20);
-lean_ctor_set_tag(x_2, 1);
-lean_ctor_set(x_2, 0, x_23);
-return x_2;
+lean_object* x_40; lean_object* x_41; lean_object* x_42; 
+x_40 = lean_ctor_get(x_35, 0);
+x_41 = lean_ctor_get(x_35, 1);
+lean_inc(x_41);
+lean_inc(x_40);
+lean_dec(x_35);
+x_42 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_42, 0, x_40);
+lean_ctor_set(x_42, 1, x_41);
+return x_42;
 }
 }
 }
-case 1:
-{
-lean_object* x_24; size_t x_25; 
-lean_dec(x_7);
-lean_free_object(x_2);
-x_24 = lean_ctor_get(x_13, 0);
-lean_inc(x_24);
-lean_dec(x_13);
-x_25 = lean_usize_shift_right(x_3, x_8);
-x_2 = x_24;
-x_3 = x_25;
-goto _start;
 }
-default: 
+else
 {
-lean_object* x_27; 
-lean_dec(x_7);
-lean_free_object(x_2);
+uint8_t x_43; lean_object* x_44; lean_object* x_45; 
+x_43 = lean_ctor_get_uint8(x_15, sizeof(void*)*10);
+x_44 = lean_ctor_get(x_16, 0);
+lean_inc(x_44);
+lean_dec(x_16);
+lean_inc(x_1);
+x_45 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_45, 0, x_1);
+if (x_43 == 0)
+{
+uint8_t x_46; lean_object* x_47; 
+x_46 = 1;
+x_47 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(x_44, x_46, x_45, x_21, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_20);
+if (lean_obj_tag(x_47) == 0)
+{
+lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_48 = lean_ctor_get(x_47, 0);
+lean_inc(x_48);
+x_49 = lean_ctor_get(x_47, 1);
+lean_inc(x_49);
+lean_dec(x_47);
+x_50 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(x_15, x_3, x_4, x_2, x_1, x_48, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_49);
+lean_dec(x_48);
+lean_dec(x_1);
+return x_50;
+}
+else
+{
+lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+lean_dec(x_15);
 lean_dec(x_4);
+lean_dec(x_3);
 lean_dec(x_1);
-x_27 = lean_box(0);
-return x_27;
+x_51 = lean_ctor_get(x_47, 0);
+lean_inc(x_51);
+x_52 = lean_ctor_get(x_47, 1);
+lean_inc(x_52);
+if (lean_is_exclusive(x_47)) {
+ lean_ctor_release(x_47, 0);
+ lean_ctor_release(x_47, 1);
+ x_53 = x_47;
+} else {
+ lean_dec_ref(x_47);
+ x_53 = lean_box(0);
+}
+if (lean_is_scalar(x_53)) {
+ x_54 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_54 = x_53;
 }
+lean_ctor_set(x_54, 0, x_51);
+lean_ctor_set(x_54, 1, x_52);
+return x_54;
 }
 }
 else
 {
-lean_object* x_28; lean_object* x_29; size_t x_30; size_t x_31; size_t x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_28 = lean_ctor_get(x_2, 0);
-lean_inc(x_28);
-lean_dec(x_2);
-x_29 = lean_ctor_get(x_1, 1);
-lean_inc(x_29);
-x_30 = 5;
-x_31 = l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
-x_32 = lean_usize_land(x_3, x_31);
-x_33 = lean_usize_to_nat(x_32);
-x_34 = lean_box(2);
-x_35 = lean_array_get(x_34, x_28, x_33);
-lean_dec(x_33);
-lean_dec(x_28);
-switch (lean_obj_tag(x_35)) {
-case 0:
+uint8_t x_55; lean_object* x_56; 
+x_55 = 0;
+x_56 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(x_44, x_55, x_45, x_21, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_20);
+if (lean_obj_tag(x_56) == 0)
 {
-lean_object* x_36; lean_object* x_37; lean_object* x_38; uint8_t x_39; 
+lean_object* x_57; lean_object* x_58; lean_object* x_59; 
+x_57 = lean_ctor_get(x_56, 0);
+lean_inc(x_57);
+x_58 = lean_ctor_get(x_56, 1);
+lean_inc(x_58);
+lean_dec(x_56);
+x_59 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(x_15, x_3, x_4, x_2, x_1, x_57, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_58);
+lean_dec(x_57);
 lean_dec(x_1);
-x_36 = lean_ctor_get(x_35, 0);
-lean_inc(x_36);
-x_37 = lean_ctor_get(x_35, 1);
-lean_inc(x_37);
-if (lean_is_exclusive(x_35)) {
- lean_ctor_release(x_35, 0);
- lean_ctor_release(x_35, 1);
- x_38 = x_35;
-} else {
- lean_dec_ref(x_35);
- x_38 = lean_box(0);
-}
-lean_inc(x_36);
-x_39 = l_Lean_Meta_Grind_isCongruent(x_29, x_4, x_36);
-if (x_39 == 0)
-{
-lean_object* x_40; 
-lean_dec(x_38);
-lean_dec(x_37);
-lean_dec(x_36);
-x_40 = lean_box(0);
-return x_40;
+return x_59;
 }
 else
 {
-lean_object* x_41; lean_object* x_42; 
-if (lean_is_scalar(x_38)) {
- x_41 = lean_alloc_ctor(0, 2, 0);
+lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; 
+lean_dec(x_15);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_1);
+x_60 = lean_ctor_get(x_56, 0);
+lean_inc(x_60);
+x_61 = lean_ctor_get(x_56, 1);
+lean_inc(x_61);
+if (lean_is_exclusive(x_56)) {
+ lean_ctor_release(x_56, 0);
+ lean_ctor_release(x_56, 1);
+ x_62 = x_56;
 } else {
- x_41 = x_38;
+ lean_dec_ref(x_56);
+ x_62 = lean_box(0);
 }
-lean_ctor_set(x_41, 0, x_36);
-lean_ctor_set(x_41, 1, x_37);
-x_42 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_42, 0, x_41);
-return x_42;
+if (lean_is_scalar(x_62)) {
+ x_63 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_63 = x_62;
 }
+lean_ctor_set(x_63, 0, x_60);
+lean_ctor_set(x_63, 1, x_61);
+return x_63;
 }
-case 1:
-{
-lean_object* x_43; size_t x_44; 
-lean_dec(x_29);
-x_43 = lean_ctor_get(x_35, 0);
-lean_inc(x_43);
-lean_dec(x_35);
-x_44 = lean_usize_shift_right(x_3, x_30);
-x_2 = x_43;
-x_3 = x_44;
-goto _start;
 }
-default: 
-{
-lean_object* x_46; 
-lean_dec(x_29);
-lean_dec(x_4);
-lean_dec(x_1);
-x_46 = lean_box(0);
-return x_46;
 }
 }
 }
+else
+{
+uint8_t x_64; 
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_1);
+x_64 = !lean_is_exclusive(x_14);
+if (x_64 == 0)
+{
+return x_14;
 }
 else
 {
-lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; 
-x_47 = lean_ctor_get(x_2, 0);
-lean_inc(x_47);
-x_48 = lean_ctor_get(x_2, 1);
-lean_inc(x_48);
-lean_dec(x_2);
-x_49 = lean_unsigned_to_nat(0u);
-x_50 = l_Lean_PersistentHashMap_findEntryAtAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__3(x_1, x_47, x_48, lean_box(0), x_49, x_4);
-lean_dec(x_48);
-lean_dec(x_47);
-return x_50;
+lean_object* x_65; lean_object* x_66; lean_object* x_67; 
+x_65 = lean_ctor_get(x_14, 0);
+x_66 = lean_ctor_get(x_14, 1);
+lean_inc(x_66);
+lean_inc(x_65);
+lean_dec(x_14);
+x_67 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_67, 0, x_65);
+lean_ctor_set(x_67, 1, x_66);
+return x_67;
+}
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntry_x3f___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
 _start:
 {
-lean_object* x_4; uint64_t x_5; size_t x_6; lean_object* x_7; 
-x_4 = lean_ctor_get(x_1, 1);
-lean_inc(x_4);
-x_5 = l_Lean_Meta_Grind_congrHash(x_4, x_3);
-x_6 = lean_uint64_to_usize(x_5);
-x_7 = l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2(x_1, x_2, x_6, x_3);
-return x_7;
+uint8_t x_16; lean_object* x_17; 
+x_16 = lean_unbox(x_4);
+lean_dec(x_4);
+x_17 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(x_1, x_2, x_3, x_16, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+return x_17;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__6(lean_object* x_1, size_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
 _start:
 {
-lean_object* x_8; lean_object* x_9; uint8_t x_10; 
-x_8 = lean_ctor_get(x_1, 1);
-lean_inc(x_8);
-x_9 = lean_array_get_size(x_3);
-x_10 = lean_nat_dec_lt(x_6, x_9);
+uint8_t x_14; lean_object* x_15; 
+x_14 = lean_unbox(x_2);
+lean_dec(x_2);
+x_15 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(x_1, x_14, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
-if (x_10 == 0)
-{
 lean_dec(x_8);
+lean_dec(x_7);
 lean_dec(x_6);
-lean_dec(x_1);
-return x_7;
+lean_dec(x_5);
+return x_15;
 }
-else
-{
-lean_object* x_11; lean_object* x_12; uint64_t x_13; size_t x_14; size_t x_15; size_t x_16; size_t x_17; size_t x_18; size_t x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; 
-x_11 = lean_array_fget(x_3, x_6);
-x_12 = lean_array_fget(x_4, x_6);
-x_13 = l_Lean_Meta_Grind_congrHash(x_8, x_11);
-x_14 = lean_uint64_to_usize(x_13);
-x_15 = 1;
-x_16 = lean_usize_sub(x_2, x_15);
-x_17 = 5;
-x_18 = lean_usize_mul(x_17, x_16);
-x_19 = lean_usize_shift_right(x_14, x_18);
-x_20 = lean_unsigned_to_nat(1u);
-x_21 = lean_nat_add(x_6, x_20);
-lean_dec(x_6);
-lean_inc(x_1);
-x_22 = l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5(x_1, x_7, x_19, x_2, x_11, x_12);
-x_5 = lean_box(0);
-x_6 = x_21;
-x_7 = x_22;
-goto _start;
 }
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans(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:
+{
+lean_object* x_11; uint8_t x_12; lean_object* x_13; 
+x_11 = lean_box(0);
+x_12 = 0;
+x_13 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(x_1, x_12, x_11, x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_13;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__7(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans___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, lean_object* x_10) {
 _start:
 {
-lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; uint8_t x_10; 
-x_6 = lean_ctor_get(x_2, 0);
-lean_inc(x_6);
-x_7 = lean_ctor_get(x_2, 1);
-lean_inc(x_7);
-x_8 = lean_ctor_get(x_1, 1);
-lean_inc(x_8);
-x_9 = lean_array_get_size(x_6);
-x_10 = lean_nat_dec_lt(x_3, x_9);
+lean_object* x_11; 
+x_11 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 lean_dec(x_9);
-if (x_10 == 0)
-{
-uint8_t x_11; 
 lean_dec(x_8);
+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_11 = !lean_is_exclusive(x_2);
-if (x_11 == 0)
-{
-lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
-x_12 = lean_ctor_get(x_2, 1);
-lean_dec(x_12);
-x_13 = lean_ctor_get(x_2, 0);
-lean_dec(x_13);
-x_14 = lean_array_push(x_6, x_4);
-x_15 = lean_array_push(x_7, x_5);
-lean_ctor_set(x_2, 1, x_15);
-lean_ctor_set(x_2, 0, x_14);
-return x_2;
-}
-else
-{
-lean_object* x_16; lean_object* x_17; lean_object* x_18; 
 lean_dec(x_2);
-x_16 = lean_array_push(x_6, x_4);
-x_17 = lean_array_push(x_7, x_5);
-x_18 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_18, 0, x_16);
-lean_ctor_set(x_18, 1, x_17);
-return x_18;
+return x_11;
 }
 }
-else
-{
-lean_object* x_19; uint8_t x_20; 
-x_19 = lean_array_fget(x_6, x_3);
-lean_inc(x_4);
-x_20 = l_Lean_Meta_Grind_isCongruent(x_8, x_4, x_19);
-if (x_20 == 0)
+LEAN_EXPORT lean_object* l_Array_indexOfAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__3(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+_start:
 {
-lean_object* x_21; lean_object* x_22; 
-lean_dec(x_7);
+lean_object* x_5; lean_object* x_6; uint8_t x_7; 
+x_5 = lean_ctor_get(x_1, 1);
+lean_inc(x_5);
+x_6 = lean_array_get_size(x_2);
+x_7 = lean_nat_dec_lt(x_4, x_6);
 lean_dec(x_6);
-x_21 = lean_unsigned_to_nat(1u);
-x_22 = lean_nat_add(x_3, x_21);
+if (x_7 == 0)
+{
+lean_object* x_8; 
+lean_dec(x_5);
+lean_dec(x_4);
 lean_dec(x_3);
-x_3 = x_22;
-goto _start;
+lean_dec(x_1);
+x_8 = lean_box(0);
+return x_8;
 }
 else
 {
-uint8_t x_24; 
-lean_dec(x_1);
-x_24 = !lean_is_exclusive(x_2);
-if (x_24 == 0)
-{
-lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
-x_25 = lean_ctor_get(x_2, 1);
-lean_dec(x_25);
-x_26 = lean_ctor_get(x_2, 0);
-lean_dec(x_26);
-x_27 = lean_array_fset(x_6, x_3, x_4);
-x_28 = lean_array_fset(x_7, x_3, x_5);
-lean_dec(x_3);
-lean_ctor_set(x_2, 1, x_28);
-lean_ctor_set(x_2, 0, x_27);
-return x_2;
+lean_object* x_9; uint8_t x_10; 
+x_9 = lean_array_fget(x_2, x_4);
+lean_inc(x_3);
+x_10 = l_Lean_Meta_Grind_isCongruent(x_5, x_9, x_3);
+if (x_10 == 0)
+{
+lean_object* x_11; lean_object* x_12; 
+x_11 = lean_unsigned_to_nat(1u);
+x_12 = lean_nat_add(x_4, x_11);
+lean_dec(x_4);
+x_4 = x_12;
+goto _start;
 }
 else
 {
-lean_object* x_29; lean_object* x_30; lean_object* x_31; 
-lean_dec(x_2);
-x_29 = lean_array_fset(x_6, x_3, x_4);
-x_30 = lean_array_fset(x_7, x_3, x_5);
+lean_object* x_14; 
 lean_dec(x_3);
-x_31 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_31, 0, x_29);
-lean_ctor_set(x_31, 1, x_30);
-return x_31;
+lean_dec(x_1);
+x_14 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_14, 0, x_4);
+return x_14;
+}
 }
 }
 }
+static size_t _init_l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2___closed__1() {
+_start:
+{
+size_t x_1; size_t x_2; size_t x_3; 
+x_1 = 1;
+x_2 = 5;
+x_3 = lean_usize_shift_left(x_1, x_2);
+return x_3;
 }
 }
-static lean_object* _init_l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5___closed__1() {
+static size_t _init_l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2___closed__2() {
 _start:
 {
-lean_object* x_1; 
-x_1 = l_Lean_PersistentHashMap_mkEmptyEntries(lean_box(0), lean_box(0));
-return x_1;
+size_t x_1; size_t x_2; size_t x_3; 
+x_1 = 1;
+x_2 = l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2___closed__1;
+x_3 = lean_usize_sub(x_2, x_1);
+return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5(lean_object* x_1, lean_object* x_2, size_t x_3, size_t x_4, lean_object* x_5, lean_object* x_6) {
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2(lean_object* x_1, lean_object* x_2, size_t x_3, lean_object* x_4) {
 _start:
 {
 if (lean_obj_tag(x_2) == 0)
 {
-uint8_t x_7; 
-x_7 = !lean_is_exclusive(x_2);
-if (x_7 == 0)
+lean_object* x_5; lean_object* x_6; size_t x_7; size_t x_8; size_t x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; 
+x_5 = lean_ctor_get(x_2, 0);
+lean_inc(x_5);
+x_6 = lean_ctor_get(x_1, 1);
+lean_inc(x_6);
+x_7 = 5;
+x_8 = l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2___closed__2;
+x_9 = lean_usize_land(x_3, x_8);
+x_10 = lean_usize_to_nat(x_9);
+x_11 = lean_box(2);
+x_12 = lean_array_get(x_11, x_5, x_10);
+switch (lean_obj_tag(x_12)) {
+case 0:
 {
-lean_object* x_8; lean_object* x_9; size_t x_10; size_t x_11; size_t x_12; size_t x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; 
-x_8 = lean_ctor_get(x_2, 0);
-x_9 = lean_ctor_get(x_1, 1);
-lean_inc(x_9);
-x_10 = 1;
-x_11 = 5;
-x_12 = l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
-x_13 = lean_usize_land(x_3, x_12);
-x_14 = lean_usize_to_nat(x_13);
-x_15 = lean_array_get_size(x_8);
-x_16 = lean_nat_dec_lt(x_14, x_15);
-lean_dec(x_15);
-if (x_16 == 0)
+lean_object* x_13; uint8_t x_14; 
+lean_dec(x_1);
+x_13 = lean_ctor_get(x_12, 0);
+lean_inc(x_13);
+lean_dec(x_12);
+x_14 = l_Lean_Meta_Grind_isCongruent(x_6, x_4, x_13);
+if (x_14 == 0)
 {
-lean_dec(x_14);
-lean_dec(x_9);
-lean_dec(x_6);
+lean_dec(x_10);
 lean_dec(x_5);
-lean_dec(x_1);
 return x_2;
 }
 else
 {
-lean_object* x_17; lean_object* x_18; lean_object* x_19; 
-x_17 = lean_array_fget(x_8, x_14);
-x_18 = lean_box(0);
-x_19 = lean_array_fset(x_8, x_14, x_18);
-switch (lean_obj_tag(x_17)) {
-case 0:
-{
-uint8_t x_20; 
-lean_dec(x_1);
-x_20 = !lean_is_exclusive(x_17);
-if (x_20 == 0)
-{
-lean_object* x_21; lean_object* x_22; uint8_t x_23; 
-x_21 = lean_ctor_get(x_17, 0);
-x_22 = lean_ctor_get(x_17, 1);
-lean_inc(x_21);
-lean_inc(x_5);
-x_23 = l_Lean_Meta_Grind_isCongruent(x_9, x_5, x_21);
-if (x_23 == 0)
+uint8_t x_15; 
+x_15 = !lean_is_exclusive(x_2);
+if (x_15 == 0)
 {
-lean_object* x_24; lean_object* x_25; lean_object* x_26; 
-lean_free_object(x_17);
-x_24 = l_Lean_PersistentHashMap_mkCollisionNode___rarg(x_21, x_22, x_5, x_6);
-x_25 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_25, 0, x_24);
-x_26 = lean_array_fset(x_19, x_14, x_25);
-lean_dec(x_14);
-lean_ctor_set(x_2, 0, x_26);
+lean_object* x_16; lean_object* x_17; 
+x_16 = lean_ctor_get(x_2, 0);
+lean_dec(x_16);
+x_17 = lean_array_set(x_5, x_10, x_11);
+lean_dec(x_10);
+lean_ctor_set(x_2, 0, x_17);
 return x_2;
 }
 else
 {
-lean_object* x_27; 
-lean_dec(x_22);
+lean_object* x_18; lean_object* x_19; 
+lean_dec(x_2);
+x_18 = lean_array_set(x_5, x_10, x_11);
+lean_dec(x_10);
+x_19 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_19, 0, x_18);
+return x_19;
+}
+}
+}
+case 1:
+{
+uint8_t x_20; 
+lean_dec(x_6);
+x_20 = !lean_is_exclusive(x_2);
+if (x_20 == 0)
+{
+lean_object* x_21; uint8_t x_22; 
+x_21 = lean_ctor_get(x_2, 0);
 lean_dec(x_21);
-lean_ctor_set(x_17, 1, x_6);
-lean_ctor_set(x_17, 0, x_5);
-x_27 = lean_array_fset(x_19, x_14, x_17);
-lean_dec(x_14);
-lean_ctor_set(x_2, 0, x_27);
+x_22 = !lean_is_exclusive(x_12);
+if (x_22 == 0)
+{
+lean_object* x_23; lean_object* x_24; size_t x_25; lean_object* x_26; lean_object* x_27; 
+x_23 = lean_ctor_get(x_12, 0);
+x_24 = lean_array_set(x_5, x_10, x_11);
+x_25 = lean_usize_shift_right(x_3, x_7);
+x_26 = l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2(x_1, x_23, x_25, x_4);
+lean_inc(x_26);
+x_27 = l_Lean_PersistentHashMap_isUnaryNode___rarg(x_26);
+if (lean_obj_tag(x_27) == 0)
+{
+lean_object* x_28; 
+lean_ctor_set(x_12, 0, x_26);
+x_28 = lean_array_set(x_24, x_10, x_12);
+lean_dec(x_10);
+lean_ctor_set(x_2, 0, x_28);
 return x_2;
 }
-}
 else
 {
-lean_object* x_28; lean_object* x_29; uint8_t x_30; 
-x_28 = lean_ctor_get(x_17, 0);
-x_29 = lean_ctor_get(x_17, 1);
+lean_object* x_29; uint8_t x_30; 
+lean_dec(x_26);
+lean_free_object(x_12);
+x_29 = lean_ctor_get(x_27, 0);
 lean_inc(x_29);
-lean_inc(x_28);
-lean_dec(x_17);
-lean_inc(x_28);
-lean_inc(x_5);
-x_30 = l_Lean_Meta_Grind_isCongruent(x_9, x_5, x_28);
+lean_dec(x_27);
+x_30 = !lean_is_exclusive(x_29);
 if (x_30 == 0)
 {
-lean_object* x_31; lean_object* x_32; lean_object* x_33; 
-x_31 = l_Lean_PersistentHashMap_mkCollisionNode___rarg(x_28, x_29, x_5, x_6);
-x_32 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_32, 0, x_31);
-x_33 = lean_array_fset(x_19, x_14, x_32);
-lean_dec(x_14);
-lean_ctor_set(x_2, 0, x_33);
+lean_object* x_31; 
+x_31 = lean_array_set(x_24, x_10, x_29);
+lean_dec(x_10);
+lean_ctor_set(x_2, 0, x_31);
 return x_2;
 }
 else
 {
-lean_object* x_34; lean_object* x_35; 
+lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_32 = lean_ctor_get(x_29, 0);
+x_33 = lean_ctor_get(x_29, 1);
+lean_inc(x_33);
+lean_inc(x_32);
 lean_dec(x_29);
-lean_dec(x_28);
 x_34 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_34, 0, x_5);
-lean_ctor_set(x_34, 1, x_6);
-x_35 = lean_array_fset(x_19, x_14, x_34);
-lean_dec(x_14);
+lean_ctor_set(x_34, 0, x_32);
+lean_ctor_set(x_34, 1, x_33);
+x_35 = lean_array_set(x_24, x_10, x_34);
+lean_dec(x_10);
 lean_ctor_set(x_2, 0, x_35);
 return x_2;
 }
 }
 }
-case 1:
+else
 {
-uint8_t x_36; 
-lean_dec(x_9);
-x_36 = !lean_is_exclusive(x_17);
-if (x_36 == 0)
+lean_object* x_36; lean_object* x_37; size_t x_38; lean_object* x_39; lean_object* x_40; 
+x_36 = lean_ctor_get(x_12, 0);
+lean_inc(x_36);
+lean_dec(x_12);
+x_37 = lean_array_set(x_5, x_10, x_11);
+x_38 = lean_usize_shift_right(x_3, x_7);
+x_39 = l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2(x_1, x_36, x_38, x_4);
+lean_inc(x_39);
+x_40 = l_Lean_PersistentHashMap_isUnaryNode___rarg(x_39);
+if (lean_obj_tag(x_40) == 0)
 {
-lean_object* x_37; size_t x_38; size_t x_39; lean_object* x_40; lean_object* x_41; 
-x_37 = lean_ctor_get(x_17, 0);
-x_38 = lean_usize_shift_right(x_3, x_11);
-x_39 = lean_usize_add(x_4, x_10);
-x_40 = l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5(x_1, x_37, x_38, x_39, x_5, x_6);
-lean_ctor_set(x_17, 0, x_40);
-x_41 = lean_array_fset(x_19, x_14, x_17);
-lean_dec(x_14);
-lean_ctor_set(x_2, 0, x_41);
+lean_object* x_41; lean_object* x_42; 
+x_41 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_41, 0, x_39);
+x_42 = lean_array_set(x_37, x_10, x_41);
+lean_dec(x_10);
+lean_ctor_set(x_2, 0, x_42);
 return x_2;
 }
 else
 {
-lean_object* x_42; size_t x_43; size_t x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; 
-x_42 = lean_ctor_get(x_17, 0);
-lean_inc(x_42);
-lean_dec(x_17);
-x_43 = lean_usize_shift_right(x_3, x_11);
-x_44 = lean_usize_add(x_4, x_10);
-x_45 = l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5(x_1, x_42, x_43, x_44, x_5, x_6);
-x_46 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_46, 0, x_45);
-x_47 = lean_array_fset(x_19, x_14, x_46);
-lean_dec(x_14);
-lean_ctor_set(x_2, 0, x_47);
-return x_2;
+lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; 
+lean_dec(x_39);
+x_43 = lean_ctor_get(x_40, 0);
+lean_inc(x_43);
+lean_dec(x_40);
+x_44 = lean_ctor_get(x_43, 0);
+lean_inc(x_44);
+x_45 = lean_ctor_get(x_43, 1);
+lean_inc(x_45);
+if (lean_is_exclusive(x_43)) {
+ lean_ctor_release(x_43, 0);
+ lean_ctor_release(x_43, 1);
+ x_46 = x_43;
+} else {
+ lean_dec_ref(x_43);
+ x_46 = lean_box(0);
 }
+if (lean_is_scalar(x_46)) {
+ x_47 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_47 = x_46;
 }
-default: 
-{
-lean_object* x_48; lean_object* x_49; 
-lean_dec(x_9);
-lean_dec(x_1);
-x_48 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_48, 0, x_5);
-lean_ctor_set(x_48, 1, x_6);
-x_49 = lean_array_fset(x_19, x_14, x_48);
-lean_dec(x_14);
-lean_ctor_set(x_2, 0, x_49);
+lean_ctor_set(x_47, 0, x_44);
+lean_ctor_set(x_47, 1, x_45);
+x_48 = lean_array_set(x_37, x_10, x_47);
+lean_dec(x_10);
+lean_ctor_set(x_2, 0, x_48);
 return x_2;
 }
 }
 }
-}
 else
 {
-lean_object* x_50; lean_object* x_51; size_t x_52; size_t x_53; size_t x_54; size_t x_55; lean_object* x_56; lean_object* x_57; uint8_t x_58; 
-x_50 = lean_ctor_get(x_2, 0);
-lean_inc(x_50);
+lean_object* x_49; lean_object* x_50; lean_object* x_51; size_t x_52; lean_object* x_53; lean_object* x_54; 
 lean_dec(x_2);
-x_51 = lean_ctor_get(x_1, 1);
-lean_inc(x_51);
-x_52 = 1;
-x_53 = 5;
-x_54 = l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
-x_55 = lean_usize_land(x_3, x_54);
-x_56 = lean_usize_to_nat(x_55);
-x_57 = lean_array_get_size(x_50);
-x_58 = lean_nat_dec_lt(x_56, x_57);
-lean_dec(x_57);
-if (x_58 == 0)
-{
-lean_object* x_59; 
-lean_dec(x_56);
-lean_dec(x_51);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_1);
-x_59 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_59, 0, x_50);
-return x_59;
-}
-else
-{
-lean_object* x_60; lean_object* x_61; lean_object* x_62; 
-x_60 = lean_array_fget(x_50, x_56);
-x_61 = lean_box(0);
-x_62 = lean_array_fset(x_50, x_56, x_61);
-switch (lean_obj_tag(x_60)) {
-case 0:
-{
-lean_object* x_63; lean_object* x_64; lean_object* x_65; uint8_t x_66; 
-lean_dec(x_1);
-x_63 = lean_ctor_get(x_60, 0);
-lean_inc(x_63);
-x_64 = lean_ctor_get(x_60, 1);
-lean_inc(x_64);
-if (lean_is_exclusive(x_60)) {
- lean_ctor_release(x_60, 0);
- lean_ctor_release(x_60, 1);
- x_65 = x_60;
+x_49 = lean_ctor_get(x_12, 0);
+lean_inc(x_49);
+if (lean_is_exclusive(x_12)) {
+ lean_ctor_release(x_12, 0);
+ x_50 = x_12;
 } else {
- lean_dec_ref(x_60);
- x_65 = lean_box(0);
+ lean_dec_ref(x_12);
+ x_50 = lean_box(0);
 }
-lean_inc(x_63);
-lean_inc(x_5);
-x_66 = l_Lean_Meta_Grind_isCongruent(x_51, x_5, x_63);
-if (x_66 == 0)
-{
-lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; 
-lean_dec(x_65);
-x_67 = l_Lean_PersistentHashMap_mkCollisionNode___rarg(x_63, x_64, x_5, x_6);
-x_68 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_68, 0, x_67);
-x_69 = lean_array_fset(x_62, x_56, x_68);
-lean_dec(x_56);
-x_70 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_70, 0, x_69);
-return x_70;
-}
-else
+x_51 = lean_array_set(x_5, x_10, x_11);
+x_52 = lean_usize_shift_right(x_3, x_7);
+x_53 = l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2(x_1, x_49, x_52, x_4);
+lean_inc(x_53);
+x_54 = l_Lean_PersistentHashMap_isUnaryNode___rarg(x_53);
+if (lean_obj_tag(x_54) == 0)
 {
-lean_object* x_71; lean_object* x_72; lean_object* x_73; 
-lean_dec(x_64);
-lean_dec(x_63);
-if (lean_is_scalar(x_65)) {
- x_71 = lean_alloc_ctor(0, 2, 0);
+lean_object* x_55; lean_object* x_56; lean_object* x_57; 
+if (lean_is_scalar(x_50)) {
+ x_55 = lean_alloc_ctor(1, 1, 0);
 } else {
- x_71 = x_65;
-}
-lean_ctor_set(x_71, 0, x_5);
-lean_ctor_set(x_71, 1, x_6);
-x_72 = lean_array_fset(x_62, x_56, x_71);
-lean_dec(x_56);
-x_73 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_73, 0, x_72);
-return x_73;
+ x_55 = x_50;
 }
+lean_ctor_set(x_55, 0, x_53);
+x_56 = lean_array_set(x_51, x_10, x_55);
+lean_dec(x_10);
+x_57 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_57, 0, x_56);
+return x_57;
 }
-case 1:
+else
 {
-lean_object* x_74; lean_object* x_75; size_t x_76; size_t x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; 
-lean_dec(x_51);
-x_74 = lean_ctor_get(x_60, 0);
-lean_inc(x_74);
-if (lean_is_exclusive(x_60)) {
- lean_ctor_release(x_60, 0);
- x_75 = x_60;
+lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; 
+lean_dec(x_53);
+lean_dec(x_50);
+x_58 = lean_ctor_get(x_54, 0);
+lean_inc(x_58);
+lean_dec(x_54);
+x_59 = lean_ctor_get(x_58, 0);
+lean_inc(x_59);
+x_60 = lean_ctor_get(x_58, 1);
+lean_inc(x_60);
+if (lean_is_exclusive(x_58)) {
+ lean_ctor_release(x_58, 0);
+ lean_ctor_release(x_58, 1);
+ x_61 = x_58;
 } else {
- lean_dec_ref(x_60);
- x_75 = lean_box(0);
-}
-x_76 = lean_usize_shift_right(x_3, x_53);
-x_77 = lean_usize_add(x_4, x_52);
-x_78 = l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5(x_1, x_74, x_76, x_77, x_5, x_6);
-if (lean_is_scalar(x_75)) {
- x_79 = lean_alloc_ctor(1, 1, 0);
+ lean_dec_ref(x_58);
+ x_61 = lean_box(0);
+}
+if (lean_is_scalar(x_61)) {
+ x_62 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_79 = x_75;
+ x_62 = x_61;
+}
+lean_ctor_set(x_62, 0, x_59);
+lean_ctor_set(x_62, 1, x_60);
+x_63 = lean_array_set(x_51, x_10, x_62);
+lean_dec(x_10);
+x_64 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_64, 0, x_63);
+return x_64;
+}
 }
-lean_ctor_set(x_79, 0, x_78);
-x_80 = lean_array_fset(x_62, x_56, x_79);
-lean_dec(x_56);
-x_81 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_81, 0, x_80);
-return x_81;
 }
 default: 
 {
-lean_object* x_82; lean_object* x_83; lean_object* x_84; 
-lean_dec(x_51);
+lean_dec(x_10);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
 lean_dec(x_1);
-x_82 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_82, 0, x_5);
-lean_ctor_set(x_82, 1, x_6);
-x_83 = lean_array_fset(x_62, x_56, x_82);
-lean_dec(x_56);
-x_84 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_84, 0, x_83);
-return x_84;
-}
-}
+return x_2;
 }
 }
 }
 else
 {
-uint8_t x_85; 
-x_85 = !lean_is_exclusive(x_2);
-if (x_85 == 0)
-{
-lean_object* x_86; lean_object* x_87; size_t x_88; uint8_t x_89; 
-x_86 = lean_unsigned_to_nat(0u);
-lean_inc(x_1);
-x_87 = l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__7(x_1, x_2, x_86, x_5, x_6);
-x_88 = 7;
-x_89 = lean_usize_dec_le(x_88, x_4);
-if (x_89 == 0)
-{
-lean_object* x_90; lean_object* x_91; uint8_t x_92; 
-x_90 = l_Lean_PersistentHashMap_getCollisionNodeSize___rarg(x_87);
-x_91 = lean_unsigned_to_nat(4u);
-x_92 = lean_nat_dec_lt(x_90, x_91);
-lean_dec(x_90);
-if (x_92 == 0)
+lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; 
+x_65 = lean_ctor_get(x_2, 0);
+lean_inc(x_65);
+x_66 = lean_ctor_get(x_2, 1);
+lean_inc(x_66);
+x_67 = lean_unsigned_to_nat(0u);
+x_68 = l_Array_indexOfAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__3(x_1, x_65, x_4, x_67);
+if (lean_obj_tag(x_68) == 0)
 {
-lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; 
-x_93 = lean_ctor_get(x_87, 0);
-lean_inc(x_93);
-x_94 = lean_ctor_get(x_87, 1);
-lean_inc(x_94);
-lean_dec(x_87);
-x_95 = l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5___closed__1;
-x_96 = l_Lean_PersistentHashMap_insertAux_traverse___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__6(x_1, x_4, x_93, x_94, lean_box(0), x_86, x_95);
-lean_dec(x_94);
-lean_dec(x_93);
-return x_96;
+lean_dec(x_66);
+lean_dec(x_65);
+return x_2;
 }
 else
 {
-lean_dec(x_1);
-return x_87;
-}
-}
-else
+uint8_t x_69; 
+x_69 = !lean_is_exclusive(x_2);
+if (x_69 == 0)
 {
-lean_dec(x_1);
-return x_87;
-}
+lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; 
+x_70 = lean_ctor_get(x_2, 1);
+lean_dec(x_70);
+x_71 = lean_ctor_get(x_2, 0);
+lean_dec(x_71);
+x_72 = lean_ctor_get(x_68, 0);
+lean_inc(x_72);
+lean_dec(x_68);
+lean_inc(x_72);
+x_73 = l_Array_eraseIdx___rarg(x_65, x_72, lean_box(0));
+x_74 = l_Array_eraseIdx___rarg(x_66, x_72, lean_box(0));
+lean_ctor_set(x_2, 1, x_74);
+lean_ctor_set(x_2, 0, x_73);
+return x_2;
 }
 else
 {
-lean_object* x_97; lean_object* x_98; lean_object* x_99; lean_object* x_100; lean_object* x_101; size_t x_102; uint8_t x_103; 
-x_97 = lean_ctor_get(x_2, 0);
-x_98 = lean_ctor_get(x_2, 1);
-lean_inc(x_98);
-lean_inc(x_97);
+lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; 
 lean_dec(x_2);
-x_99 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_99, 0, x_97);
-lean_ctor_set(x_99, 1, x_98);
-x_100 = lean_unsigned_to_nat(0u);
-lean_inc(x_1);
-x_101 = l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__7(x_1, x_99, x_100, x_5, x_6);
-x_102 = 7;
-x_103 = lean_usize_dec_le(x_102, x_4);
-if (x_103 == 0)
-{
-lean_object* x_104; lean_object* x_105; uint8_t x_106; 
-x_104 = l_Lean_PersistentHashMap_getCollisionNodeSize___rarg(x_101);
-x_105 = lean_unsigned_to_nat(4u);
-x_106 = lean_nat_dec_lt(x_104, x_105);
-lean_dec(x_104);
-if (x_106 == 0)
-{
-lean_object* x_107; lean_object* x_108; lean_object* x_109; lean_object* x_110; 
-x_107 = lean_ctor_get(x_101, 0);
-lean_inc(x_107);
-x_108 = lean_ctor_get(x_101, 1);
-lean_inc(x_108);
-lean_dec(x_101);
-x_109 = l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5___closed__1;
-x_110 = l_Lean_PersistentHashMap_insertAux_traverse___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__6(x_1, x_4, x_107, x_108, lean_box(0), x_100, x_109);
-lean_dec(x_108);
-lean_dec(x_107);
-return x_110;
-}
-else
-{
-lean_dec(x_1);
-return x_101;
-}
-}
-else
-{
-lean_dec(x_1);
-return x_101;
+x_75 = lean_ctor_get(x_68, 0);
+lean_inc(x_75);
+lean_dec(x_68);
+lean_inc(x_75);
+x_76 = l_Array_eraseIdx___rarg(x_65, x_75, lean_box(0));
+x_77 = l_Array_eraseIdx___rarg(x_66, x_75, lean_box(0));
+x_78 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_78, 0, x_76);
+lean_ctor_set(x_78, 1, x_77);
+return x_78;
 }
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insert___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_erase___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
 _start:
 {
-lean_object* x_5; uint64_t x_6; size_t x_7; size_t x_8; lean_object* x_9; 
-x_5 = lean_ctor_get(x_1, 1);
-lean_inc(x_5);
-x_6 = l_Lean_Meta_Grind_congrHash(x_5, x_3);
-x_7 = lean_uint64_to_usize(x_6);
-x_8 = 1;
-x_9 = l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5(x_1, x_2, x_7, x_8, x_3, x_4);
-return x_9;
+lean_object* x_4; uint64_t x_5; size_t x_6; lean_object* x_7; 
+x_4 = lean_ctor_get(x_1, 1);
+lean_inc(x_4);
+x_5 = l_Lean_Meta_Grind_congrHash(x_4, x_3);
+x_6 = lean_uint64_to_usize(x_5);
+x_7 = l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2(x_1, x_2, x_6, x_3);
+return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(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) {
+LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__4(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, lean_object* x_11) {
 _start:
 {
-lean_object* x_11; lean_object* x_12; uint8_t x_13; 
-x_11 = lean_ctor_get(x_8, 2);
-x_12 = l_Lean_isTracingEnabledForCore(x_1, x_11, x_10);
-x_13 = !lean_is_exclusive(x_12);
-if (x_13 == 0)
+if (lean_obj_tag(x_1) == 0)
 {
-return x_12;
+lean_object* x_12; lean_object* x_13; 
+x_12 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_12, 0, x_2);
+x_13 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_13, 0, x_12);
+lean_ctor_set(x_13, 1, x_11);
+return x_13;
 }
 else
 {
-lean_object* x_14; lean_object* x_15; lean_object* x_16; 
-x_14 = lean_ctor_get(x_12, 0);
-x_15 = lean_ctor_get(x_12, 1);
-lean_inc(x_15);
+lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; uint8_t x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; uint8_t x_32; 
+x_14 = lean_ctor_get(x_1, 0);
 lean_inc(x_14);
-lean_dec(x_12);
-x_16 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_16, 0, x_14);
-lean_ctor_set(x_16, 1, x_15);
-return x_16;
-}
-}
-}
-static double _init_l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__1() {
-_start:
+x_15 = lean_ctor_get(x_1, 1);
+lean_inc(x_15);
+x_16 = lean_ctor_get(x_1, 3);
+lean_inc(x_16);
+lean_dec(x_1);
+x_17 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__4(x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+x_18 = lean_ctor_get(x_17, 1);
+lean_inc(x_18);
+lean_dec(x_17);
+x_19 = lean_st_ref_take(x_3, x_18);
+x_20 = lean_ctor_get(x_19, 0);
+lean_inc(x_20);
+x_21 = lean_ctor_get(x_19, 1);
+lean_inc(x_21);
+lean_dec(x_19);
+x_22 = lean_ctor_get(x_20, 0);
+lean_inc(x_22);
+x_23 = lean_ctor_get(x_20, 1);
+lean_inc(x_23);
+x_24 = lean_ctor_get(x_20, 2);
+lean_inc(x_24);
+x_25 = lean_ctor_get(x_20, 3);
+lean_inc(x_25);
+x_26 = lean_ctor_get(x_20, 4);
+lean_inc(x_26);
+x_27 = lean_ctor_get(x_20, 5);
+lean_inc(x_27);
+x_28 = lean_ctor_get_uint8(x_20, sizeof(void*)*8);
+x_29 = lean_ctor_get(x_20, 6);
+lean_inc(x_29);
+x_30 = lean_ctor_get(x_20, 7);
+lean_inc(x_30);
+lean_inc(x_20);
+x_31 = l_Lean_PersistentHashMap_erase___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__1(x_20, x_25, x_15);
+x_32 = !lean_is_exclusive(x_20);
+if (x_32 == 0)
 {
-lean_object* x_1; uint8_t x_2; double x_3; 
-x_1 = lean_unsigned_to_nat(0u);
-x_2 = 0;
-x_3 = l_Float_ofScientific(x_1, x_2, x_1);
-return x_3;
-}
+lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; 
+x_33 = lean_ctor_get(x_20, 7);
+lean_dec(x_33);
+x_34 = lean_ctor_get(x_20, 6);
+lean_dec(x_34);
+x_35 = lean_ctor_get(x_20, 5);
+lean_dec(x_35);
+x_36 = lean_ctor_get(x_20, 4);
+lean_dec(x_36);
+x_37 = lean_ctor_get(x_20, 3);
+lean_dec(x_37);
+x_38 = lean_ctor_get(x_20, 2);
+lean_dec(x_38);
+x_39 = lean_ctor_get(x_20, 1);
+lean_dec(x_39);
+x_40 = lean_ctor_get(x_20, 0);
+lean_dec(x_40);
+lean_ctor_set(x_20, 3, x_31);
+x_41 = lean_st_ref_set(x_3, x_20, x_21);
+x_42 = lean_ctor_get(x_41, 1);
+lean_inc(x_42);
+lean_dec(x_41);
+x_43 = lean_box(0);
+x_1 = x_16;
+x_2 = x_43;
+x_11 = x_42;
+goto _start;
 }
-static lean_object* _init_l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__2() {
-_start:
+else
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("", 0, 0);
-return x_1;
+lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; 
+lean_dec(x_20);
+x_45 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_45, 0, x_22);
+lean_ctor_set(x_45, 1, x_23);
+lean_ctor_set(x_45, 2, x_24);
+lean_ctor_set(x_45, 3, x_31);
+lean_ctor_set(x_45, 4, x_26);
+lean_ctor_set(x_45, 5, x_27);
+lean_ctor_set(x_45, 6, x_29);
+lean_ctor_set(x_45, 7, x_30);
+lean_ctor_set_uint8(x_45, sizeof(void*)*8, x_28);
+x_46 = lean_st_ref_set(x_3, x_45, x_21);
+x_47 = lean_ctor_get(x_46, 1);
+lean_inc(x_47);
+lean_dec(x_46);
+x_48 = lean_box(0);
+x_1 = x_16;
+x_2 = x_48;
+x_11 = x_47;
+goto _start;
 }
 }
-static lean_object* _init_l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__3() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = lean_box(0);
-x_2 = lean_array_mk(x_1);
-return x_2;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(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, lean_object* x_11) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents(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:
 {
-lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; 
-x_12 = lean_ctor_get(x_9, 5);
-x_13 = l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(x_2, x_7, x_8, x_9, x_10, x_11);
-x_14 = lean_ctor_get(x_13, 0);
-lean_inc(x_14);
-x_15 = lean_ctor_get(x_13, 1);
-lean_inc(x_15);
-lean_dec(x_13);
-x_16 = lean_st_ref_take(x_10, x_15);
-x_17 = lean_ctor_get(x_16, 0);
-lean_inc(x_17);
-x_18 = lean_ctor_get(x_17, 3);
-lean_inc(x_18);
-x_19 = !lean_is_exclusive(x_16);
-if (x_19 == 0)
-{
-lean_object* x_20; lean_object* x_21; uint8_t x_22; 
-x_20 = lean_ctor_get(x_16, 1);
-x_21 = lean_ctor_get(x_16, 0);
-lean_dec(x_21);
-x_22 = !lean_is_exclusive(x_17);
-if (x_22 == 0)
-{
-lean_object* x_23; uint8_t x_24; 
-x_23 = lean_ctor_get(x_17, 3);
-lean_dec(x_23);
-x_24 = !lean_is_exclusive(x_18);
-if (x_24 == 0)
-{
-lean_object* x_25; double x_26; uint8_t x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; uint8_t x_34; 
-x_25 = lean_ctor_get(x_18, 0);
-x_26 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__1;
-x_27 = 0;
-x_28 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__2;
-x_29 = lean_alloc_ctor(0, 2, 17);
-lean_ctor_set(x_29, 0, x_1);
-lean_ctor_set(x_29, 1, x_28);
-lean_ctor_set_float(x_29, sizeof(void*)*2, x_26);
-lean_ctor_set_float(x_29, sizeof(void*)*2 + 8, x_26);
-lean_ctor_set_uint8(x_29, sizeof(void*)*2 + 16, x_27);
-x_30 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__3;
-x_31 = lean_alloc_ctor(9, 3, 0);
-lean_ctor_set(x_31, 0, x_29);
-lean_ctor_set(x_31, 1, x_14);
-lean_ctor_set(x_31, 2, x_30);
+lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; 
+x_11 = l_Lean_Meta_Grind_getParentsAndReset(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+x_12 = lean_ctor_get(x_11, 0);
 lean_inc(x_12);
-lean_ctor_set(x_16, 1, x_31);
-lean_ctor_set(x_16, 0, x_12);
-x_32 = l_Lean_PersistentArray_push___rarg(x_25, x_16);
-lean_ctor_set(x_18, 0, x_32);
-x_33 = lean_st_ref_set(x_10, x_17, x_20);
-x_34 = !lean_is_exclusive(x_33);
-if (x_34 == 0)
-{
-lean_object* x_35; lean_object* x_36; 
-x_35 = lean_ctor_get(x_33, 0);
-lean_dec(x_35);
-x_36 = lean_box(0);
-lean_ctor_set(x_33, 0, x_36);
-return x_33;
-}
-else
+x_13 = lean_ctor_get(x_11, 1);
+lean_inc(x_13);
+lean_dec(x_11);
+x_14 = lean_box(0);
+lean_inc(x_12);
+x_15 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__4(x_12, x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
+x_16 = !lean_is_exclusive(x_15);
+if (x_16 == 0)
 {
-lean_object* x_37; lean_object* x_38; lean_object* x_39; 
-x_37 = lean_ctor_get(x_33, 1);
-lean_inc(x_37);
-lean_dec(x_33);
-x_38 = lean_box(0);
-x_39 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_39, 0, x_38);
-lean_ctor_set(x_39, 1, x_37);
-return x_39;
-}
+lean_object* x_17; 
+x_17 = lean_ctor_get(x_15, 0);
+lean_dec(x_17);
+lean_ctor_set(x_15, 0, x_12);
+return x_15;
 }
 else
 {
-uint64_t x_40; lean_object* x_41; double x_42; uint8_t x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; 
-x_40 = lean_ctor_get_uint64(x_18, sizeof(void*)*1);
-x_41 = lean_ctor_get(x_18, 0);
-lean_inc(x_41);
-lean_dec(x_18);
-x_42 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__1;
-x_43 = 0;
-x_44 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__2;
-x_45 = lean_alloc_ctor(0, 2, 17);
-lean_ctor_set(x_45, 0, x_1);
-lean_ctor_set(x_45, 1, x_44);
-lean_ctor_set_float(x_45, sizeof(void*)*2, x_42);
-lean_ctor_set_float(x_45, sizeof(void*)*2 + 8, x_42);
-lean_ctor_set_uint8(x_45, sizeof(void*)*2 + 16, x_43);
-x_46 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__3;
-x_47 = lean_alloc_ctor(9, 3, 0);
-lean_ctor_set(x_47, 0, x_45);
-lean_ctor_set(x_47, 1, x_14);
-lean_ctor_set(x_47, 2, x_46);
-lean_inc(x_12);
-lean_ctor_set(x_16, 1, x_47);
-lean_ctor_set(x_16, 0, x_12);
-x_48 = l_Lean_PersistentArray_push___rarg(x_41, x_16);
-x_49 = lean_alloc_ctor(0, 1, 8);
-lean_ctor_set(x_49, 0, x_48);
-lean_ctor_set_uint64(x_49, sizeof(void*)*1, x_40);
-lean_ctor_set(x_17, 3, x_49);
-x_50 = lean_st_ref_set(x_10, x_17, x_20);
-x_51 = lean_ctor_get(x_50, 1);
-lean_inc(x_51);
-if (lean_is_exclusive(x_50)) {
- lean_ctor_release(x_50, 0);
- lean_ctor_release(x_50, 1);
- x_52 = x_50;
-} else {
- lean_dec_ref(x_50);
- x_52 = lean_box(0);
-}
-x_53 = lean_box(0);
-if (lean_is_scalar(x_52)) {
- x_54 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_54 = x_52;
+lean_object* x_18; lean_object* x_19; 
+x_18 = lean_ctor_get(x_15, 1);
+lean_inc(x_18);
+lean_dec(x_15);
+x_19 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_19, 0, x_12);
+lean_ctor_set(x_19, 1, x_18);
+return x_19;
 }
-lean_ctor_set(x_54, 0, x_53);
-lean_ctor_set(x_54, 1, x_51);
-return x_54;
 }
 }
-else
+LEAN_EXPORT lean_object* l_Array_indexOfAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+_start:
 {
-lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; uint64_t x_62; lean_object* x_63; lean_object* x_64; double x_65; uint8_t x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; 
-x_55 = lean_ctor_get(x_17, 0);
-x_56 = lean_ctor_get(x_17, 1);
-x_57 = lean_ctor_get(x_17, 2);
-x_58 = lean_ctor_get(x_17, 4);
-x_59 = lean_ctor_get(x_17, 5);
-x_60 = lean_ctor_get(x_17, 6);
-x_61 = lean_ctor_get(x_17, 7);
-lean_inc(x_61);
-lean_inc(x_60);
-lean_inc(x_59);
-lean_inc(x_58);
-lean_inc(x_57);
-lean_inc(x_56);
-lean_inc(x_55);
-lean_dec(x_17);
-x_62 = lean_ctor_get_uint64(x_18, sizeof(void*)*1);
-x_63 = lean_ctor_get(x_18, 0);
-lean_inc(x_63);
-if (lean_is_exclusive(x_18)) {
- lean_ctor_release(x_18, 0);
- x_64 = x_18;
-} else {
- lean_dec_ref(x_18);
- x_64 = lean_box(0);
-}
-x_65 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__1;
-x_66 = 0;
-x_67 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__2;
-x_68 = lean_alloc_ctor(0, 2, 17);
-lean_ctor_set(x_68, 0, x_1);
-lean_ctor_set(x_68, 1, x_67);
-lean_ctor_set_float(x_68, sizeof(void*)*2, x_65);
-lean_ctor_set_float(x_68, sizeof(void*)*2 + 8, x_65);
-lean_ctor_set_uint8(x_68, sizeof(void*)*2 + 16, x_66);
-x_69 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__3;
-x_70 = lean_alloc_ctor(9, 3, 0);
-lean_ctor_set(x_70, 0, x_68);
-lean_ctor_set(x_70, 1, x_14);
-lean_ctor_set(x_70, 2, x_69);
-lean_inc(x_12);
-lean_ctor_set(x_16, 1, x_70);
-lean_ctor_set(x_16, 0, x_12);
-x_71 = l_Lean_PersistentArray_push___rarg(x_63, x_16);
-if (lean_is_scalar(x_64)) {
- x_72 = lean_alloc_ctor(0, 1, 8);
-} else {
- x_72 = x_64;
-}
-lean_ctor_set(x_72, 0, x_71);
-lean_ctor_set_uint64(x_72, sizeof(void*)*1, x_62);
-x_73 = lean_alloc_ctor(0, 8, 0);
-lean_ctor_set(x_73, 0, x_55);
-lean_ctor_set(x_73, 1, x_56);
-lean_ctor_set(x_73, 2, x_57);
-lean_ctor_set(x_73, 3, x_72);
-lean_ctor_set(x_73, 4, x_58);
-lean_ctor_set(x_73, 5, x_59);
-lean_ctor_set(x_73, 6, x_60);
-lean_ctor_set(x_73, 7, x_61);
-x_74 = lean_st_ref_set(x_10, x_73, x_20);
-x_75 = lean_ctor_get(x_74, 1);
-lean_inc(x_75);
-if (lean_is_exclusive(x_74)) {
- lean_ctor_release(x_74, 0);
- lean_ctor_release(x_74, 1);
- x_76 = x_74;
-} else {
- lean_dec_ref(x_74);
- x_76 = lean_box(0);
-}
-x_77 = lean_box(0);
-if (lean_is_scalar(x_76)) {
- x_78 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_78 = x_76;
-}
-lean_ctor_set(x_78, 0, x_77);
-lean_ctor_set(x_78, 1, x_75);
-return x_78;
+lean_object* x_5; 
+x_5 = l_Array_indexOfAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__3(x_1, x_2, x_3, x_4);
+lean_dec(x_2);
+return x_5;
 }
 }
-else
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+_start:
 {
-lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; uint64_t x_88; lean_object* x_89; lean_object* x_90; double x_91; uint8_t x_92; lean_object* x_93; lean_object* x_94; 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_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; 
-x_79 = lean_ctor_get(x_16, 1);
-lean_inc(x_79);
-lean_dec(x_16);
-x_80 = lean_ctor_get(x_17, 0);
-lean_inc(x_80);
-x_81 = lean_ctor_get(x_17, 1);
-lean_inc(x_81);
-x_82 = lean_ctor_get(x_17, 2);
-lean_inc(x_82);
-x_83 = lean_ctor_get(x_17, 4);
-lean_inc(x_83);
-x_84 = lean_ctor_get(x_17, 5);
-lean_inc(x_84);
-x_85 = lean_ctor_get(x_17, 6);
-lean_inc(x_85);
-x_86 = lean_ctor_get(x_17, 7);
-lean_inc(x_86);
-if (lean_is_exclusive(x_17)) {
- lean_ctor_release(x_17, 0);
- lean_ctor_release(x_17, 1);
- lean_ctor_release(x_17, 2);
- lean_ctor_release(x_17, 3);
- lean_ctor_release(x_17, 4);
- lean_ctor_release(x_17, 5);
- lean_ctor_release(x_17, 6);
- lean_ctor_release(x_17, 7);
- x_87 = x_17;
-} else {
- lean_dec_ref(x_17);
- x_87 = lean_box(0);
-}
-x_88 = lean_ctor_get_uint64(x_18, sizeof(void*)*1);
-x_89 = lean_ctor_get(x_18, 0);
-lean_inc(x_89);
-if (lean_is_exclusive(x_18)) {
- lean_ctor_release(x_18, 0);
- x_90 = x_18;
-} else {
- lean_dec_ref(x_18);
- x_90 = lean_box(0);
-}
-x_91 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__1;
-x_92 = 0;
-x_93 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__2;
-x_94 = lean_alloc_ctor(0, 2, 17);
-lean_ctor_set(x_94, 0, x_1);
-lean_ctor_set(x_94, 1, x_93);
-lean_ctor_set_float(x_94, sizeof(void*)*2, x_91);
-lean_ctor_set_float(x_94, sizeof(void*)*2 + 8, x_91);
-lean_ctor_set_uint8(x_94, sizeof(void*)*2 + 16, x_92);
-x_95 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__3;
-x_96 = lean_alloc_ctor(9, 3, 0);
-lean_ctor_set(x_96, 0, x_94);
-lean_ctor_set(x_96, 1, x_14);
-lean_ctor_set(x_96, 2, x_95);
-lean_inc(x_12);
-x_97 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_97, 0, x_12);
-lean_ctor_set(x_97, 1, x_96);
-x_98 = l_Lean_PersistentArray_push___rarg(x_89, x_97);
-if (lean_is_scalar(x_90)) {
- x_99 = lean_alloc_ctor(0, 1, 8);
-} else {
- x_99 = x_90;
+size_t x_5; lean_object* x_6; 
+x_5 = lean_unbox_usize(x_3);
+lean_dec(x_3);
+x_6 = l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2(x_1, x_2, x_5, x_4);
+return x_6;
 }
-lean_ctor_set(x_99, 0, x_98);
-lean_ctor_set_uint64(x_99, sizeof(void*)*1, x_88);
-if (lean_is_scalar(x_87)) {
- x_100 = lean_alloc_ctor(0, 8, 0);
-} else {
- x_100 = x_87;
-}
-lean_ctor_set(x_100, 0, x_80);
-lean_ctor_set(x_100, 1, x_81);
-lean_ctor_set(x_100, 2, x_82);
-lean_ctor_set(x_100, 3, x_99);
-lean_ctor_set(x_100, 4, x_83);
-lean_ctor_set(x_100, 5, x_84);
-lean_ctor_set(x_100, 6, x_85);
-lean_ctor_set(x_100, 7, x_86);
-x_101 = lean_st_ref_set(x_10, x_100, x_79);
-x_102 = lean_ctor_get(x_101, 1);
-lean_inc(x_102);
-if (lean_is_exclusive(x_101)) {
- lean_ctor_release(x_101, 0);
- lean_ctor_release(x_101, 1);
- x_103 = x_101;
-} else {
- lean_dec_ref(x_101);
- x_103 = lean_box(0);
 }
-x_104 = lean_box(0);
-if (lean_is_scalar(x_103)) {
- x_105 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_105 = x_103;
+LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__4___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, lean_object* x_10, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__4(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_12;
 }
-lean_ctor_set(x_105, 0, x_104);
-lean_ctor_set(x_105, 1, x_102);
-return x_105;
 }
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_11;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___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, lean_object* x_11, lean_object* x_12) {
+LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents___spec__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, lean_object* x_11) {
 _start:
 {
-lean_object* x_13; 
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_1);
-x_13 = lean_infer_type(x_1, x_8, x_9, x_10, x_11, x_12);
-if (lean_obj_tag(x_13) == 0)
+if (lean_obj_tag(x_1) == 0)
 {
-lean_object* x_14; lean_object* x_15; lean_object* x_16; 
-x_14 = lean_ctor_get(x_13, 0);
+lean_object* x_12; lean_object* x_13; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_12 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_12, 0, x_2);
+x_13 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_13, 0, x_12);
+lean_ctor_set(x_13, 1, x_11);
+return x_13;
+}
+else
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; 
+x_14 = lean_ctor_get(x_1, 0);
 lean_inc(x_14);
-x_15 = lean_ctor_get(x_13, 1);
+x_15 = lean_ctor_get(x_1, 1);
 lean_inc(x_15);
-lean_dec(x_13);
-lean_inc(x_11);
+x_16 = lean_ctor_get(x_1, 3);
+lean_inc(x_16);
+lean_dec(x_1);
 lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
-lean_inc(x_2);
-x_16 = lean_infer_type(x_2, x_8, x_9, x_10, x_11, x_15);
-if (lean_obj_tag(x_16) == 0)
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_17 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents___spec__1(x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+if (lean_obj_tag(x_17) == 0)
 {
-lean_object* x_17; lean_object* x_18; lean_object* x_19; 
-x_17 = lean_ctor_get(x_16, 0);
-lean_inc(x_17);
-x_18 = lean_ctor_get(x_16, 1);
+lean_object* x_18; 
+x_18 = lean_ctor_get(x_17, 0);
 lean_inc(x_18);
-lean_dec(x_16);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-x_19 = l_Lean_Meta_isExprDefEq(x_14, x_17, x_8, x_9, x_10, x_11, x_18);
-if (lean_obj_tag(x_19) == 0)
-{
-lean_object* x_20; uint8_t x_21; 
-x_20 = lean_ctor_get(x_19, 0);
-lean_inc(x_20);
-x_21 = lean_unbox(x_20);
-lean_dec(x_20);
-if (x_21 == 0)
+if (lean_obj_tag(x_18) == 0)
 {
-lean_object* x_22; lean_object* x_23; uint8_t x_24; lean_object* x_25; 
-x_22 = lean_ctor_get(x_19, 1);
-lean_inc(x_22);
-lean_dec(x_19);
-x_23 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof;
-x_24 = 1;
-x_25 = l_Lean_Meta_Grind_pushEqCore(x_1, x_2, x_23, x_24, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_22);
-lean_dec(x_11);
+uint8_t x_19; 
+lean_dec(x_16);
+lean_dec(x_15);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
-return x_25;
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_19 = !lean_is_exclusive(x_17);
+if (x_19 == 0)
+{
+lean_object* x_20; 
+x_20 = lean_ctor_get(x_17, 0);
+lean_dec(x_20);
+return x_17;
 }
 else
 {
-lean_object* x_26; lean_object* x_27; uint8_t x_28; lean_object* x_29; 
-x_26 = lean_ctor_get(x_19, 1);
-lean_inc(x_26);
-lean_dec(x_19);
-x_27 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof;
-x_28 = 0;
-x_29 = l_Lean_Meta_Grind_pushEqCore(x_1, x_2, x_27, x_28, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_26);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-return x_29;
+lean_object* x_21; lean_object* x_22; 
+x_21 = lean_ctor_get(x_17, 1);
+lean_inc(x_21);
+lean_dec(x_17);
+x_22 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_22, 0, x_18);
+lean_ctor_set(x_22, 1, x_21);
+return x_22;
 }
 }
 else
 {
-uint8_t x_30; 
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_2);
-lean_dec(x_1);
-x_30 = !lean_is_exclusive(x_19);
-if (x_30 == 0)
-{
-return x_19;
-}
-else
+lean_object* x_23; lean_object* x_24; 
+lean_dec(x_18);
+x_23 = lean_ctor_get(x_17, 1);
+lean_inc(x_23);
+lean_dec(x_17);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_24 = l_Lean_Meta_Grind_addCongrTable(x_15, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_23);
+if (lean_obj_tag(x_24) == 0)
 {
-lean_object* x_31; lean_object* x_32; lean_object* x_33; 
-x_31 = lean_ctor_get(x_19, 0);
-x_32 = lean_ctor_get(x_19, 1);
-lean_inc(x_32);
-lean_inc(x_31);
-lean_dec(x_19);
-x_33 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_33, 0, x_31);
-lean_ctor_set(x_33, 1, x_32);
-return x_33;
-}
-}
+lean_object* x_25; lean_object* x_26; 
+x_25 = lean_ctor_get(x_24, 1);
+lean_inc(x_25);
+lean_dec(x_24);
+x_26 = lean_box(0);
+x_1 = x_16;
+x_2 = x_26;
+x_11 = x_25;
+goto _start;
 }
 else
 {
-uint8_t x_34; 
-lean_dec(x_14);
-lean_dec(x_11);
+uint8_t x_28; 
+lean_dec(x_16);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
-lean_dec(x_2);
-lean_dec(x_1);
-x_34 = !lean_is_exclusive(x_16);
-if (x_34 == 0)
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_28 = !lean_is_exclusive(x_24);
+if (x_28 == 0)
 {
-return x_16;
+return x_24;
 }
 else
 {
-lean_object* x_35; lean_object* x_36; lean_object* x_37; 
-x_35 = lean_ctor_get(x_16, 0);
-x_36 = lean_ctor_get(x_16, 1);
-lean_inc(x_36);
-lean_inc(x_35);
-lean_dec(x_16);
-x_37 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_37, 0, x_35);
-lean_ctor_set(x_37, 1, x_36);
-return x_37;
+lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+x_29 = lean_ctor_get(x_24, 0);
+x_30 = lean_ctor_get(x_24, 1);
+lean_inc(x_30);
+lean_inc(x_29);
+lean_dec(x_24);
+x_31 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_31, 0, x_29);
+lean_ctor_set(x_31, 1, x_30);
+return x_31;
+}
 }
 }
 }
 else
 {
-uint8_t x_38; 
-lean_dec(x_11);
+uint8_t x_32; 
+lean_dec(x_16);
+lean_dec(x_15);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
-lean_dec(x_2);
-lean_dec(x_1);
-x_38 = !lean_is_exclusive(x_13);
-if (x_38 == 0)
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_32 = !lean_is_exclusive(x_17);
+if (x_32 == 0)
 {
-return x_13;
+return x_17;
 }
 else
 {
-lean_object* x_39; lean_object* x_40; lean_object* x_41; 
-x_39 = lean_ctor_get(x_13, 0);
-x_40 = lean_ctor_get(x_13, 1);
-lean_inc(x_40);
-lean_inc(x_39);
-lean_dec(x_13);
-x_41 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_41, 0, x_39);
-lean_ctor_set(x_41, 1, x_40);
-return x_41;
+lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_33 = lean_ctor_get(x_17, 0);
+x_34 = lean_ctor_get(x_17, 1);
+lean_inc(x_34);
+lean_inc(x_33);
+lean_dec(x_17);
+x_35 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_35, 0, x_33);
+lean_ctor_set(x_35, 1, x_34);
+return x_35;
+}
 }
 }
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__1() {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents(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:
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("grind", 5, 5);
-return x_1;
-}
+lean_object* x_11; lean_object* x_12; 
+x_11 = lean_box(0);
+x_12 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents___spec__1(x_1, x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_12) == 0)
+{
+uint8_t x_13; 
+x_13 = !lean_is_exclusive(x_12);
+if (x_13 == 0)
+{
+lean_object* x_14; 
+x_14 = lean_ctor_get(x_12, 0);
+lean_dec(x_14);
+lean_ctor_set(x_12, 0, x_11);
+return x_12;
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__2() {
-_start:
+else
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("congr", 5, 5);
-return x_1;
+lean_object* x_15; lean_object* x_16; 
+x_15 = lean_ctor_get(x_12, 1);
+lean_inc(x_15);
+lean_dec(x_12);
+x_16 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_16, 0, x_11);
+lean_ctor_set(x_16, 1, x_15);
+return x_16;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__3() {
-_start:
+else
 {
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__2;
-x_3 = l_Lean_Name_mkStr2(x_1, x_2);
-return x_3;
+uint8_t x_17; 
+x_17 = !lean_is_exclusive(x_12);
+if (x_17 == 0)
+{
+return x_12;
+}
+else
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_18 = lean_ctor_get(x_12, 0);
+x_19 = lean_ctor_get(x_12, 1);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_dec(x_12);
+x_20 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_20, 0, x_18);
+lean_ctor_set(x_20, 1, x_19);
+return x_20;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4() {
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__1() {
 _start:
 {
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__2;
-x_2 = l_Lean_stringToMessageData(x_1);
-return x_2;
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("True", 4, 4);
+return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__5() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__2() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked(" = ", 3, 3);
+x_1 = lean_mk_string_unchecked("intro", 5, 5);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__6() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__3() {
 _start:
 {
-lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__5;
-x_2 = l_Lean_stringToMessageData(x_1);
-return x_2;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__2;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable(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) {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__4() {
 _start:
 {
-lean_object* x_11; uint8_t x_12; 
-x_11 = lean_st_ref_get(x_2, x_10);
-x_12 = !lean_is_exclusive(x_11);
-if (x_12 == 0)
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__3;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse(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_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; 
+x_10 = lean_st_ref_get(x_1, x_9);
+x_11 = lean_ctor_get(x_10, 0);
+lean_inc(x_11);
+x_12 = lean_ctor_get(x_10, 1);
+lean_inc(x_12);
+lean_dec(x_10);
 x_13 = lean_ctor_get(x_11, 0);
-x_14 = lean_ctor_get(x_11, 1);
-x_15 = lean_ctor_get(x_13, 3);
+lean_inc(x_13);
+lean_dec(x_11);
+x_14 = l_Lean_MVarId_isAssigned___at_Lean_Meta_Grind_closeGoal___spec__1(x_13, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_12);
+lean_dec(x_13);
+x_15 = lean_ctor_get(x_14, 0);
 lean_inc(x_15);
-lean_inc(x_1);
-x_16 = l_Lean_PersistentHashMap_findEntry_x3f___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__1(x_13, x_15, x_1);
-if (lean_obj_tag(x_16) == 0)
+x_16 = lean_unbox(x_15);
+lean_dec(x_15);
+if (x_16 == 0)
 {
-lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; uint8_t x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; uint8_t x_30; 
-lean_free_object(x_11);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-x_17 = lean_st_ref_take(x_2, x_14);
-x_18 = lean_ctor_get(x_17, 0);
-lean_inc(x_18);
-x_19 = lean_ctor_get(x_17, 1);
+lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_17 = lean_ctor_get(x_14, 1);
+lean_inc(x_17);
+lean_dec(x_14);
+x_18 = l_Lean_Meta_Grind_getTrueExpr___rarg(x_4, x_5, x_6, x_7, x_8, x_17);
+x_19 = lean_ctor_get(x_18, 0);
 lean_inc(x_19);
-lean_dec(x_17);
-x_20 = lean_ctor_get(x_18, 0);
+x_20 = lean_ctor_get(x_18, 1);
 lean_inc(x_20);
-x_21 = lean_ctor_get(x_18, 1);
-lean_inc(x_21);
-x_22 = lean_ctor_get(x_18, 2);
+lean_dec(x_18);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+lean_inc(x_2);
+lean_inc(x_1);
+x_21 = l_Lean_Meta_Grind_mkEqFalseProof(x_19, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_20);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+x_22 = lean_ctor_get(x_21, 0);
 lean_inc(x_22);
-x_23 = lean_ctor_get(x_18, 3);
+x_23 = lean_ctor_get(x_21, 1);
 lean_inc(x_23);
-x_24 = lean_ctor_get(x_18, 4);
-lean_inc(x_24);
-x_25 = lean_ctor_get_uint8(x_18, sizeof(void*)*7);
-x_26 = lean_ctor_get(x_18, 5);
+lean_dec(x_21);
+x_24 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__4;
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+x_25 = l_Lean_Meta_mkEqMP(x_22, x_24, x_5, x_6, x_7, x_8, x_23);
+if (lean_obj_tag(x_25) == 0)
+{
+lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_26 = lean_ctor_get(x_25, 0);
 lean_inc(x_26);
-x_27 = lean_ctor_get(x_18, 6);
+x_27 = lean_ctor_get(x_25, 1);
 lean_inc(x_27);
-x_28 = lean_box(0);
-lean_inc(x_18);
-x_29 = l_Lean_PersistentHashMap_insert___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__4(x_18, x_23, x_1, x_28);
-x_30 = !lean_is_exclusive(x_18);
-if (x_30 == 0)
-{
-lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; uint8_t x_39; 
-x_31 = lean_ctor_get(x_18, 6);
-lean_dec(x_31);
-x_32 = lean_ctor_get(x_18, 5);
-lean_dec(x_32);
-x_33 = lean_ctor_get(x_18, 4);
-lean_dec(x_33);
-x_34 = lean_ctor_get(x_18, 3);
-lean_dec(x_34);
-x_35 = lean_ctor_get(x_18, 2);
-lean_dec(x_35);
-x_36 = lean_ctor_get(x_18, 1);
-lean_dec(x_36);
-x_37 = lean_ctor_get(x_18, 0);
-lean_dec(x_37);
-lean_ctor_set(x_18, 3, x_29);
-x_38 = lean_st_ref_set(x_2, x_18, x_19);
-x_39 = !lean_is_exclusive(x_38);
-if (x_39 == 0)
-{
-lean_object* x_40; 
-x_40 = lean_ctor_get(x_38, 0);
-lean_dec(x_40);
-lean_ctor_set(x_38, 0, x_28);
-return x_38;
+lean_dec(x_25);
+x_28 = l_Lean_Meta_Grind_closeGoal(x_26, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_27);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_28;
 }
 else
 {
-lean_object* x_41; lean_object* x_42; 
-x_41 = lean_ctor_get(x_38, 1);
-lean_inc(x_41);
-lean_dec(x_38);
-x_42 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_42, 0, x_28);
-lean_ctor_set(x_42, 1, x_41);
-return x_42;
-}
+uint8_t x_29; 
+lean_dec(x_8);
+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_29 = !lean_is_exclusive(x_25);
+if (x_29 == 0)
+{
+return x_25;
 }
 else
 {
-lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; 
-lean_dec(x_18);
-x_43 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_43, 0, x_20);
-lean_ctor_set(x_43, 1, x_21);
-lean_ctor_set(x_43, 2, x_22);
-lean_ctor_set(x_43, 3, x_29);
-lean_ctor_set(x_43, 4, x_24);
-lean_ctor_set(x_43, 5, x_26);
-lean_ctor_set(x_43, 6, x_27);
-lean_ctor_set_uint8(x_43, sizeof(void*)*7, x_25);
-x_44 = lean_st_ref_set(x_2, x_43, x_19);
-x_45 = lean_ctor_get(x_44, 1);
-lean_inc(x_45);
-if (lean_is_exclusive(x_44)) {
- lean_ctor_release(x_44, 0);
- lean_ctor_release(x_44, 1);
- x_46 = x_44;
-} else {
- lean_dec_ref(x_44);
- x_46 = lean_box(0);
-}
-if (lean_is_scalar(x_46)) {
- x_47 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_47 = x_46;
-}
-lean_ctor_set(x_47, 0, x_28);
-lean_ctor_set(x_47, 1, x_45);
-return x_47;
+lean_object* x_30; lean_object* x_31; lean_object* x_32; 
+x_30 = lean_ctor_get(x_25, 0);
+x_31 = lean_ctor_get(x_25, 1);
+lean_inc(x_31);
+lean_inc(x_30);
+lean_dec(x_25);
+x_32 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_32, 0, x_30);
+lean_ctor_set(x_32, 1, x_31);
+return x_32;
 }
 }
-else
-{
-lean_object* x_48; uint8_t x_49; 
-x_48 = lean_ctor_get(x_16, 0);
-lean_inc(x_48);
-lean_dec(x_16);
-x_49 = !lean_is_exclusive(x_48);
-if (x_49 == 0)
-{
-lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; uint8_t x_55; 
-x_50 = lean_ctor_get(x_48, 0);
-x_51 = lean_ctor_get(x_48, 1);
-lean_dec(x_51);
-x_52 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__3;
-x_53 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_52, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_14);
-x_54 = lean_ctor_get(x_53, 0);
-lean_inc(x_54);
-x_55 = lean_unbox(x_54);
-lean_dec(x_54);
-if (x_55 == 0)
-{
-lean_object* x_56; lean_object* x_57; lean_object* x_58; 
-lean_free_object(x_48);
-lean_free_object(x_11);
-x_56 = lean_ctor_get(x_53, 1);
-lean_inc(x_56);
-lean_dec(x_53);
-x_57 = lean_box(0);
-x_58 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___lambda__1(x_1, x_50, x_57, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_56);
-return x_58;
 }
 else
 {
-uint8_t x_59; 
-x_59 = !lean_is_exclusive(x_53);
-if (x_59 == 0)
+uint8_t x_33; 
+lean_dec(x_8);
+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_33 = !lean_is_exclusive(x_21);
+if (x_33 == 0)
 {
-lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; 
-x_60 = lean_ctor_get(x_53, 1);
-x_61 = lean_ctor_get(x_53, 0);
-lean_dec(x_61);
-lean_inc(x_1);
-x_62 = l_Lean_MessageData_ofExpr(x_1);
-x_63 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-lean_ctor_set_tag(x_53, 7);
-lean_ctor_set(x_53, 1, x_62);
-lean_ctor_set(x_53, 0, x_63);
-x_64 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__6;
-lean_ctor_set_tag(x_48, 7);
-lean_ctor_set(x_48, 1, x_64);
-lean_ctor_set(x_48, 0, x_53);
-lean_inc(x_50);
-x_65 = l_Lean_MessageData_ofExpr(x_50);
-lean_ctor_set_tag(x_11, 7);
-lean_ctor_set(x_11, 1, x_65);
-lean_ctor_set(x_11, 0, x_48);
-x_66 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_66, 0, x_11);
-lean_ctor_set(x_66, 1, x_63);
-x_67 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_52, x_66, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_60);
-x_68 = lean_ctor_get(x_67, 0);
-lean_inc(x_68);
-x_69 = lean_ctor_get(x_67, 1);
-lean_inc(x_69);
-lean_dec(x_67);
-x_70 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___lambda__1(x_1, x_50, x_68, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_69);
-lean_dec(x_68);
-return x_70;
+return x_21;
 }
 else
 {
-lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; 
-x_71 = lean_ctor_get(x_53, 1);
-lean_inc(x_71);
-lean_dec(x_53);
-lean_inc(x_1);
-x_72 = l_Lean_MessageData_ofExpr(x_1);
-x_73 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-x_74 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_74, 0, x_73);
-lean_ctor_set(x_74, 1, x_72);
-x_75 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__6;
-lean_ctor_set_tag(x_48, 7);
-lean_ctor_set(x_48, 1, x_75);
-lean_ctor_set(x_48, 0, x_74);
-lean_inc(x_50);
-x_76 = l_Lean_MessageData_ofExpr(x_50);
-lean_ctor_set_tag(x_11, 7);
-lean_ctor_set(x_11, 1, x_76);
-lean_ctor_set(x_11, 0, x_48);
-x_77 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_77, 0, x_11);
-lean_ctor_set(x_77, 1, x_73);
-x_78 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_52, x_77, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_71);
-x_79 = lean_ctor_get(x_78, 0);
-lean_inc(x_79);
-x_80 = lean_ctor_get(x_78, 1);
-lean_inc(x_80);
-lean_dec(x_78);
-x_81 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___lambda__1(x_1, x_50, x_79, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_80);
-lean_dec(x_79);
-return x_81;
+lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_34 = lean_ctor_get(x_21, 0);
+x_35 = lean_ctor_get(x_21, 1);
+lean_inc(x_35);
+lean_inc(x_34);
+lean_dec(x_21);
+x_36 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_36, 0, x_34);
+lean_ctor_set(x_36, 1, x_35);
+return x_36;
 }
 }
 }
 else
 {
-lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; uint8_t x_86; 
-x_82 = lean_ctor_get(x_48, 0);
-lean_inc(x_82);
-lean_dec(x_48);
-x_83 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__3;
-x_84 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_83, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_14);
-x_85 = lean_ctor_get(x_84, 0);
-lean_inc(x_85);
-x_86 = lean_unbox(x_85);
-lean_dec(x_85);
-if (x_86 == 0)
+uint8_t x_37; 
+lean_dec(x_8);
+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_37 = !lean_is_exclusive(x_14);
+if (x_37 == 0)
 {
-lean_object* x_87; lean_object* x_88; lean_object* x_89; 
-lean_free_object(x_11);
-x_87 = lean_ctor_get(x_84, 1);
-lean_inc(x_87);
-lean_dec(x_84);
-x_88 = lean_box(0);
-x_89 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___lambda__1(x_1, x_82, x_88, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_87);
-return x_89;
+lean_object* x_38; lean_object* x_39; 
+x_38 = lean_ctor_get(x_14, 0);
+lean_dec(x_38);
+x_39 = lean_box(0);
+lean_ctor_set(x_14, 0, x_39);
+return x_14;
 }
 else
 {
-lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; 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_object* x_101; lean_object* x_102; 
-x_90 = lean_ctor_get(x_84, 1);
-lean_inc(x_90);
-if (lean_is_exclusive(x_84)) {
- lean_ctor_release(x_84, 0);
- lean_ctor_release(x_84, 1);
- x_91 = x_84;
-} else {
- lean_dec_ref(x_84);
- x_91 = lean_box(0);
-}
-lean_inc(x_1);
-x_92 = l_Lean_MessageData_ofExpr(x_1);
-x_93 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-if (lean_is_scalar(x_91)) {
- x_94 = lean_alloc_ctor(7, 2, 0);
-} else {
- x_94 = x_91;
- lean_ctor_set_tag(x_94, 7);
-}
-lean_ctor_set(x_94, 0, x_93);
-lean_ctor_set(x_94, 1, x_92);
-x_95 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__6;
-x_96 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_96, 0, x_94);
-lean_ctor_set(x_96, 1, x_95);
-lean_inc(x_82);
-x_97 = l_Lean_MessageData_ofExpr(x_82);
-lean_ctor_set_tag(x_11, 7);
-lean_ctor_set(x_11, 1, x_97);
-lean_ctor_set(x_11, 0, x_96);
-x_98 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_98, 0, x_11);
-lean_ctor_set(x_98, 1, x_93);
-x_99 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_83, x_98, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_90);
-x_100 = lean_ctor_get(x_99, 0);
-lean_inc(x_100);
-x_101 = lean_ctor_get(x_99, 1);
-lean_inc(x_101);
-lean_dec(x_99);
-x_102 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___lambda__1(x_1, x_82, x_100, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_101);
-lean_dec(x_100);
-return x_102;
+lean_object* x_40; lean_object* x_41; lean_object* x_42; 
+x_40 = lean_ctor_get(x_14, 1);
+lean_inc(x_40);
+lean_dec(x_14);
+x_41 = lean_box(0);
+x_42 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_42, 0, x_41);
+lean_ctor_set(x_42, 1, x_40);
+return x_42;
 }
 }
 }
 }
-else
-{
-lean_object* x_103; lean_object* x_104; lean_object* x_105; lean_object* x_106; 
-x_103 = lean_ctor_get(x_11, 0);
-x_104 = lean_ctor_get(x_11, 1);
-lean_inc(x_104);
-lean_inc(x_103);
-lean_dec(x_11);
-x_105 = lean_ctor_get(x_103, 3);
-lean_inc(x_105);
-lean_inc(x_1);
-x_106 = l_Lean_PersistentHashMap_findEntry_x3f___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__1(x_103, x_105, x_1);
-if (lean_obj_tag(x_106) == 0)
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__1() {
+_start:
 {
-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_object* x_113; lean_object* x_114; uint8_t x_115; lean_object* x_116; 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_object* x_123; lean_object* x_124; lean_object* x_125; 
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-x_107 = lean_st_ref_take(x_2, x_104);
-x_108 = lean_ctor_get(x_107, 0);
-lean_inc(x_108);
-x_109 = lean_ctor_get(x_107, 1);
-lean_inc(x_109);
-lean_dec(x_107);
-x_110 = lean_ctor_get(x_108, 0);
-lean_inc(x_110);
-x_111 = lean_ctor_get(x_108, 1);
-lean_inc(x_111);
-x_112 = lean_ctor_get(x_108, 2);
-lean_inc(x_112);
-x_113 = lean_ctor_get(x_108, 3);
-lean_inc(x_113);
-x_114 = lean_ctor_get(x_108, 4);
-lean_inc(x_114);
-x_115 = lean_ctor_get_uint8(x_108, sizeof(void*)*7);
-x_116 = lean_ctor_get(x_108, 5);
-lean_inc(x_116);
-x_117 = lean_ctor_get(x_108, 6);
-lean_inc(x_117);
-x_118 = lean_box(0);
-lean_inc(x_108);
-x_119 = l_Lean_PersistentHashMap_insert___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__4(x_108, x_113, x_1, x_118);
-if (lean_is_exclusive(x_108)) {
- lean_ctor_release(x_108, 0);
- lean_ctor_release(x_108, 1);
- lean_ctor_release(x_108, 2);
- lean_ctor_release(x_108, 3);
- lean_ctor_release(x_108, 4);
- lean_ctor_release(x_108, 5);
- lean_ctor_release(x_108, 6);
- x_120 = x_108;
-} else {
- lean_dec_ref(x_108);
- x_120 = lean_box(0);
-}
-if (lean_is_scalar(x_120)) {
- x_121 = lean_alloc_ctor(0, 7, 1);
-} else {
- x_121 = x_120;
-}
-lean_ctor_set(x_121, 0, x_110);
-lean_ctor_set(x_121, 1, x_111);
-lean_ctor_set(x_121, 2, x_112);
-lean_ctor_set(x_121, 3, x_119);
-lean_ctor_set(x_121, 4, x_114);
-lean_ctor_set(x_121, 5, x_116);
-lean_ctor_set(x_121, 6, x_117);
-lean_ctor_set_uint8(x_121, sizeof(void*)*7, x_115);
-x_122 = lean_st_ref_set(x_2, x_121, x_109);
-x_123 = lean_ctor_get(x_122, 1);
-lean_inc(x_123);
-if (lean_is_exclusive(x_122)) {
- lean_ctor_release(x_122, 0);
- lean_ctor_release(x_122, 1);
- x_124 = x_122;
-} else {
- lean_dec_ref(x_122);
- x_124 = lean_box(0);
-}
-if (lean_is_scalar(x_124)) {
- x_125 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_125 = x_124;
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("eq_false_of_decide", 18, 18);
+return x_1;
 }
-lean_ctor_set(x_125, 0, x_118);
-lean_ctor_set(x_125, 1, x_123);
-return x_125;
 }
-else
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__2() {
+_start:
 {
-lean_object* x_126; lean_object* x_127; lean_object* x_128; lean_object* x_129; lean_object* x_130; lean_object* x_131; uint8_t x_132; 
-x_126 = lean_ctor_get(x_106, 0);
-lean_inc(x_126);
-lean_dec(x_106);
-x_127 = lean_ctor_get(x_126, 0);
-lean_inc(x_127);
-if (lean_is_exclusive(x_126)) {
- lean_ctor_release(x_126, 0);
- lean_ctor_release(x_126, 1);
- x_128 = x_126;
-} else {
- lean_dec_ref(x_126);
- x_128 = lean_box(0);
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
 }
-x_129 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__3;
-x_130 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_129, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_104);
-x_131 = lean_ctor_get(x_130, 0);
-lean_inc(x_131);
-x_132 = lean_unbox(x_131);
-lean_dec(x_131);
-if (x_132 == 0)
-{
-lean_object* x_133; lean_object* x_134; lean_object* x_135; 
-lean_dec(x_128);
-x_133 = lean_ctor_get(x_130, 1);
-lean_inc(x_133);
-lean_dec(x_130);
-x_134 = lean_box(0);
-x_135 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___lambda__1(x_1, x_127, x_134, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_133);
-return x_135;
 }
-else
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__3() {
+_start:
 {
-lean_object* x_136; lean_object* x_137; lean_object* x_138; lean_object* x_139; lean_object* x_140; lean_object* x_141; lean_object* x_142; lean_object* x_143; lean_object* x_144; lean_object* x_145; lean_object* x_146; lean_object* x_147; lean_object* x_148; lean_object* x_149; 
-x_136 = lean_ctor_get(x_130, 1);
-lean_inc(x_136);
-if (lean_is_exclusive(x_130)) {
- lean_ctor_release(x_130, 0);
- lean_ctor_release(x_130, 1);
- x_137 = x_130;
-} else {
- lean_dec_ref(x_130);
- x_137 = lean_box(0);
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__2;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
 }
-lean_inc(x_1);
-x_138 = l_Lean_MessageData_ofExpr(x_1);
-x_139 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-if (lean_is_scalar(x_137)) {
- x_140 = lean_alloc_ctor(7, 2, 0);
-} else {
- x_140 = x_137;
- lean_ctor_set_tag(x_140, 7);
-}
-lean_ctor_set(x_140, 0, x_139);
-lean_ctor_set(x_140, 1, x_138);
-x_141 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__6;
-if (lean_is_scalar(x_128)) {
- x_142 = lean_alloc_ctor(7, 2, 0);
-} else {
- x_142 = x_128;
- lean_ctor_set_tag(x_142, 7);
-}
-lean_ctor_set(x_142, 0, x_140);
-lean_ctor_set(x_142, 1, x_141);
-lean_inc(x_127);
-x_143 = l_Lean_MessageData_ofExpr(x_127);
-x_144 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_144, 0, x_142);
-lean_ctor_set(x_144, 1, x_143);
-x_145 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_145, 0, x_144);
-lean_ctor_set(x_145, 1, x_139);
-x_146 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_129, x_145, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_136);
-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_149 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___lambda__1(x_1, x_127, x_147, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_148);
-lean_dec(x_147);
-return x_149;
 }
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Eq", 2, 2);
+return x_1;
 }
 }
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__5() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("refl", 4, 4);
+return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAtAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__3___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) {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__6() {
 _start:
 {
-lean_object* x_7; 
-x_7 = l_Lean_PersistentHashMap_findEntryAtAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__3(x_1, x_2, x_3, x_4, x_5, x_6);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_7;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__4;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__5;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__7() {
 _start:
 {
-size_t x_5; lean_object* x_6; 
-x_5 = lean_unbox_usize(x_3);
-lean_dec(x_3);
-x_6 = l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2(x_1, x_2, x_5, x_4);
-return x_6;
+lean_object* x_1; lean_object* x_2; 
+x_1 = lean_unsigned_to_nat(1u);
+x_2 = l_Lean_Level_ofNat(x_1);
+return x_2;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__6___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) {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__8() {
 _start:
 {
-size_t x_8; lean_object* x_9; 
-x_8 = lean_unbox_usize(x_2);
-lean_dec(x_2);
-x_9 = l_Lean_PersistentHashMap_insertAux_traverse___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__6(x_1, x_8, x_3, x_4, x_5, x_6, x_7);
-lean_dec(x_4);
-lean_dec(x_3);
-return x_9;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__7;
+x_3 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_3, 0, x_2);
+lean_ctor_set(x_3, 1, x_1);
+return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5___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) {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__9() {
 _start:
 {
-size_t x_7; size_t x_8; lean_object* x_9; 
-x_7 = lean_unbox_usize(x_3);
-lean_dec(x_3);
-x_8 = lean_unbox_usize(x_4);
-lean_dec(x_4);
-x_9 = l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5(x_1, x_2, x_7, x_8, x_5, x_6);
-return x_9;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__6;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__8;
+x_3 = l_Lean_Expr_const___override(x_1, x_2);
+return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8___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, lean_object* x_10) {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__10() {
 _start:
 {
-lean_object* x_11; 
-x_11 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_11;
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Bool", 4, 4);
+return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___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, lean_object* x_10, lean_object* x_11) {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__11() {
 _start:
 {
-lean_object* x_12; 
-x_12 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-return x_12;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__10;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__12() {
 _start:
 {
-lean_object* x_13; 
-x_13 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-return x_13;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__11;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___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, lean_object* x_10) {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__13() {
 _start:
 {
-lean_object* x_11; 
-x_11 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_11;
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("false", 5, 5);
+return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at_Lean_Meta_Grind_internalize___spec__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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18) {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__14() {
 _start:
 {
-lean_object* x_19; uint8_t x_20; 
-x_19 = lean_ctor_get(x_5, 1);
-x_20 = lean_nat_dec_lt(x_7, x_19);
-if (x_20 == 0)
-{
-lean_object* x_21; 
-lean_dec(x_17);
-lean_dec(x_16);
-lean_dec(x_15);
-lean_dec(x_14);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_7);
-lean_dec(x_2);
-lean_dec(x_1);
-x_21 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_21, 0, x_6);
-lean_ctor_set(x_21, 1, x_18);
-return x_21;
-}
-else
-{
-lean_object* x_22; lean_object* x_23; 
-lean_dec(x_6);
-x_22 = lean_array_fget(x_3, x_7);
-lean_inc(x_17);
-lean_inc(x_16);
-lean_inc(x_15);
-lean_inc(x_14);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_2);
-lean_inc(x_22);
-x_23 = l_Lean_Meta_Grind_internalize(x_22, x_2, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18);
-if (lean_obj_tag(x_23) == 0)
-{
-lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; 
-x_24 = lean_ctor_get(x_23, 1);
-lean_inc(x_24);
-lean_dec(x_23);
-lean_inc(x_1);
-x_25 = l_Lean_Meta_Grind_registerParent(x_1, x_22, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_24);
-lean_dec(x_22);
-x_26 = lean_ctor_get(x_25, 1);
-lean_inc(x_26);
-lean_dec(x_25);
-x_27 = lean_ctor_get(x_5, 2);
-x_28 = lean_nat_add(x_7, x_27);
-lean_dec(x_7);
-x_29 = lean_box(0);
-x_6 = x_29;
-x_7 = x_28;
-x_8 = lean_box(0);
-x_9 = lean_box(0);
-x_18 = x_26;
-goto _start;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__10;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__13;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
 }
-else
-{
-uint8_t x_31; 
-lean_dec(x_22);
-lean_dec(x_17);
-lean_dec(x_16);
-lean_dec(x_15);
-lean_dec(x_14);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_7);
-lean_dec(x_2);
-lean_dec(x_1);
-x_31 = !lean_is_exclusive(x_23);
-if (x_31 == 0)
-{
-return x_23;
 }
-else
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__15() {
+_start:
 {
-lean_object* x_32; lean_object* x_33; lean_object* x_34; 
-x_32 = lean_ctor_get(x_23, 0);
-x_33 = lean_ctor_get(x_23, 1);
-lean_inc(x_33);
-lean_inc(x_32);
-lean_dec(x_23);
-x_34 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_34, 0, x_32);
-lean_ctor_set(x_34, 1, x_33);
-return x_34;
-}
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__14;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
 }
 }
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__16() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__9;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__12;
+x_3 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__15;
+x_4 = l_Lean_mkAppB(x_1, x_2, x_3);
+return x_4;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___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, lean_object* x_11, lean_object* x_12) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq(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, lean_object* x_11) {
 _start:
 {
-lean_object* x_13; 
-lean_inc(x_11);
+lean_object* x_12; 
 lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_2);
 lean_inc(x_1);
-x_13 = l_Lean_Meta_Grind_mkENode(x_1, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-if (lean_obj_tag(x_13) == 0)
+x_12 = l_Lean_Meta_mkEq(x_1, x_2, x_7, x_8, x_9, x_10, x_11);
+if (lean_obj_tag(x_12) == 0)
 {
-lean_object* x_14; lean_object* x_15; 
-x_14 = lean_ctor_get(x_13, 1);
+lean_object* x_13; lean_object* x_14; lean_object* x_15; 
+x_13 = lean_ctor_get(x_12, 0);
+lean_inc(x_13);
+x_14 = lean_ctor_get(x_12, 1);
 lean_inc(x_14);
-lean_dec(x_13);
-x_15 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable(x_1, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_14);
-return x_15;
-}
-else
-{
-uint8_t x_16; 
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_1);
-x_16 = !lean_is_exclusive(x_13);
-if (x_16 == 0)
-{
-return x_13;
-}
-else
+lean_dec(x_12);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_15 = lean_grind_mk_eq_proof(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_14);
+if (lean_obj_tag(x_15) == 0)
 {
-lean_object* x_17; lean_object* x_18; lean_object* x_19; 
-x_17 = lean_ctor_get(x_13, 0);
-x_18 = lean_ctor_get(x_13, 1);
-lean_inc(x_18);
+lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+x_16 = lean_ctor_get(x_15, 0);
+lean_inc(x_16);
+x_17 = lean_ctor_get(x_15, 1);
 lean_inc(x_17);
-lean_dec(x_13);
-x_19 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_19, 0, x_17);
-lean_ctor_set(x_19, 1, x_18);
-return x_19;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
-_start:
-{
-lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; 
-x_15 = lean_array_get_size(x_1);
-x_16 = lean_unsigned_to_nat(0u);
-x_17 = lean_unsigned_to_nat(1u);
-x_18 = lean_alloc_ctor(0, 3, 0);
-lean_ctor_set(x_18, 0, x_16);
-lean_ctor_set(x_18, 1, x_15);
-lean_ctor_set(x_18, 2, x_17);
-x_19 = lean_box(0);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
+lean_dec(x_15);
 lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
-lean_inc(x_6);
-x_20 = l_Std_Range_forIn_x27_loop___at_Lean_Meta_Grind_internalize___spec__1(x_2, x_3, x_1, x_18, x_18, x_19, x_16, lean_box(0), lean_box(0), x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_inc(x_13);
+x_18 = l_Lean_Meta_mkDecide(x_13, x_7, x_8, x_9, x_10, x_17);
+if (lean_obj_tag(x_18) == 0)
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+x_19 = lean_ctor_get(x_18, 0);
+lean_inc(x_19);
+x_20 = lean_ctor_get(x_18, 1);
+lean_inc(x_20);
 lean_dec(x_18);
-if (lean_obj_tag(x_20) == 0)
+x_21 = l_Lean_Expr_appArg_x21(x_19);
+lean_dec(x_19);
+x_22 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__3;
+x_23 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__16;
+x_24 = l_Lean_mkApp3(x_22, x_13, x_21, x_23);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+x_25 = l_Lean_Meta_mkEqMP(x_24, x_16, x_7, x_8, x_9, x_10, x_20);
+if (lean_obj_tag(x_25) == 0)
 {
-lean_object* x_21; lean_object* x_22; 
-x_21 = lean_ctor_get(x_20, 1);
-lean_inc(x_21);
-lean_dec(x_20);
-x_22 = lean_apply_10(x_4, x_19, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_21);
-return x_22;
+lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_26 = lean_ctor_get(x_25, 0);
+lean_inc(x_26);
+x_27 = lean_ctor_get(x_25, 1);
+lean_inc(x_27);
+lean_dec(x_25);
+x_28 = l_Lean_Meta_Grind_closeGoal(x_26, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_27);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_28;
 }
 else
 {
-uint8_t x_23; 
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
+uint8_t x_29; 
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-lean_dec(x_4);
-x_23 = !lean_is_exclusive(x_20);
-if (x_23 == 0)
-{
-return x_20;
-}
-else
-{
-lean_object* x_24; lean_object* x_25; lean_object* x_26; 
-x_24 = lean_ctor_get(x_20, 0);
-x_25 = lean_ctor_get(x_20, 1);
-lean_inc(x_25);
-lean_inc(x_24);
-lean_dec(x_20);
-x_26 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_26, 0, x_24);
-lean_ctor_set(x_26, 1, x_25);
-return x_26;
-}
-}
-}
-}
-static lean_object* _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Lean", 4, 4);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__2() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Grind", 5, 5);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__3() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("nestedProof", 11, 11);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__1;
-x_2 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__2;
-x_3 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__3;
-x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
-return x_4;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
-_start:
-{
-switch (lean_obj_tag(x_3)) {
-case 0:
-{
-lean_object* x_15; lean_object* x_16; lean_object* x_31; uint8_t x_32; 
 lean_dec(x_5);
-lean_inc(x_2);
-lean_inc(x_1);
-x_15 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1___boxed), 12, 2);
-lean_closure_set(x_15, 0, x_1);
-lean_closure_set(x_15, 1, x_2);
-x_31 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4;
-x_32 = l_Lean_Expr_isConstOf(x_3, x_31);
-if (x_32 == 0)
-{
-lean_object* x_33; 
-x_33 = lean_box(0);
-x_16 = x_33;
-goto block_30;
-}
-else
-{
-lean_object* x_34; lean_object* x_35; uint8_t x_36; 
-x_34 = lean_array_get_size(x_4);
-x_35 = lean_unsigned_to_nat(2u);
-x_36 = lean_nat_dec_eq(x_34, x_35);
-if (x_36 == 0)
-{
-lean_object* x_37; 
-lean_dec(x_34);
-x_37 = lean_box(0);
-x_16 = x_37;
-goto block_30;
-}
-else
-{
-lean_object* x_38; uint8_t x_39; 
-lean_dec(x_15);
-lean_dec(x_3);
-x_38 = lean_unsigned_to_nat(0u);
-x_39 = lean_nat_dec_lt(x_38, x_34);
-lean_dec(x_34);
-if (x_39 == 0)
-{
-lean_object* x_40; lean_object* x_41; lean_object* x_42; 
-lean_dec(x_4);
-x_40 = l_Lean_instInhabitedExpr;
-x_41 = l_outOfBounds___rarg(x_40);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_41);
-x_42 = l_Lean_Meta_Grind_internalize(x_41, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_42) == 0)
-{
-lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; 
-x_43 = lean_ctor_get(x_42, 1);
-lean_inc(x_43);
-lean_dec(x_42);
-lean_inc(x_1);
-x_44 = l_Lean_Meta_Grind_registerParent(x_1, x_41, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_43);
-lean_dec(x_41);
-x_45 = lean_ctor_get(x_44, 0);
-lean_inc(x_45);
-x_46 = lean_ctor_get(x_44, 1);
-lean_inc(x_46);
-lean_dec(x_44);
-x_47 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_45, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_46);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_45);
-return x_47;
-}
-else
-{
-uint8_t x_48; 
-lean_dec(x_41);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_48 = !lean_is_exclusive(x_42);
-if (x_48 == 0)
-{
-return x_42;
-}
-else
-{
-lean_object* x_49; lean_object* x_50; lean_object* x_51; 
-x_49 = lean_ctor_get(x_42, 0);
-x_50 = lean_ctor_get(x_42, 1);
-lean_inc(x_50);
-lean_inc(x_49);
-lean_dec(x_42);
-x_51 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_51, 0, x_49);
-lean_ctor_set(x_51, 1, x_50);
-return x_51;
-}
-}
-}
-else
-{
-lean_object* x_52; lean_object* x_53; 
-x_52 = lean_array_fget(x_4, x_38);
-lean_dec(x_4);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_52);
-x_53 = l_Lean_Meta_Grind_internalize(x_52, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_53) == 0)
-{
-lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; 
-x_54 = lean_ctor_get(x_53, 1);
-lean_inc(x_54);
-lean_dec(x_53);
-lean_inc(x_1);
-x_55 = l_Lean_Meta_Grind_registerParent(x_1, x_52, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_54);
-lean_dec(x_52);
-x_56 = lean_ctor_get(x_55, 0);
-lean_inc(x_56);
-x_57 = lean_ctor_get(x_55, 1);
-lean_inc(x_57);
-lean_dec(x_55);
-x_58 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_56, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_57);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_56);
-return x_58;
-}
-else
-{
-uint8_t x_59; 
-lean_dec(x_52);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_59 = !lean_is_exclusive(x_53);
-if (x_59 == 0)
-{
-return x_53;
-}
-else
-{
-lean_object* x_60; lean_object* x_61; lean_object* x_62; 
-x_60 = lean_ctor_get(x_53, 0);
-x_61 = lean_ctor_get(x_53, 1);
-lean_inc(x_61);
-lean_inc(x_60);
-lean_dec(x_53);
-x_62 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_62, 0, x_60);
-lean_ctor_set(x_62, 1, x_61);
-return x_62;
-}
-}
-}
-}
-}
-block_30:
-{
-uint8_t x_17; 
-lean_dec(x_16);
-x_17 = l_Lean_Expr_isConst(x_3);
-if (x_17 == 0)
-{
-lean_object* x_18; 
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_3);
-x_18 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_18) == 0)
-{
-lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; 
-x_19 = lean_ctor_get(x_18, 1);
-lean_inc(x_19);
-lean_dec(x_18);
-lean_inc(x_1);
-x_20 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_19);
-lean_dec(x_3);
-x_21 = lean_ctor_get(x_20, 0);
-lean_inc(x_21);
-x_22 = lean_ctor_get(x_20, 1);
-lean_inc(x_22);
-lean_dec(x_20);
-x_23 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_15, x_21, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_22);
-lean_dec(x_21);
-lean_dec(x_4);
-return x_23;
-}
-else
-{
-uint8_t x_24; 
-lean_dec(x_15);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_24 = !lean_is_exclusive(x_18);
-if (x_24 == 0)
-{
-return x_18;
-}
-else
-{
-lean_object* x_25; lean_object* x_26; lean_object* x_27; 
-x_25 = lean_ctor_get(x_18, 0);
-x_26 = lean_ctor_get(x_18, 1);
-lean_inc(x_26);
-lean_inc(x_25);
-lean_dec(x_18);
-x_27 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_27, 0, x_25);
-lean_ctor_set(x_27, 1, x_26);
-return x_27;
-}
-}
-}
-else
-{
-lean_object* x_28; lean_object* x_29; 
-lean_dec(x_3);
-x_28 = lean_box(0);
-x_29 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_15, x_28, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_4);
-return x_29;
-}
-}
-}
-case 1:
-{
-lean_object* x_63; lean_object* x_64; lean_object* x_79; uint8_t x_80; 
-lean_dec(x_5);
-lean_inc(x_2);
-lean_inc(x_1);
-x_63 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1___boxed), 12, 2);
-lean_closure_set(x_63, 0, x_1);
-lean_closure_set(x_63, 1, x_2);
-x_79 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4;
-x_80 = l_Lean_Expr_isConstOf(x_3, x_79);
-if (x_80 == 0)
-{
-lean_object* x_81; 
-x_81 = lean_box(0);
-x_64 = x_81;
-goto block_78;
-}
-else
-{
-lean_object* x_82; lean_object* x_83; uint8_t x_84; 
-x_82 = lean_array_get_size(x_4);
-x_83 = lean_unsigned_to_nat(2u);
-x_84 = lean_nat_dec_eq(x_82, x_83);
-if (x_84 == 0)
-{
-lean_object* x_85; 
-lean_dec(x_82);
-x_85 = lean_box(0);
-x_64 = x_85;
-goto block_78;
-}
-else
-{
-lean_object* x_86; uint8_t x_87; 
-lean_dec(x_63);
-lean_dec(x_3);
-x_86 = lean_unsigned_to_nat(0u);
-x_87 = lean_nat_dec_lt(x_86, x_82);
-lean_dec(x_82);
-if (x_87 == 0)
-{
-lean_object* x_88; lean_object* x_89; lean_object* x_90; 
-lean_dec(x_4);
-x_88 = l_Lean_instInhabitedExpr;
-x_89 = l_outOfBounds___rarg(x_88);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_89);
-x_90 = l_Lean_Meta_Grind_internalize(x_89, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_90) == 0)
-{
-lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; lean_object* x_95; 
-x_91 = lean_ctor_get(x_90, 1);
-lean_inc(x_91);
-lean_dec(x_90);
-lean_inc(x_1);
-x_92 = l_Lean_Meta_Grind_registerParent(x_1, x_89, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_91);
-lean_dec(x_89);
-x_93 = lean_ctor_get(x_92, 0);
-lean_inc(x_93);
-x_94 = lean_ctor_get(x_92, 1);
-lean_inc(x_94);
-lean_dec(x_92);
-x_95 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_93, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_94);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_93);
-return x_95;
-}
-else
-{
-uint8_t x_96; 
-lean_dec(x_89);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_96 = !lean_is_exclusive(x_90);
-if (x_96 == 0)
-{
-return x_90;
-}
-else
-{
-lean_object* x_97; lean_object* x_98; lean_object* x_99; 
-x_97 = lean_ctor_get(x_90, 0);
-x_98 = lean_ctor_get(x_90, 1);
-lean_inc(x_98);
-lean_inc(x_97);
-lean_dec(x_90);
-x_99 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_99, 0, x_97);
-lean_ctor_set(x_99, 1, x_98);
-return x_99;
-}
-}
-}
-else
-{
-lean_object* x_100; lean_object* x_101; 
-x_100 = lean_array_fget(x_4, x_86);
-lean_dec(x_4);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_100);
-x_101 = l_Lean_Meta_Grind_internalize(x_100, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_101) == 0)
-{
-lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; lean_object* x_106; 
-x_102 = lean_ctor_get(x_101, 1);
-lean_inc(x_102);
-lean_dec(x_101);
-lean_inc(x_1);
-x_103 = l_Lean_Meta_Grind_registerParent(x_1, x_100, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_102);
-lean_dec(x_100);
-x_104 = lean_ctor_get(x_103, 0);
-lean_inc(x_104);
-x_105 = lean_ctor_get(x_103, 1);
-lean_inc(x_105);
-lean_dec(x_103);
-x_106 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_104, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_105);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_104);
-return x_106;
-}
-else
-{
-uint8_t x_107; 
-lean_dec(x_100);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_107 = !lean_is_exclusive(x_101);
-if (x_107 == 0)
-{
-return x_101;
-}
-else
-{
-lean_object* x_108; lean_object* x_109; lean_object* x_110; 
-x_108 = lean_ctor_get(x_101, 0);
-x_109 = lean_ctor_get(x_101, 1);
-lean_inc(x_109);
-lean_inc(x_108);
-lean_dec(x_101);
-x_110 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_110, 0, x_108);
-lean_ctor_set(x_110, 1, x_109);
-return x_110;
-}
-}
-}
-}
-}
-block_78:
-{
-uint8_t x_65; 
-lean_dec(x_64);
-x_65 = l_Lean_Expr_isConst(x_3);
-if (x_65 == 0)
-{
-lean_object* x_66; 
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_3);
-x_66 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_66) == 0)
-{
-lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; 
-x_67 = lean_ctor_get(x_66, 1);
-lean_inc(x_67);
-lean_dec(x_66);
-lean_inc(x_1);
-x_68 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_67);
-lean_dec(x_3);
-x_69 = lean_ctor_get(x_68, 0);
-lean_inc(x_69);
-x_70 = lean_ctor_get(x_68, 1);
-lean_inc(x_70);
-lean_dec(x_68);
-x_71 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_63, x_69, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_70);
-lean_dec(x_69);
-lean_dec(x_4);
-return x_71;
-}
-else
-{
-uint8_t x_72; 
-lean_dec(x_63);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_72 = !lean_is_exclusive(x_66);
-if (x_72 == 0)
-{
-return x_66;
-}
-else
-{
-lean_object* x_73; lean_object* x_74; lean_object* x_75; 
-x_73 = lean_ctor_get(x_66, 0);
-x_74 = lean_ctor_get(x_66, 1);
-lean_inc(x_74);
-lean_inc(x_73);
-lean_dec(x_66);
-x_75 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_75, 0, x_73);
-lean_ctor_set(x_75, 1, x_74);
-return x_75;
-}
-}
-}
-else
-{
-lean_object* x_76; lean_object* x_77; 
-lean_dec(x_3);
-x_76 = lean_box(0);
-x_77 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_63, x_76, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_4);
-return x_77;
-}
-}
-}
-case 2:
-{
-lean_object* x_111; lean_object* x_112; lean_object* x_127; uint8_t x_128; 
-lean_dec(x_5);
-lean_inc(x_2);
-lean_inc(x_1);
-x_111 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1___boxed), 12, 2);
-lean_closure_set(x_111, 0, x_1);
-lean_closure_set(x_111, 1, x_2);
-x_127 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4;
-x_128 = l_Lean_Expr_isConstOf(x_3, x_127);
-if (x_128 == 0)
-{
-lean_object* x_129; 
-x_129 = lean_box(0);
-x_112 = x_129;
-goto block_126;
-}
-else
-{
-lean_object* x_130; lean_object* x_131; uint8_t x_132; 
-x_130 = lean_array_get_size(x_4);
-x_131 = lean_unsigned_to_nat(2u);
-x_132 = lean_nat_dec_eq(x_130, x_131);
-if (x_132 == 0)
-{
-lean_object* x_133; 
-lean_dec(x_130);
-x_133 = lean_box(0);
-x_112 = x_133;
-goto block_126;
-}
-else
-{
-lean_object* x_134; uint8_t x_135; 
-lean_dec(x_111);
-lean_dec(x_3);
-x_134 = lean_unsigned_to_nat(0u);
-x_135 = lean_nat_dec_lt(x_134, x_130);
-lean_dec(x_130);
-if (x_135 == 0)
-{
-lean_object* x_136; lean_object* x_137; lean_object* x_138; 
-lean_dec(x_4);
-x_136 = l_Lean_instInhabitedExpr;
-x_137 = l_outOfBounds___rarg(x_136);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_137);
-x_138 = l_Lean_Meta_Grind_internalize(x_137, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_138) == 0)
-{
-lean_object* x_139; lean_object* x_140; lean_object* x_141; lean_object* x_142; lean_object* x_143; 
-x_139 = lean_ctor_get(x_138, 1);
-lean_inc(x_139);
-lean_dec(x_138);
-lean_inc(x_1);
-x_140 = l_Lean_Meta_Grind_registerParent(x_1, x_137, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_139);
-lean_dec(x_137);
-x_141 = lean_ctor_get(x_140, 0);
-lean_inc(x_141);
-x_142 = lean_ctor_get(x_140, 1);
-lean_inc(x_142);
-lean_dec(x_140);
-x_143 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_141, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_142);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_141);
-return x_143;
-}
-else
-{
-uint8_t x_144; 
-lean_dec(x_137);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_144 = !lean_is_exclusive(x_138);
-if (x_144 == 0)
-{
-return x_138;
-}
-else
-{
-lean_object* x_145; lean_object* x_146; lean_object* x_147; 
-x_145 = lean_ctor_get(x_138, 0);
-x_146 = lean_ctor_get(x_138, 1);
-lean_inc(x_146);
-lean_inc(x_145);
-lean_dec(x_138);
-x_147 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_147, 0, x_145);
-lean_ctor_set(x_147, 1, x_146);
-return x_147;
-}
-}
-}
-else
-{
-lean_object* x_148; lean_object* x_149; 
-x_148 = lean_array_fget(x_4, x_134);
-lean_dec(x_4);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_148);
-x_149 = l_Lean_Meta_Grind_internalize(x_148, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_149) == 0)
-{
-lean_object* x_150; lean_object* x_151; lean_object* x_152; lean_object* x_153; lean_object* x_154; 
-x_150 = lean_ctor_get(x_149, 1);
-lean_inc(x_150);
-lean_dec(x_149);
-lean_inc(x_1);
-x_151 = l_Lean_Meta_Grind_registerParent(x_1, x_148, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_150);
-lean_dec(x_148);
-x_152 = lean_ctor_get(x_151, 0);
-lean_inc(x_152);
-x_153 = lean_ctor_get(x_151, 1);
-lean_inc(x_153);
-lean_dec(x_151);
-x_154 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_152, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_153);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_152);
-return x_154;
-}
-else
-{
-uint8_t x_155; 
-lean_dec(x_148);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_155 = !lean_is_exclusive(x_149);
-if (x_155 == 0)
-{
-return x_149;
-}
-else
-{
-lean_object* x_156; lean_object* x_157; lean_object* x_158; 
-x_156 = lean_ctor_get(x_149, 0);
-x_157 = lean_ctor_get(x_149, 1);
-lean_inc(x_157);
-lean_inc(x_156);
-lean_dec(x_149);
-x_158 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_158, 0, x_156);
-lean_ctor_set(x_158, 1, x_157);
-return x_158;
-}
-}
-}
-}
-}
-block_126:
-{
-uint8_t x_113; 
-lean_dec(x_112);
-x_113 = l_Lean_Expr_isConst(x_3);
-if (x_113 == 0)
-{
-lean_object* x_114; 
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_3);
-x_114 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_114) == 0)
-{
-lean_object* x_115; lean_object* x_116; lean_object* x_117; lean_object* x_118; lean_object* x_119; 
-x_115 = lean_ctor_get(x_114, 1);
-lean_inc(x_115);
-lean_dec(x_114);
-lean_inc(x_1);
-x_116 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_115);
-lean_dec(x_3);
-x_117 = lean_ctor_get(x_116, 0);
-lean_inc(x_117);
-x_118 = lean_ctor_get(x_116, 1);
-lean_inc(x_118);
-lean_dec(x_116);
-x_119 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_111, x_117, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_118);
-lean_dec(x_117);
-lean_dec(x_4);
-return x_119;
-}
-else
-{
-uint8_t x_120; 
-lean_dec(x_111);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_120 = !lean_is_exclusive(x_114);
-if (x_120 == 0)
-{
-return x_114;
-}
-else
-{
-lean_object* x_121; lean_object* x_122; lean_object* x_123; 
-x_121 = lean_ctor_get(x_114, 0);
-x_122 = lean_ctor_get(x_114, 1);
-lean_inc(x_122);
-lean_inc(x_121);
-lean_dec(x_114);
-x_123 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_123, 0, x_121);
-lean_ctor_set(x_123, 1, x_122);
-return x_123;
-}
-}
-}
-else
-{
-lean_object* x_124; lean_object* x_125; 
-lean_dec(x_3);
-x_124 = lean_box(0);
-x_125 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_111, x_124, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_4);
-return x_125;
-}
-}
-}
-case 3:
-{
-lean_object* x_159; lean_object* x_160; lean_object* x_175; uint8_t x_176; 
-lean_dec(x_5);
-lean_inc(x_2);
-lean_inc(x_1);
-x_159 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1___boxed), 12, 2);
-lean_closure_set(x_159, 0, x_1);
-lean_closure_set(x_159, 1, x_2);
-x_175 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4;
-x_176 = l_Lean_Expr_isConstOf(x_3, x_175);
-if (x_176 == 0)
-{
-lean_object* x_177; 
-x_177 = lean_box(0);
-x_160 = x_177;
-goto block_174;
-}
-else
-{
-lean_object* x_178; lean_object* x_179; uint8_t x_180; 
-x_178 = lean_array_get_size(x_4);
-x_179 = lean_unsigned_to_nat(2u);
-x_180 = lean_nat_dec_eq(x_178, x_179);
-if (x_180 == 0)
-{
-lean_object* x_181; 
-lean_dec(x_178);
-x_181 = lean_box(0);
-x_160 = x_181;
-goto block_174;
-}
-else
-{
-lean_object* x_182; uint8_t x_183; 
-lean_dec(x_159);
-lean_dec(x_3);
-x_182 = lean_unsigned_to_nat(0u);
-x_183 = lean_nat_dec_lt(x_182, x_178);
-lean_dec(x_178);
-if (x_183 == 0)
-{
-lean_object* x_184; lean_object* x_185; lean_object* x_186; 
-lean_dec(x_4);
-x_184 = l_Lean_instInhabitedExpr;
-x_185 = l_outOfBounds___rarg(x_184);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_185);
-x_186 = l_Lean_Meta_Grind_internalize(x_185, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_186) == 0)
-{
-lean_object* x_187; lean_object* x_188; lean_object* x_189; lean_object* x_190; lean_object* x_191; 
-x_187 = lean_ctor_get(x_186, 1);
-lean_inc(x_187);
-lean_dec(x_186);
-lean_inc(x_1);
-x_188 = l_Lean_Meta_Grind_registerParent(x_1, x_185, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_187);
-lean_dec(x_185);
-x_189 = lean_ctor_get(x_188, 0);
-lean_inc(x_189);
-x_190 = lean_ctor_get(x_188, 1);
-lean_inc(x_190);
-lean_dec(x_188);
-x_191 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_189, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_190);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_189);
-return x_191;
-}
-else
-{
-uint8_t x_192; 
-lean_dec(x_185);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_192 = !lean_is_exclusive(x_186);
-if (x_192 == 0)
-{
-return x_186;
-}
-else
-{
-lean_object* x_193; lean_object* x_194; lean_object* x_195; 
-x_193 = lean_ctor_get(x_186, 0);
-x_194 = lean_ctor_get(x_186, 1);
-lean_inc(x_194);
-lean_inc(x_193);
-lean_dec(x_186);
-x_195 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_195, 0, x_193);
-lean_ctor_set(x_195, 1, x_194);
-return x_195;
-}
-}
-}
-else
-{
-lean_object* x_196; lean_object* x_197; 
-x_196 = lean_array_fget(x_4, x_182);
-lean_dec(x_4);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_196);
-x_197 = l_Lean_Meta_Grind_internalize(x_196, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_197) == 0)
-{
-lean_object* x_198; lean_object* x_199; lean_object* x_200; lean_object* x_201; lean_object* x_202; 
-x_198 = lean_ctor_get(x_197, 1);
-lean_inc(x_198);
-lean_dec(x_197);
-lean_inc(x_1);
-x_199 = l_Lean_Meta_Grind_registerParent(x_1, x_196, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_198);
-lean_dec(x_196);
-x_200 = lean_ctor_get(x_199, 0);
-lean_inc(x_200);
-x_201 = lean_ctor_get(x_199, 1);
-lean_inc(x_201);
-lean_dec(x_199);
-x_202 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_200, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_201);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_200);
-return x_202;
-}
-else
-{
-uint8_t x_203; 
-lean_dec(x_196);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_203 = !lean_is_exclusive(x_197);
-if (x_203 == 0)
-{
-return x_197;
-}
-else
-{
-lean_object* x_204; lean_object* x_205; lean_object* x_206; 
-x_204 = lean_ctor_get(x_197, 0);
-x_205 = lean_ctor_get(x_197, 1);
-lean_inc(x_205);
-lean_inc(x_204);
-lean_dec(x_197);
-x_206 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_206, 0, x_204);
-lean_ctor_set(x_206, 1, x_205);
-return x_206;
-}
-}
-}
-}
-}
-block_174:
-{
-uint8_t x_161; 
-lean_dec(x_160);
-x_161 = l_Lean_Expr_isConst(x_3);
-if (x_161 == 0)
-{
-lean_object* x_162; 
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_3);
-x_162 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_162) == 0)
-{
-lean_object* x_163; lean_object* x_164; lean_object* x_165; lean_object* x_166; lean_object* x_167; 
-x_163 = lean_ctor_get(x_162, 1);
-lean_inc(x_163);
-lean_dec(x_162);
-lean_inc(x_1);
-x_164 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_163);
-lean_dec(x_3);
-x_165 = lean_ctor_get(x_164, 0);
-lean_inc(x_165);
-x_166 = lean_ctor_get(x_164, 1);
-lean_inc(x_166);
-lean_dec(x_164);
-x_167 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_159, x_165, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_166);
-lean_dec(x_165);
-lean_dec(x_4);
-return x_167;
-}
-else
-{
-uint8_t x_168; 
-lean_dec(x_159);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_168 = !lean_is_exclusive(x_162);
-if (x_168 == 0)
-{
-return x_162;
-}
-else
-{
-lean_object* x_169; lean_object* x_170; lean_object* x_171; 
-x_169 = lean_ctor_get(x_162, 0);
-x_170 = lean_ctor_get(x_162, 1);
-lean_inc(x_170);
-lean_inc(x_169);
-lean_dec(x_162);
-x_171 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_171, 0, x_169);
-lean_ctor_set(x_171, 1, x_170);
-return x_171;
-}
-}
-}
-else
-{
-lean_object* x_172; lean_object* x_173; 
-lean_dec(x_3);
-x_172 = lean_box(0);
-x_173 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_159, x_172, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_4);
-return x_173;
-}
-}
-}
-case 4:
-{
-lean_object* x_207; lean_object* x_208; lean_object* x_223; uint8_t x_224; 
-lean_dec(x_5);
-lean_inc(x_2);
-lean_inc(x_1);
-x_207 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1___boxed), 12, 2);
-lean_closure_set(x_207, 0, x_1);
-lean_closure_set(x_207, 1, x_2);
-x_223 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4;
-x_224 = l_Lean_Expr_isConstOf(x_3, x_223);
-if (x_224 == 0)
-{
-lean_object* x_225; 
-x_225 = lean_box(0);
-x_208 = x_225;
-goto block_222;
-}
-else
-{
-lean_object* x_226; lean_object* x_227; uint8_t x_228; 
-x_226 = lean_array_get_size(x_4);
-x_227 = lean_unsigned_to_nat(2u);
-x_228 = lean_nat_dec_eq(x_226, x_227);
-if (x_228 == 0)
-{
-lean_object* x_229; 
-lean_dec(x_226);
-x_229 = lean_box(0);
-x_208 = x_229;
-goto block_222;
-}
-else
-{
-lean_object* x_230; uint8_t x_231; 
-lean_dec(x_207);
-lean_dec(x_3);
-x_230 = lean_unsigned_to_nat(0u);
-x_231 = lean_nat_dec_lt(x_230, x_226);
-lean_dec(x_226);
-if (x_231 == 0)
-{
-lean_object* x_232; lean_object* x_233; lean_object* x_234; 
-lean_dec(x_4);
-x_232 = l_Lean_instInhabitedExpr;
-x_233 = l_outOfBounds___rarg(x_232);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_233);
-x_234 = l_Lean_Meta_Grind_internalize(x_233, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_234) == 0)
-{
-lean_object* x_235; lean_object* x_236; lean_object* x_237; lean_object* x_238; lean_object* x_239; 
-x_235 = lean_ctor_get(x_234, 1);
-lean_inc(x_235);
-lean_dec(x_234);
-lean_inc(x_1);
-x_236 = l_Lean_Meta_Grind_registerParent(x_1, x_233, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_235);
-lean_dec(x_233);
-x_237 = lean_ctor_get(x_236, 0);
-lean_inc(x_237);
-x_238 = lean_ctor_get(x_236, 1);
-lean_inc(x_238);
-lean_dec(x_236);
-x_239 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_237, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_238);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_237);
-return x_239;
-}
-else
-{
-uint8_t x_240; 
-lean_dec(x_233);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_240 = !lean_is_exclusive(x_234);
-if (x_240 == 0)
-{
-return x_234;
-}
-else
-{
-lean_object* x_241; lean_object* x_242; lean_object* x_243; 
-x_241 = lean_ctor_get(x_234, 0);
-x_242 = lean_ctor_get(x_234, 1);
-lean_inc(x_242);
-lean_inc(x_241);
-lean_dec(x_234);
-x_243 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_243, 0, x_241);
-lean_ctor_set(x_243, 1, x_242);
-return x_243;
-}
-}
-}
-else
-{
-lean_object* x_244; lean_object* x_245; 
-x_244 = lean_array_fget(x_4, x_230);
-lean_dec(x_4);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_244);
-x_245 = l_Lean_Meta_Grind_internalize(x_244, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_245) == 0)
-{
-lean_object* x_246; lean_object* x_247; lean_object* x_248; lean_object* x_249; lean_object* x_250; 
-x_246 = lean_ctor_get(x_245, 1);
-lean_inc(x_246);
-lean_dec(x_245);
-lean_inc(x_1);
-x_247 = l_Lean_Meta_Grind_registerParent(x_1, x_244, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_246);
-lean_dec(x_244);
-x_248 = lean_ctor_get(x_247, 0);
-lean_inc(x_248);
-x_249 = lean_ctor_get(x_247, 1);
-lean_inc(x_249);
-lean_dec(x_247);
-x_250 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_248, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_249);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_248);
-return x_250;
-}
-else
-{
-uint8_t x_251; 
-lean_dec(x_244);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_251 = !lean_is_exclusive(x_245);
-if (x_251 == 0)
-{
-return x_245;
-}
-else
-{
-lean_object* x_252; lean_object* x_253; lean_object* x_254; 
-x_252 = lean_ctor_get(x_245, 0);
-x_253 = lean_ctor_get(x_245, 1);
-lean_inc(x_253);
-lean_inc(x_252);
-lean_dec(x_245);
-x_254 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_254, 0, x_252);
-lean_ctor_set(x_254, 1, x_253);
-return x_254;
-}
-}
-}
-}
-}
-block_222:
-{
-uint8_t x_209; 
-lean_dec(x_208);
-x_209 = l_Lean_Expr_isConst(x_3);
-if (x_209 == 0)
-{
-lean_object* x_210; 
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_3);
-x_210 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_210) == 0)
-{
-lean_object* x_211; lean_object* x_212; lean_object* x_213; lean_object* x_214; lean_object* x_215; 
-x_211 = lean_ctor_get(x_210, 1);
-lean_inc(x_211);
-lean_dec(x_210);
-lean_inc(x_1);
-x_212 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_211);
-lean_dec(x_3);
-x_213 = lean_ctor_get(x_212, 0);
-lean_inc(x_213);
-x_214 = lean_ctor_get(x_212, 1);
-lean_inc(x_214);
-lean_dec(x_212);
-x_215 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_207, x_213, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_214);
-lean_dec(x_213);
-lean_dec(x_4);
-return x_215;
-}
-else
-{
-uint8_t x_216; 
-lean_dec(x_207);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_216 = !lean_is_exclusive(x_210);
-if (x_216 == 0)
-{
-return x_210;
-}
-else
-{
-lean_object* x_217; lean_object* x_218; lean_object* x_219; 
-x_217 = lean_ctor_get(x_210, 0);
-x_218 = lean_ctor_get(x_210, 1);
-lean_inc(x_218);
-lean_inc(x_217);
-lean_dec(x_210);
-x_219 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_219, 0, x_217);
-lean_ctor_set(x_219, 1, x_218);
-return x_219;
-}
-}
-}
-else
-{
-lean_object* x_220; lean_object* x_221; 
-lean_dec(x_3);
-x_220 = lean_box(0);
-x_221 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_207, x_220, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_4);
-return x_221;
-}
-}
-}
-case 5:
-{
-lean_object* x_255; lean_object* x_256; lean_object* x_257; lean_object* x_258; lean_object* x_259; 
-x_255 = lean_ctor_get(x_3, 0);
-lean_inc(x_255);
-x_256 = lean_ctor_get(x_3, 1);
-lean_inc(x_256);
-lean_dec(x_3);
-x_257 = lean_array_set(x_4, x_5, x_256);
-x_258 = lean_unsigned_to_nat(1u);
-x_259 = lean_nat_sub(x_5, x_258);
-lean_dec(x_5);
-x_3 = x_255;
-x_4 = x_257;
-x_5 = x_259;
-goto _start;
-}
-case 6:
-{
-lean_object* x_261; lean_object* x_262; lean_object* x_277; uint8_t x_278; 
-lean_dec(x_5);
-lean_inc(x_2);
-lean_inc(x_1);
-x_261 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1___boxed), 12, 2);
-lean_closure_set(x_261, 0, x_1);
-lean_closure_set(x_261, 1, x_2);
-x_277 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4;
-x_278 = l_Lean_Expr_isConstOf(x_3, x_277);
-if (x_278 == 0)
-{
-lean_object* x_279; 
-x_279 = lean_box(0);
-x_262 = x_279;
-goto block_276;
-}
-else
-{
-lean_object* x_280; lean_object* x_281; uint8_t x_282; 
-x_280 = lean_array_get_size(x_4);
-x_281 = lean_unsigned_to_nat(2u);
-x_282 = lean_nat_dec_eq(x_280, x_281);
-if (x_282 == 0)
-{
-lean_object* x_283; 
-lean_dec(x_280);
-x_283 = lean_box(0);
-x_262 = x_283;
-goto block_276;
-}
-else
-{
-lean_object* x_284; uint8_t x_285; 
-lean_dec(x_261);
-lean_dec(x_3);
-x_284 = lean_unsigned_to_nat(0u);
-x_285 = lean_nat_dec_lt(x_284, x_280);
-lean_dec(x_280);
-if (x_285 == 0)
-{
-lean_object* x_286; lean_object* x_287; lean_object* x_288; 
-lean_dec(x_4);
-x_286 = l_Lean_instInhabitedExpr;
-x_287 = l_outOfBounds___rarg(x_286);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_287);
-x_288 = l_Lean_Meta_Grind_internalize(x_287, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_288) == 0)
-{
-lean_object* x_289; lean_object* x_290; lean_object* x_291; lean_object* x_292; lean_object* x_293; 
-x_289 = lean_ctor_get(x_288, 1);
-lean_inc(x_289);
-lean_dec(x_288);
-lean_inc(x_1);
-x_290 = l_Lean_Meta_Grind_registerParent(x_1, x_287, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_289);
-lean_dec(x_287);
-x_291 = lean_ctor_get(x_290, 0);
-lean_inc(x_291);
-x_292 = lean_ctor_get(x_290, 1);
-lean_inc(x_292);
-lean_dec(x_290);
-x_293 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_291, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_292);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_291);
-return x_293;
-}
-else
-{
-uint8_t x_294; 
-lean_dec(x_287);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_294 = !lean_is_exclusive(x_288);
-if (x_294 == 0)
-{
-return x_288;
-}
-else
-{
-lean_object* x_295; lean_object* x_296; lean_object* x_297; 
-x_295 = lean_ctor_get(x_288, 0);
-x_296 = lean_ctor_get(x_288, 1);
-lean_inc(x_296);
-lean_inc(x_295);
-lean_dec(x_288);
-x_297 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_297, 0, x_295);
-lean_ctor_set(x_297, 1, x_296);
-return x_297;
-}
-}
-}
-else
-{
-lean_object* x_298; lean_object* x_299; 
-x_298 = lean_array_fget(x_4, x_284);
-lean_dec(x_4);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_298);
-x_299 = l_Lean_Meta_Grind_internalize(x_298, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_299) == 0)
-{
-lean_object* x_300; lean_object* x_301; lean_object* x_302; lean_object* x_303; lean_object* x_304; 
-x_300 = lean_ctor_get(x_299, 1);
-lean_inc(x_300);
-lean_dec(x_299);
-lean_inc(x_1);
-x_301 = l_Lean_Meta_Grind_registerParent(x_1, x_298, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_300);
-lean_dec(x_298);
-x_302 = lean_ctor_get(x_301, 0);
-lean_inc(x_302);
-x_303 = lean_ctor_get(x_301, 1);
-lean_inc(x_303);
-lean_dec(x_301);
-x_304 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_302, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_303);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_302);
-return x_304;
-}
-else
-{
-uint8_t x_305; 
-lean_dec(x_298);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_305 = !lean_is_exclusive(x_299);
-if (x_305 == 0)
-{
-return x_299;
-}
-else
-{
-lean_object* x_306; lean_object* x_307; lean_object* x_308; 
-x_306 = lean_ctor_get(x_299, 0);
-x_307 = lean_ctor_get(x_299, 1);
-lean_inc(x_307);
-lean_inc(x_306);
-lean_dec(x_299);
-x_308 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_308, 0, x_306);
-lean_ctor_set(x_308, 1, x_307);
-return x_308;
-}
-}
-}
-}
-}
-block_276:
-{
-uint8_t x_263; 
-lean_dec(x_262);
-x_263 = l_Lean_Expr_isConst(x_3);
-if (x_263 == 0)
-{
-lean_object* x_264; 
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_3);
-x_264 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_264) == 0)
-{
-lean_object* x_265; lean_object* x_266; lean_object* x_267; lean_object* x_268; lean_object* x_269; 
-x_265 = lean_ctor_get(x_264, 1);
-lean_inc(x_265);
-lean_dec(x_264);
-lean_inc(x_1);
-x_266 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_265);
-lean_dec(x_3);
-x_267 = lean_ctor_get(x_266, 0);
-lean_inc(x_267);
-x_268 = lean_ctor_get(x_266, 1);
-lean_inc(x_268);
-lean_dec(x_266);
-x_269 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_261, x_267, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_268);
-lean_dec(x_267);
-lean_dec(x_4);
-return x_269;
-}
-else
-{
-uint8_t x_270; 
-lean_dec(x_261);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_270 = !lean_is_exclusive(x_264);
-if (x_270 == 0)
-{
-return x_264;
-}
-else
-{
-lean_object* x_271; lean_object* x_272; lean_object* x_273; 
-x_271 = lean_ctor_get(x_264, 0);
-x_272 = lean_ctor_get(x_264, 1);
-lean_inc(x_272);
-lean_inc(x_271);
-lean_dec(x_264);
-x_273 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_273, 0, x_271);
-lean_ctor_set(x_273, 1, x_272);
-return x_273;
-}
-}
-}
-else
-{
-lean_object* x_274; lean_object* x_275; 
-lean_dec(x_3);
-x_274 = lean_box(0);
-x_275 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_261, x_274, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_4);
-return x_275;
-}
-}
-}
-case 7:
-{
-lean_object* x_309; lean_object* x_310; lean_object* x_325; uint8_t x_326; 
-lean_dec(x_5);
-lean_inc(x_2);
-lean_inc(x_1);
-x_309 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1___boxed), 12, 2);
-lean_closure_set(x_309, 0, x_1);
-lean_closure_set(x_309, 1, x_2);
-x_325 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4;
-x_326 = l_Lean_Expr_isConstOf(x_3, x_325);
-if (x_326 == 0)
-{
-lean_object* x_327; 
-x_327 = lean_box(0);
-x_310 = x_327;
-goto block_324;
-}
-else
-{
-lean_object* x_328; lean_object* x_329; uint8_t x_330; 
-x_328 = lean_array_get_size(x_4);
-x_329 = lean_unsigned_to_nat(2u);
-x_330 = lean_nat_dec_eq(x_328, x_329);
-if (x_330 == 0)
-{
-lean_object* x_331; 
-lean_dec(x_328);
-x_331 = lean_box(0);
-x_310 = x_331;
-goto block_324;
-}
-else
-{
-lean_object* x_332; uint8_t x_333; 
-lean_dec(x_309);
-lean_dec(x_3);
-x_332 = lean_unsigned_to_nat(0u);
-x_333 = lean_nat_dec_lt(x_332, x_328);
-lean_dec(x_328);
-if (x_333 == 0)
-{
-lean_object* x_334; lean_object* x_335; lean_object* x_336; 
-lean_dec(x_4);
-x_334 = l_Lean_instInhabitedExpr;
-x_335 = l_outOfBounds___rarg(x_334);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_335);
-x_336 = l_Lean_Meta_Grind_internalize(x_335, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_336) == 0)
-{
-lean_object* x_337; lean_object* x_338; lean_object* x_339; lean_object* x_340; lean_object* x_341; 
-x_337 = lean_ctor_get(x_336, 1);
-lean_inc(x_337);
-lean_dec(x_336);
-lean_inc(x_1);
-x_338 = l_Lean_Meta_Grind_registerParent(x_1, x_335, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_337);
-lean_dec(x_335);
-x_339 = lean_ctor_get(x_338, 0);
-lean_inc(x_339);
-x_340 = lean_ctor_get(x_338, 1);
-lean_inc(x_340);
-lean_dec(x_338);
-x_341 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_339, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_340);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_339);
-return x_341;
-}
-else
-{
-uint8_t x_342; 
-lean_dec(x_335);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_342 = !lean_is_exclusive(x_336);
-if (x_342 == 0)
-{
-return x_336;
-}
-else
-{
-lean_object* x_343; lean_object* x_344; lean_object* x_345; 
-x_343 = lean_ctor_get(x_336, 0);
-x_344 = lean_ctor_get(x_336, 1);
-lean_inc(x_344);
-lean_inc(x_343);
-lean_dec(x_336);
-x_345 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_345, 0, x_343);
-lean_ctor_set(x_345, 1, x_344);
-return x_345;
-}
-}
-}
-else
-{
-lean_object* x_346; lean_object* x_347; 
-x_346 = lean_array_fget(x_4, x_332);
-lean_dec(x_4);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_346);
-x_347 = l_Lean_Meta_Grind_internalize(x_346, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_347) == 0)
-{
-lean_object* x_348; lean_object* x_349; lean_object* x_350; lean_object* x_351; lean_object* x_352; 
-x_348 = lean_ctor_get(x_347, 1);
-lean_inc(x_348);
-lean_dec(x_347);
-lean_inc(x_1);
-x_349 = l_Lean_Meta_Grind_registerParent(x_1, x_346, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_348);
-lean_dec(x_346);
-x_350 = lean_ctor_get(x_349, 0);
-lean_inc(x_350);
-x_351 = lean_ctor_get(x_349, 1);
-lean_inc(x_351);
-lean_dec(x_349);
-x_352 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_350, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_351);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_350);
-return x_352;
-}
-else
-{
-uint8_t x_353; 
-lean_dec(x_346);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_353 = !lean_is_exclusive(x_347);
-if (x_353 == 0)
-{
-return x_347;
-}
-else
-{
-lean_object* x_354; lean_object* x_355; lean_object* x_356; 
-x_354 = lean_ctor_get(x_347, 0);
-x_355 = lean_ctor_get(x_347, 1);
-lean_inc(x_355);
-lean_inc(x_354);
-lean_dec(x_347);
-x_356 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_356, 0, x_354);
-lean_ctor_set(x_356, 1, x_355);
-return x_356;
-}
-}
-}
-}
-}
-block_324:
-{
-uint8_t x_311; 
-lean_dec(x_310);
-x_311 = l_Lean_Expr_isConst(x_3);
-if (x_311 == 0)
-{
-lean_object* x_312; 
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_3);
-x_312 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_312) == 0)
-{
-lean_object* x_313; lean_object* x_314; lean_object* x_315; lean_object* x_316; lean_object* x_317; 
-x_313 = lean_ctor_get(x_312, 1);
-lean_inc(x_313);
-lean_dec(x_312);
-lean_inc(x_1);
-x_314 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_313);
-lean_dec(x_3);
-x_315 = lean_ctor_get(x_314, 0);
-lean_inc(x_315);
-x_316 = lean_ctor_get(x_314, 1);
-lean_inc(x_316);
-lean_dec(x_314);
-x_317 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_309, x_315, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_316);
-lean_dec(x_315);
-lean_dec(x_4);
-return x_317;
-}
-else
-{
-uint8_t x_318; 
-lean_dec(x_309);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_318 = !lean_is_exclusive(x_312);
-if (x_318 == 0)
-{
-return x_312;
-}
-else
-{
-lean_object* x_319; lean_object* x_320; lean_object* x_321; 
-x_319 = lean_ctor_get(x_312, 0);
-x_320 = lean_ctor_get(x_312, 1);
-lean_inc(x_320);
-lean_inc(x_319);
-lean_dec(x_312);
-x_321 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_321, 0, x_319);
-lean_ctor_set(x_321, 1, x_320);
-return x_321;
-}
-}
-}
-else
-{
-lean_object* x_322; lean_object* x_323; 
-lean_dec(x_3);
-x_322 = lean_box(0);
-x_323 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_309, x_322, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_4);
-return x_323;
-}
-}
-}
-case 8:
-{
-lean_object* x_357; lean_object* x_358; lean_object* x_373; uint8_t x_374; 
-lean_dec(x_5);
-lean_inc(x_2);
-lean_inc(x_1);
-x_357 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1___boxed), 12, 2);
-lean_closure_set(x_357, 0, x_1);
-lean_closure_set(x_357, 1, x_2);
-x_373 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4;
-x_374 = l_Lean_Expr_isConstOf(x_3, x_373);
-if (x_374 == 0)
-{
-lean_object* x_375; 
-x_375 = lean_box(0);
-x_358 = x_375;
-goto block_372;
-}
-else
-{
-lean_object* x_376; lean_object* x_377; uint8_t x_378; 
-x_376 = lean_array_get_size(x_4);
-x_377 = lean_unsigned_to_nat(2u);
-x_378 = lean_nat_dec_eq(x_376, x_377);
-if (x_378 == 0)
-{
-lean_object* x_379; 
-lean_dec(x_376);
-x_379 = lean_box(0);
-x_358 = x_379;
-goto block_372;
-}
-else
-{
-lean_object* x_380; uint8_t x_381; 
-lean_dec(x_357);
-lean_dec(x_3);
-x_380 = lean_unsigned_to_nat(0u);
-x_381 = lean_nat_dec_lt(x_380, x_376);
-lean_dec(x_376);
-if (x_381 == 0)
-{
-lean_object* x_382; lean_object* x_383; lean_object* x_384; 
-lean_dec(x_4);
-x_382 = l_Lean_instInhabitedExpr;
-x_383 = l_outOfBounds___rarg(x_382);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_383);
-x_384 = l_Lean_Meta_Grind_internalize(x_383, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_384) == 0)
-{
-lean_object* x_385; lean_object* x_386; lean_object* x_387; lean_object* x_388; lean_object* x_389; 
-x_385 = lean_ctor_get(x_384, 1);
-lean_inc(x_385);
-lean_dec(x_384);
-lean_inc(x_1);
-x_386 = l_Lean_Meta_Grind_registerParent(x_1, x_383, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_385);
-lean_dec(x_383);
-x_387 = lean_ctor_get(x_386, 0);
-lean_inc(x_387);
-x_388 = lean_ctor_get(x_386, 1);
-lean_inc(x_388);
-lean_dec(x_386);
-x_389 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_387, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_388);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_387);
-return x_389;
-}
-else
-{
-uint8_t x_390; 
-lean_dec(x_383);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_390 = !lean_is_exclusive(x_384);
-if (x_390 == 0)
-{
-return x_384;
-}
-else
-{
-lean_object* x_391; lean_object* x_392; lean_object* x_393; 
-x_391 = lean_ctor_get(x_384, 0);
-x_392 = lean_ctor_get(x_384, 1);
-lean_inc(x_392);
-lean_inc(x_391);
-lean_dec(x_384);
-x_393 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_393, 0, x_391);
-lean_ctor_set(x_393, 1, x_392);
-return x_393;
-}
-}
-}
-else
-{
-lean_object* x_394; lean_object* x_395; 
-x_394 = lean_array_fget(x_4, x_380);
-lean_dec(x_4);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_394);
-x_395 = l_Lean_Meta_Grind_internalize(x_394, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_395) == 0)
-{
-lean_object* x_396; lean_object* x_397; lean_object* x_398; lean_object* x_399; lean_object* x_400; 
-x_396 = lean_ctor_get(x_395, 1);
-lean_inc(x_396);
-lean_dec(x_395);
-lean_inc(x_1);
-x_397 = l_Lean_Meta_Grind_registerParent(x_1, x_394, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_396);
-lean_dec(x_394);
-x_398 = lean_ctor_get(x_397, 0);
-lean_inc(x_398);
-x_399 = lean_ctor_get(x_397, 1);
-lean_inc(x_399);
-lean_dec(x_397);
-x_400 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_398, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_399);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_398);
-return x_400;
-}
-else
-{
-uint8_t x_401; 
-lean_dec(x_394);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_401 = !lean_is_exclusive(x_395);
-if (x_401 == 0)
-{
-return x_395;
-}
-else
-{
-lean_object* x_402; lean_object* x_403; lean_object* x_404; 
-x_402 = lean_ctor_get(x_395, 0);
-x_403 = lean_ctor_get(x_395, 1);
-lean_inc(x_403);
-lean_inc(x_402);
-lean_dec(x_395);
-x_404 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_404, 0, x_402);
-lean_ctor_set(x_404, 1, x_403);
-return x_404;
-}
-}
-}
-}
-}
-block_372:
-{
-uint8_t x_359; 
-lean_dec(x_358);
-x_359 = l_Lean_Expr_isConst(x_3);
-if (x_359 == 0)
-{
-lean_object* x_360; 
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_3);
-x_360 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_360) == 0)
-{
-lean_object* x_361; lean_object* x_362; lean_object* x_363; lean_object* x_364; lean_object* x_365; 
-x_361 = lean_ctor_get(x_360, 1);
-lean_inc(x_361);
-lean_dec(x_360);
-lean_inc(x_1);
-x_362 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_361);
-lean_dec(x_3);
-x_363 = lean_ctor_get(x_362, 0);
-lean_inc(x_363);
-x_364 = lean_ctor_get(x_362, 1);
-lean_inc(x_364);
-lean_dec(x_362);
-x_365 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_357, x_363, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_364);
-lean_dec(x_363);
-lean_dec(x_4);
-return x_365;
-}
-else
-{
-uint8_t x_366; 
-lean_dec(x_357);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_366 = !lean_is_exclusive(x_360);
-if (x_366 == 0)
-{
-return x_360;
-}
-else
-{
-lean_object* x_367; lean_object* x_368; lean_object* x_369; 
-x_367 = lean_ctor_get(x_360, 0);
-x_368 = lean_ctor_get(x_360, 1);
-lean_inc(x_368);
-lean_inc(x_367);
-lean_dec(x_360);
-x_369 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_369, 0, x_367);
-lean_ctor_set(x_369, 1, x_368);
-return x_369;
-}
-}
-}
-else
-{
-lean_object* x_370; lean_object* x_371; 
-lean_dec(x_3);
-x_370 = lean_box(0);
-x_371 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_357, x_370, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_4);
-return x_371;
-}
-}
-}
-case 9:
-{
-lean_object* x_405; lean_object* x_406; lean_object* x_421; uint8_t x_422; 
-lean_dec(x_5);
-lean_inc(x_2);
-lean_inc(x_1);
-x_405 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1___boxed), 12, 2);
-lean_closure_set(x_405, 0, x_1);
-lean_closure_set(x_405, 1, x_2);
-x_421 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4;
-x_422 = l_Lean_Expr_isConstOf(x_3, x_421);
-if (x_422 == 0)
-{
-lean_object* x_423; 
-x_423 = lean_box(0);
-x_406 = x_423;
-goto block_420;
-}
-else
-{
-lean_object* x_424; lean_object* x_425; uint8_t x_426; 
-x_424 = lean_array_get_size(x_4);
-x_425 = lean_unsigned_to_nat(2u);
-x_426 = lean_nat_dec_eq(x_424, x_425);
-if (x_426 == 0)
-{
-lean_object* x_427; 
-lean_dec(x_424);
-x_427 = lean_box(0);
-x_406 = x_427;
-goto block_420;
-}
-else
-{
-lean_object* x_428; uint8_t x_429; 
-lean_dec(x_405);
-lean_dec(x_3);
-x_428 = lean_unsigned_to_nat(0u);
-x_429 = lean_nat_dec_lt(x_428, x_424);
-lean_dec(x_424);
-if (x_429 == 0)
-{
-lean_object* x_430; lean_object* x_431; lean_object* x_432; 
-lean_dec(x_4);
-x_430 = l_Lean_instInhabitedExpr;
-x_431 = l_outOfBounds___rarg(x_430);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_431);
-x_432 = l_Lean_Meta_Grind_internalize(x_431, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_432) == 0)
-{
-lean_object* x_433; lean_object* x_434; lean_object* x_435; lean_object* x_436; lean_object* x_437; 
-x_433 = lean_ctor_get(x_432, 1);
-lean_inc(x_433);
-lean_dec(x_432);
-lean_inc(x_1);
-x_434 = l_Lean_Meta_Grind_registerParent(x_1, x_431, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_433);
-lean_dec(x_431);
-x_435 = lean_ctor_get(x_434, 0);
-lean_inc(x_435);
-x_436 = lean_ctor_get(x_434, 1);
-lean_inc(x_436);
-lean_dec(x_434);
-x_437 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_435, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_436);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_435);
-return x_437;
-}
-else
-{
-uint8_t x_438; 
-lean_dec(x_431);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_438 = !lean_is_exclusive(x_432);
-if (x_438 == 0)
-{
-return x_432;
-}
-else
-{
-lean_object* x_439; lean_object* x_440; lean_object* x_441; 
-x_439 = lean_ctor_get(x_432, 0);
-x_440 = lean_ctor_get(x_432, 1);
-lean_inc(x_440);
-lean_inc(x_439);
-lean_dec(x_432);
-x_441 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_441, 0, x_439);
-lean_ctor_set(x_441, 1, x_440);
-return x_441;
-}
-}
-}
-else
-{
-lean_object* x_442; lean_object* x_443; 
-x_442 = lean_array_fget(x_4, x_428);
-lean_dec(x_4);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_442);
-x_443 = l_Lean_Meta_Grind_internalize(x_442, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_443) == 0)
-{
-lean_object* x_444; lean_object* x_445; lean_object* x_446; lean_object* x_447; lean_object* x_448; 
-x_444 = lean_ctor_get(x_443, 1);
-lean_inc(x_444);
-lean_dec(x_443);
-lean_inc(x_1);
-x_445 = l_Lean_Meta_Grind_registerParent(x_1, x_442, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_444);
-lean_dec(x_442);
-x_446 = lean_ctor_get(x_445, 0);
-lean_inc(x_446);
-x_447 = lean_ctor_get(x_445, 1);
-lean_inc(x_447);
-lean_dec(x_445);
-x_448 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_446, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_447);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_446);
-return x_448;
-}
-else
-{
-uint8_t x_449; 
-lean_dec(x_442);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_449 = !lean_is_exclusive(x_443);
-if (x_449 == 0)
-{
-return x_443;
-}
-else
-{
-lean_object* x_450; lean_object* x_451; lean_object* x_452; 
-x_450 = lean_ctor_get(x_443, 0);
-x_451 = lean_ctor_get(x_443, 1);
-lean_inc(x_451);
-lean_inc(x_450);
-lean_dec(x_443);
-x_452 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_452, 0, x_450);
-lean_ctor_set(x_452, 1, x_451);
-return x_452;
-}
-}
-}
-}
-}
-block_420:
-{
-uint8_t x_407; 
-lean_dec(x_406);
-x_407 = l_Lean_Expr_isConst(x_3);
-if (x_407 == 0)
-{
-lean_object* x_408; 
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_3);
-x_408 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_408) == 0)
-{
-lean_object* x_409; lean_object* x_410; lean_object* x_411; lean_object* x_412; lean_object* x_413; 
-x_409 = lean_ctor_get(x_408, 1);
-lean_inc(x_409);
-lean_dec(x_408);
-lean_inc(x_1);
-x_410 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_409);
-lean_dec(x_3);
-x_411 = lean_ctor_get(x_410, 0);
-lean_inc(x_411);
-x_412 = lean_ctor_get(x_410, 1);
-lean_inc(x_412);
-lean_dec(x_410);
-x_413 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_405, x_411, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_412);
-lean_dec(x_411);
-lean_dec(x_4);
-return x_413;
-}
-else
-{
-uint8_t x_414; 
-lean_dec(x_405);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_414 = !lean_is_exclusive(x_408);
-if (x_414 == 0)
-{
-return x_408;
-}
-else
-{
-lean_object* x_415; lean_object* x_416; lean_object* x_417; 
-x_415 = lean_ctor_get(x_408, 0);
-x_416 = lean_ctor_get(x_408, 1);
-lean_inc(x_416);
-lean_inc(x_415);
-lean_dec(x_408);
-x_417 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_417, 0, x_415);
-lean_ctor_set(x_417, 1, x_416);
-return x_417;
-}
-}
-}
-else
-{
-lean_object* x_418; lean_object* x_419; 
-lean_dec(x_3);
-x_418 = lean_box(0);
-x_419 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_405, x_418, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_4);
-return x_419;
-}
-}
-}
-case 10:
-{
-lean_object* x_453; lean_object* x_454; lean_object* x_469; uint8_t x_470; 
-lean_dec(x_5);
-lean_inc(x_2);
-lean_inc(x_1);
-x_453 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1___boxed), 12, 2);
-lean_closure_set(x_453, 0, x_1);
-lean_closure_set(x_453, 1, x_2);
-x_469 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4;
-x_470 = l_Lean_Expr_isConstOf(x_3, x_469);
-if (x_470 == 0)
-{
-lean_object* x_471; 
-x_471 = lean_box(0);
-x_454 = x_471;
-goto block_468;
-}
-else
-{
-lean_object* x_472; lean_object* x_473; uint8_t x_474; 
-x_472 = lean_array_get_size(x_4);
-x_473 = lean_unsigned_to_nat(2u);
-x_474 = lean_nat_dec_eq(x_472, x_473);
-if (x_474 == 0)
-{
-lean_object* x_475; 
-lean_dec(x_472);
-x_475 = lean_box(0);
-x_454 = x_475;
-goto block_468;
-}
-else
-{
-lean_object* x_476; uint8_t x_477; 
-lean_dec(x_453);
-lean_dec(x_3);
-x_476 = lean_unsigned_to_nat(0u);
-x_477 = lean_nat_dec_lt(x_476, x_472);
-lean_dec(x_472);
-if (x_477 == 0)
-{
-lean_object* x_478; lean_object* x_479; lean_object* x_480; 
-lean_dec(x_4);
-x_478 = l_Lean_instInhabitedExpr;
-x_479 = l_outOfBounds___rarg(x_478);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_479);
-x_480 = l_Lean_Meta_Grind_internalize(x_479, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_480) == 0)
-{
-lean_object* x_481; lean_object* x_482; lean_object* x_483; lean_object* x_484; lean_object* x_485; 
-x_481 = lean_ctor_get(x_480, 1);
-lean_inc(x_481);
-lean_dec(x_480);
-lean_inc(x_1);
-x_482 = l_Lean_Meta_Grind_registerParent(x_1, x_479, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_481);
-lean_dec(x_479);
-x_483 = lean_ctor_get(x_482, 0);
-lean_inc(x_483);
-x_484 = lean_ctor_get(x_482, 1);
-lean_inc(x_484);
-lean_dec(x_482);
-x_485 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_483, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_484);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_483);
-return x_485;
-}
-else
-{
-uint8_t x_486; 
-lean_dec(x_479);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_486 = !lean_is_exclusive(x_480);
-if (x_486 == 0)
-{
-return x_480;
-}
-else
-{
-lean_object* x_487; lean_object* x_488; lean_object* x_489; 
-x_487 = lean_ctor_get(x_480, 0);
-x_488 = lean_ctor_get(x_480, 1);
-lean_inc(x_488);
-lean_inc(x_487);
-lean_dec(x_480);
-x_489 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_489, 0, x_487);
-lean_ctor_set(x_489, 1, x_488);
-return x_489;
-}
-}
-}
-else
-{
-lean_object* x_490; lean_object* x_491; 
-x_490 = lean_array_fget(x_4, x_476);
-lean_dec(x_4);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_490);
-x_491 = l_Lean_Meta_Grind_internalize(x_490, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_491) == 0)
-{
-lean_object* x_492; lean_object* x_493; lean_object* x_494; lean_object* x_495; lean_object* x_496; 
-x_492 = lean_ctor_get(x_491, 1);
-lean_inc(x_492);
-lean_dec(x_491);
-lean_inc(x_1);
-x_493 = l_Lean_Meta_Grind_registerParent(x_1, x_490, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_492);
-lean_dec(x_490);
-x_494 = lean_ctor_get(x_493, 0);
-lean_inc(x_494);
-x_495 = lean_ctor_get(x_493, 1);
-lean_inc(x_495);
-lean_dec(x_493);
-x_496 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_494, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_495);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_494);
-return x_496;
-}
-else
-{
-uint8_t x_497; 
-lean_dec(x_490);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_497 = !lean_is_exclusive(x_491);
-if (x_497 == 0)
-{
-return x_491;
-}
-else
-{
-lean_object* x_498; lean_object* x_499; lean_object* x_500; 
-x_498 = lean_ctor_get(x_491, 0);
-x_499 = lean_ctor_get(x_491, 1);
-lean_inc(x_499);
-lean_inc(x_498);
-lean_dec(x_491);
-x_500 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_500, 0, x_498);
-lean_ctor_set(x_500, 1, x_499);
-return x_500;
-}
-}
-}
-}
-}
-block_468:
-{
-uint8_t x_455; 
-lean_dec(x_454);
-x_455 = l_Lean_Expr_isConst(x_3);
-if (x_455 == 0)
-{
-lean_object* x_456; 
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_3);
-x_456 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_456) == 0)
-{
-lean_object* x_457; lean_object* x_458; lean_object* x_459; lean_object* x_460; lean_object* x_461; 
-x_457 = lean_ctor_get(x_456, 1);
-lean_inc(x_457);
-lean_dec(x_456);
-lean_inc(x_1);
-x_458 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_457);
-lean_dec(x_3);
-x_459 = lean_ctor_get(x_458, 0);
-lean_inc(x_459);
-x_460 = lean_ctor_get(x_458, 1);
-lean_inc(x_460);
-lean_dec(x_458);
-x_461 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_453, x_459, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_460);
-lean_dec(x_459);
-lean_dec(x_4);
-return x_461;
-}
-else
-{
-uint8_t x_462; 
-lean_dec(x_453);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_462 = !lean_is_exclusive(x_456);
-if (x_462 == 0)
-{
-return x_456;
-}
-else
-{
-lean_object* x_463; lean_object* x_464; lean_object* x_465; 
-x_463 = lean_ctor_get(x_456, 0);
-x_464 = lean_ctor_get(x_456, 1);
-lean_inc(x_464);
-lean_inc(x_463);
-lean_dec(x_456);
-x_465 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_465, 0, x_463);
-lean_ctor_set(x_465, 1, x_464);
-return x_465;
-}
-}
-}
-else
-{
-lean_object* x_466; lean_object* x_467; 
-lean_dec(x_3);
-x_466 = lean_box(0);
-x_467 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_453, x_466, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_4);
-return x_467;
-}
-}
-}
-default: 
-{
-lean_object* x_501; lean_object* x_502; lean_object* x_517; uint8_t x_518; 
-lean_dec(x_5);
-lean_inc(x_2);
-lean_inc(x_1);
-x_501 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1___boxed), 12, 2);
-lean_closure_set(x_501, 0, x_1);
-lean_closure_set(x_501, 1, x_2);
-x_517 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4;
-x_518 = l_Lean_Expr_isConstOf(x_3, x_517);
-if (x_518 == 0)
-{
-lean_object* x_519; 
-x_519 = lean_box(0);
-x_502 = x_519;
-goto block_516;
-}
-else
-{
-lean_object* x_520; lean_object* x_521; uint8_t x_522; 
-x_520 = lean_array_get_size(x_4);
-x_521 = lean_unsigned_to_nat(2u);
-x_522 = lean_nat_dec_eq(x_520, x_521);
-if (x_522 == 0)
-{
-lean_object* x_523; 
-lean_dec(x_520);
-x_523 = lean_box(0);
-x_502 = x_523;
-goto block_516;
-}
-else
-{
-lean_object* x_524; uint8_t x_525; 
-lean_dec(x_501);
-lean_dec(x_3);
-x_524 = lean_unsigned_to_nat(0u);
-x_525 = lean_nat_dec_lt(x_524, x_520);
-lean_dec(x_520);
-if (x_525 == 0)
-{
-lean_object* x_526; lean_object* x_527; lean_object* x_528; 
-lean_dec(x_4);
-x_526 = l_Lean_instInhabitedExpr;
-x_527 = l_outOfBounds___rarg(x_526);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_527);
-x_528 = l_Lean_Meta_Grind_internalize(x_527, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_528) == 0)
-{
-lean_object* x_529; lean_object* x_530; lean_object* x_531; lean_object* x_532; lean_object* x_533; 
-x_529 = lean_ctor_get(x_528, 1);
-lean_inc(x_529);
-lean_dec(x_528);
-lean_inc(x_1);
-x_530 = l_Lean_Meta_Grind_registerParent(x_1, x_527, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_529);
-lean_dec(x_527);
-x_531 = lean_ctor_get(x_530, 0);
-lean_inc(x_531);
-x_532 = lean_ctor_get(x_530, 1);
-lean_inc(x_532);
-lean_dec(x_530);
-x_533 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_531, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_532);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_531);
-return x_533;
-}
-else
-{
-uint8_t x_534; 
-lean_dec(x_527);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_534 = !lean_is_exclusive(x_528);
-if (x_534 == 0)
-{
-return x_528;
-}
-else
-{
-lean_object* x_535; lean_object* x_536; lean_object* x_537; 
-x_535 = lean_ctor_get(x_528, 0);
-x_536 = lean_ctor_get(x_528, 1);
-lean_inc(x_536);
-lean_inc(x_535);
-lean_dec(x_528);
-x_537 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_537, 0, x_535);
-lean_ctor_set(x_537, 1, x_536);
-return x_537;
-}
-}
-}
-else
-{
-lean_object* x_538; lean_object* x_539; 
-x_538 = lean_array_fget(x_4, x_524);
-lean_dec(x_4);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_538);
-x_539 = l_Lean_Meta_Grind_internalize(x_538, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_539) == 0)
-{
-lean_object* x_540; lean_object* x_541; lean_object* x_542; lean_object* x_543; lean_object* x_544; 
-x_540 = lean_ctor_get(x_539, 1);
-lean_inc(x_540);
-lean_dec(x_539);
-lean_inc(x_1);
-x_541 = l_Lean_Meta_Grind_registerParent(x_1, x_538, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_540);
-lean_dec(x_538);
-x_542 = lean_ctor_get(x_541, 0);
-lean_inc(x_542);
-x_543 = lean_ctor_get(x_541, 1);
-lean_inc(x_543);
-lean_dec(x_541);
-x_544 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_542, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_543);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_542);
-return x_544;
-}
-else
-{
-uint8_t x_545; 
-lean_dec(x_538);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_2);
-lean_dec(x_1);
-x_545 = !lean_is_exclusive(x_539);
-if (x_545 == 0)
-{
-return x_539;
-}
-else
-{
-lean_object* x_546; lean_object* x_547; lean_object* x_548; 
-x_546 = lean_ctor_get(x_539, 0);
-x_547 = lean_ctor_get(x_539, 1);
-lean_inc(x_547);
-lean_inc(x_546);
-lean_dec(x_539);
-x_548 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_548, 0, x_546);
-lean_ctor_set(x_548, 1, x_547);
-return x_548;
-}
-}
-}
-}
-}
-block_516:
-{
-uint8_t x_503; 
-lean_dec(x_502);
-x_503 = l_Lean_Expr_isConst(x_3);
-if (x_503 == 0)
-{
-lean_object* x_504; 
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_2);
-lean_inc(x_3);
-x_504 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-if (lean_obj_tag(x_504) == 0)
-{
-lean_object* x_505; lean_object* x_506; lean_object* x_507; lean_object* x_508; lean_object* x_509; 
-x_505 = lean_ctor_get(x_504, 1);
-lean_inc(x_505);
-lean_dec(x_504);
-lean_inc(x_1);
-x_506 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_505);
-lean_dec(x_3);
-x_507 = lean_ctor_get(x_506, 0);
-lean_inc(x_507);
-x_508 = lean_ctor_get(x_506, 1);
-lean_inc(x_508);
-lean_dec(x_506);
-x_509 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_501, x_507, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_508);
-lean_dec(x_507);
-lean_dec(x_4);
-return x_509;
-}
-else
-{
-uint8_t x_510; 
-lean_dec(x_501);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_510 = !lean_is_exclusive(x_504);
-if (x_510 == 0)
-{
-return x_504;
-}
-else
-{
-lean_object* x_511; lean_object* x_512; lean_object* x_513; 
-x_511 = lean_ctor_get(x_504, 0);
-x_512 = lean_ctor_get(x_504, 1);
-lean_inc(x_512);
-lean_inc(x_511);
-lean_dec(x_504);
-x_513 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_513, 0, x_511);
-lean_ctor_set(x_513, 1, x_512);
-return x_513;
-}
-}
-}
-else
-{
-lean_object* x_514; lean_object* x_515; 
-lean_dec(x_3);
-x_514 = lean_box(0);
-x_515 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_4, x_1, x_2, x_501, x_514, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_4);
-return x_515;
-}
-}
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_internalize___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, lean_object* x_11, lean_object* x_12) {
-_start:
-{
-uint8_t x_13; lean_object* x_14; 
-x_13 = 0;
-x_14 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_13, x_13, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-return x_14;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Lean.Meta.Tactic.Grind.Core", 27, 27);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__2() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Lean.Meta.Grind.internalize", 27, 27);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__3() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("unreachable code has been reached", 33, 33);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__4() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Meta_Grind_internalize___lambda__2___closed__1;
-x_2 = l_Lean_Meta_Grind_internalize___lambda__2___closed__2;
-x_3 = lean_unsigned_to_nat(32u);
-x_4 = lean_unsigned_to_nat(16u);
-x_5 = l_Lean_Meta_Grind_internalize___lambda__2___closed__3;
-x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
-return x_6;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__5() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("issues", 6, 6);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__6() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__1;
-x_2 = l_Lean_Meta_Grind_internalize___lambda__2___closed__5;
-x_3 = l_Lean_Name_mkStr2(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__7() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("unexpected term during internalization", 38, 38);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__8() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_Meta_Grind_internalize___lambda__2___closed__7;
-x_2 = l_Lean_stringToMessageData(x_1);
-return x_2;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__9() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_levelZero;
-x_2 = l_Lean_Expr_sort___override(x_1);
-return x_2;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_internalize___lambda__2(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, lean_object* x_11, lean_object* x_12) {
-_start:
-{
-switch (lean_obj_tag(x_1)) {
-case 0:
-{
-lean_object* x_13; lean_object* x_14; 
-lean_dec(x_2);
-lean_dec(x_1);
-x_13 = l_Lean_Meta_Grind_internalize___lambda__2___closed__4;
-x_14 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4(x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-return x_14;
-}
-case 2:
-{
-lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; 
-x_15 = l_Lean_Meta_Grind_internalize___lambda__2___closed__6;
-x_16 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_15, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-x_17 = lean_ctor_get(x_16, 0);
-lean_inc(x_17);
-x_18 = lean_unbox(x_17);
-lean_dec(x_17);
-if (x_18 == 0)
-{
-lean_object* x_19; uint8_t x_20; lean_object* x_21; 
-x_19 = lean_ctor_get(x_16, 1);
-lean_inc(x_19);
-lean_dec(x_16);
-x_20 = 0;
-x_21 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_20, x_20, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_19);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-return x_21;
-}
-else
-{
-uint8_t x_22; 
-x_22 = !lean_is_exclusive(x_16);
-if (x_22 == 0)
-{
-lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; uint8_t x_31; lean_object* x_32; 
-x_23 = lean_ctor_get(x_16, 1);
-x_24 = lean_ctor_get(x_16, 0);
-lean_dec(x_24);
-lean_inc(x_1);
-x_25 = l_Lean_indentExpr(x_1);
-x_26 = l_Lean_Meta_Grind_internalize___lambda__2___closed__8;
-lean_ctor_set_tag(x_16, 7);
-lean_ctor_set(x_16, 1, x_25);
-lean_ctor_set(x_16, 0, x_26);
-x_27 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-x_28 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_28, 0, x_16);
-lean_ctor_set(x_28, 1, x_27);
-x_29 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_15, x_28, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_23);
-x_30 = lean_ctor_get(x_29, 1);
-lean_inc(x_30);
-lean_dec(x_29);
-x_31 = 0;
-x_32 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_31, x_31, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_30);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-return x_32;
-}
-else
-{
-lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; uint8_t x_41; lean_object* x_42; 
-x_33 = lean_ctor_get(x_16, 1);
-lean_inc(x_33);
-lean_dec(x_16);
-lean_inc(x_1);
-x_34 = l_Lean_indentExpr(x_1);
-x_35 = l_Lean_Meta_Grind_internalize___lambda__2___closed__8;
-x_36 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_36, 0, x_35);
-lean_ctor_set(x_36, 1, x_34);
-x_37 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-x_38 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_38, 0, x_36);
-lean_ctor_set(x_38, 1, x_37);
-x_39 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_15, x_38, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_33);
-x_40 = lean_ctor_get(x_39, 1);
-lean_inc(x_40);
-lean_dec(x_39);
-x_41 = 0;
-x_42 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_41, x_41, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_40);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-return x_42;
-}
-}
-}
-case 3:
-{
-lean_object* x_43; lean_object* x_44; 
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_2);
-lean_dec(x_1);
-x_43 = lean_box(0);
-x_44 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_44, 0, x_43);
-lean_ctor_set(x_44, 1, x_12);
-return x_44;
-}
-case 4:
-{
-lean_object* x_45; 
-x_45 = l_Lean_Meta_Grind_mkENode(x_1, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-return x_45;
-}
-case 5:
-{
-lean_object* x_46; 
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_1);
-x_46 = l_Lean_Meta_isLitValue(x_1, x_8, x_9, x_10, x_11, x_12);
-if (lean_obj_tag(x_46) == 0)
-{
-lean_object* x_47; uint8_t x_48; 
-x_47 = lean_ctor_get(x_46, 0);
-lean_inc(x_47);
-x_48 = lean_unbox(x_47);
-lean_dec(x_47);
-if (x_48 == 0)
-{
-lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; 
-x_49 = lean_ctor_get(x_46, 1);
-lean_inc(x_49);
-lean_dec(x_46);
-x_50 = lean_unsigned_to_nat(0u);
-x_51 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_50);
-x_52 = l_Lean_Meta_Grind_internalize___lambda__2___closed__9;
-lean_inc(x_51);
-x_53 = lean_mk_array(x_51, x_52);
-x_54 = lean_unsigned_to_nat(1u);
-x_55 = lean_nat_sub(x_51, x_54);
-lean_dec(x_51);
-lean_inc(x_1);
-x_56 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2(x_1, x_2, x_1, x_53, x_55, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_49);
-return x_56;
-}
-else
-{
-lean_object* x_57; lean_object* x_58; 
-x_57 = lean_ctor_get(x_46, 1);
-lean_inc(x_57);
-lean_dec(x_46);
-x_58 = l_Lean_Meta_Grind_mkENode(x_1, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_57);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-return x_58;
-}
-}
-else
-{
-uint8_t x_59; 
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_2);
-lean_dec(x_1);
-x_59 = !lean_is_exclusive(x_46);
-if (x_59 == 0)
-{
-return x_46;
-}
-else
-{
-lean_object* x_60; lean_object* x_61; lean_object* x_62; 
-x_60 = lean_ctor_get(x_46, 0);
-x_61 = lean_ctor_get(x_46, 1);
-lean_inc(x_61);
-lean_inc(x_60);
-lean_dec(x_46);
-x_62 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_62, 0, x_60);
-lean_ctor_set(x_62, 1, x_61);
-return x_62;
-}
-}
-}
-case 9:
-{
-lean_object* x_63; 
-x_63 = l_Lean_Meta_Grind_mkENode(x_1, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-return x_63;
-}
-case 10:
-{
-lean_object* x_64; lean_object* x_65; lean_object* x_66; uint8_t x_67; 
-x_64 = l_Lean_Meta_Grind_internalize___lambda__2___closed__6;
-x_65 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_64, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-x_66 = lean_ctor_get(x_65, 0);
-lean_inc(x_66);
-x_67 = lean_unbox(x_66);
-lean_dec(x_66);
-if (x_67 == 0)
-{
-lean_object* x_68; uint8_t x_69; lean_object* x_70; 
-x_68 = lean_ctor_get(x_65, 1);
-lean_inc(x_68);
-lean_dec(x_65);
-x_69 = 0;
-x_70 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_69, x_69, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_68);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-return x_70;
-}
-else
-{
-uint8_t x_71; 
-x_71 = !lean_is_exclusive(x_65);
-if (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; lean_object* x_78; lean_object* x_79; uint8_t x_80; lean_object* x_81; 
-x_72 = lean_ctor_get(x_65, 1);
-x_73 = lean_ctor_get(x_65, 0);
-lean_dec(x_73);
-lean_inc(x_1);
-x_74 = l_Lean_indentExpr(x_1);
-x_75 = l_Lean_Meta_Grind_internalize___lambda__2___closed__8;
-lean_ctor_set_tag(x_65, 7);
-lean_ctor_set(x_65, 1, x_74);
-lean_ctor_set(x_65, 0, x_75);
-x_76 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-x_77 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_77, 0, x_65);
-lean_ctor_set(x_77, 1, x_76);
-x_78 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_64, x_77, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_72);
-x_79 = lean_ctor_get(x_78, 1);
-lean_inc(x_79);
-lean_dec(x_78);
-x_80 = 0;
-x_81 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_80, x_80, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_79);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-return x_81;
-}
-else
-{
-lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; uint8_t x_90; lean_object* x_91; 
-x_82 = lean_ctor_get(x_65, 1);
-lean_inc(x_82);
-lean_dec(x_65);
-lean_inc(x_1);
-x_83 = l_Lean_indentExpr(x_1);
-x_84 = l_Lean_Meta_Grind_internalize___lambda__2___closed__8;
-x_85 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_85, 0, x_84);
-lean_ctor_set(x_85, 1, x_83);
-x_86 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-x_87 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_87, 0, x_85);
-lean_ctor_set(x_87, 1, x_86);
-x_88 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_64, x_87, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_82);
-x_89 = lean_ctor_get(x_88, 1);
-lean_inc(x_89);
-lean_dec(x_88);
-x_90 = 0;
-x_91 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_90, x_90, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_89);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-return x_91;
-}
-}
-}
-case 11:
-{
-lean_object* x_92; lean_object* x_93; lean_object* x_94; uint8_t x_95; 
-x_92 = l_Lean_Meta_Grind_internalize___lambda__2___closed__6;
-x_93 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_92, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-x_94 = lean_ctor_get(x_93, 0);
-lean_inc(x_94);
-x_95 = lean_unbox(x_94);
-lean_dec(x_94);
-if (x_95 == 0)
-{
-lean_object* x_96; uint8_t x_97; lean_object* x_98; 
-x_96 = lean_ctor_get(x_93, 1);
-lean_inc(x_96);
-lean_dec(x_93);
-x_97 = 0;
-x_98 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_97, x_97, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_96);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-return x_98;
-}
-else
-{
-uint8_t x_99; 
-x_99 = !lean_is_exclusive(x_93);
-if (x_99 == 0)
-{
-lean_object* x_100; lean_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; lean_object* x_106; lean_object* x_107; uint8_t x_108; lean_object* x_109; 
-x_100 = lean_ctor_get(x_93, 1);
-x_101 = lean_ctor_get(x_93, 0);
-lean_dec(x_101);
-lean_inc(x_1);
-x_102 = l_Lean_indentExpr(x_1);
-x_103 = l_Lean_Meta_Grind_internalize___lambda__2___closed__8;
-lean_ctor_set_tag(x_93, 7);
-lean_ctor_set(x_93, 1, x_102);
-lean_ctor_set(x_93, 0, x_103);
-x_104 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-x_105 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_105, 0, x_93);
-lean_ctor_set(x_105, 1, x_104);
-x_106 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_92, x_105, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_100);
-x_107 = lean_ctor_get(x_106, 1);
-lean_inc(x_107);
-lean_dec(x_106);
-x_108 = 0;
-x_109 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_108, x_108, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_107);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-return x_109;
-}
-else
-{
-lean_object* x_110; lean_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; lean_object* x_115; lean_object* x_116; lean_object* x_117; uint8_t x_118; lean_object* x_119; 
-x_110 = lean_ctor_get(x_93, 1);
-lean_inc(x_110);
-lean_dec(x_93);
-lean_inc(x_1);
-x_111 = l_Lean_indentExpr(x_1);
-x_112 = l_Lean_Meta_Grind_internalize___lambda__2___closed__8;
-x_113 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_113, 0, x_112);
-lean_ctor_set(x_113, 1, x_111);
-x_114 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-x_115 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_115, 0, x_113);
-lean_ctor_set(x_115, 1, x_114);
-x_116 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_92, x_115, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_110);
-x_117 = lean_ctor_get(x_116, 1);
-lean_inc(x_117);
-lean_dec(x_116);
-x_118 = 0;
-x_119 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_118, x_118, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_117);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-return x_119;
-}
-}
-}
-default: 
-{
-uint8_t x_120; lean_object* x_121; 
-x_120 = 0;
-x_121 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_120, x_120, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-return x_121;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_internalize(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, lean_object* x_11) {
-_start:
-{
-lean_object* x_12; lean_object* x_13; uint8_t x_14; 
-x_12 = l_Lean_Meta_Grind_alreadyInternalized(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-x_13 = lean_ctor_get(x_12, 0);
-lean_inc(x_13);
-x_14 = lean_unbox(x_13);
-lean_dec(x_13);
-if (x_14 == 0)
-{
-lean_object* x_15; lean_object* x_16; lean_object* x_17; 
-x_15 = lean_ctor_get(x_12, 1);
-lean_inc(x_15);
-lean_dec(x_12);
-x_16 = lean_box(0);
-x_17 = l_Lean_Meta_Grind_internalize___lambda__2(x_1, x_2, x_16, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_15);
-return x_17;
-}
-else
-{
-uint8_t x_18; 
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-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_18 = !lean_is_exclusive(x_12);
-if (x_18 == 0)
-{
-lean_object* x_19; lean_object* x_20; 
-x_19 = lean_ctor_get(x_12, 0);
-lean_dec(x_19);
-x_20 = lean_box(0);
-lean_ctor_set(x_12, 0, x_20);
-return x_12;
-}
-else
-{
-lean_object* x_21; lean_object* x_22; lean_object* x_23; 
-x_21 = lean_ctor_get(x_12, 1);
-lean_inc(x_21);
-lean_dec(x_12);
-x_22 = lean_box(0);
-x_23 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_23, 0, x_22);
-lean_ctor_set(x_23, 1, x_21);
-return x_23;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at_Lean_Meta_Grind_internalize___spec__1___boxed(lean_object** _args) {
-lean_object* x_1 = _args[0];
-lean_object* x_2 = _args[1];
-lean_object* x_3 = _args[2];
-lean_object* x_4 = _args[3];
-lean_object* x_5 = _args[4];
-lean_object* x_6 = _args[5];
-lean_object* x_7 = _args[6];
-lean_object* x_8 = _args[7];
-lean_object* x_9 = _args[8];
-lean_object* x_10 = _args[9];
-lean_object* x_11 = _args[10];
-lean_object* x_12 = _args[11];
-lean_object* x_13 = _args[12];
-lean_object* x_14 = _args[13];
-lean_object* x_15 = _args[14];
-lean_object* x_16 = _args[15];
-lean_object* x_17 = _args[16];
-lean_object* x_18 = _args[17];
-_start:
-{
-lean_object* x_19; 
-x_19 = l_Std_Range_forIn_x27_loop___at_Lean_Meta_Grind_internalize___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-return x_19;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
-_start:
-{
-lean_object* x_13; 
-x_13 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-return x_13;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
-_start:
-{
-lean_object* x_15; 
-x_15 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_5);
-lean_dec(x_1);
-return x_15;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_internalize___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
-_start:
-{
-lean_object* x_13; 
-x_13 = l_Lean_Meta_Grind_internalize___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-return x_13;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_internalize___lambda__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
-_start:
-{
-lean_object* x_13; 
-x_13 = l_Lean_Meta_Grind_internalize___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-lean_dec(x_3);
-return x_13;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
-_start:
-{
-uint8_t x_16; 
-x_16 = !lean_is_exclusive(x_1);
-if (x_16 == 0)
-{
-lean_object* x_17; lean_object* x_18; lean_object* x_19; 
-x_17 = lean_ctor_get(x_1, 5);
-lean_dec(x_17);
-x_18 = lean_ctor_get(x_1, 4);
-lean_dec(x_18);
-lean_ctor_set(x_1, 5, x_3);
-lean_ctor_set(x_1, 4, x_2);
-lean_ctor_set_uint8(x_1, sizeof(void*)*10, x_4);
-x_19 = l_Lean_Meta_Grind_setENode(x_5, x_1, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
-return x_19;
-}
-else
-{
-lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; uint8_t x_25; uint8_t x_26; uint8_t x_27; uint8_t x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; 
-x_20 = lean_ctor_get(x_1, 0);
-x_21 = lean_ctor_get(x_1, 1);
-x_22 = lean_ctor_get(x_1, 2);
-x_23 = lean_ctor_get(x_1, 3);
-x_24 = lean_ctor_get(x_1, 6);
-x_25 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 1);
-x_26 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 2);
-x_27 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 3);
-x_28 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 4);
-x_29 = lean_ctor_get(x_1, 7);
-x_30 = lean_ctor_get(x_1, 8);
-x_31 = lean_ctor_get(x_1, 9);
-lean_inc(x_31);
-lean_inc(x_30);
-lean_inc(x_29);
-lean_inc(x_24);
-lean_inc(x_23);
-lean_inc(x_22);
-lean_inc(x_21);
-lean_inc(x_20);
-lean_dec(x_1);
-x_32 = lean_alloc_ctor(0, 10, 5);
-lean_ctor_set(x_32, 0, x_20);
-lean_ctor_set(x_32, 1, x_21);
-lean_ctor_set(x_32, 2, x_22);
-lean_ctor_set(x_32, 3, x_23);
-lean_ctor_set(x_32, 4, x_2);
-lean_ctor_set(x_32, 5, x_3);
-lean_ctor_set(x_32, 6, x_24);
-lean_ctor_set(x_32, 7, x_29);
-lean_ctor_set(x_32, 8, x_30);
-lean_ctor_set(x_32, 9, x_31);
-lean_ctor_set_uint8(x_32, sizeof(void*)*10, x_4);
-lean_ctor_set_uint8(x_32, sizeof(void*)*10 + 1, x_25);
-lean_ctor_set_uint8(x_32, sizeof(void*)*10 + 2, x_26);
-lean_ctor_set_uint8(x_32, sizeof(void*)*10 + 3, x_27);
-lean_ctor_set_uint8(x_32, sizeof(void*)*10 + 4, x_28);
-x_33 = l_Lean_Meta_Grind_setENode(x_5, x_32, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
-return x_33;
-}
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(lean_object* x_1, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
-_start:
-{
-lean_object* x_14; 
-lean_inc(x_1);
-x_14 = l_Lean_Meta_Grind_getENode(x_1, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
-if (lean_obj_tag(x_14) == 0)
-{
-lean_object* x_15; lean_object* x_16; 
-x_15 = lean_ctor_get(x_14, 0);
-lean_inc(x_15);
-x_16 = lean_ctor_get(x_15, 4);
-lean_inc(x_16);
-if (lean_obj_tag(x_16) == 0)
-{
-lean_object* x_17; lean_object* x_18; lean_object* x_19; 
-x_17 = lean_ctor_get(x_14, 1);
-lean_inc(x_17);
-lean_dec(x_14);
-x_18 = lean_box(0);
-x_19 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(x_15, x_3, x_4, x_2, x_1, x_18, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_17);
-lean_dec(x_1);
-return x_19;
-}
-else
-{
-lean_object* x_20; lean_object* x_21; uint8_t x_22; 
-x_20 = lean_ctor_get(x_14, 1);
-lean_inc(x_20);
-lean_dec(x_14);
-x_21 = lean_ctor_get(x_15, 5);
-lean_inc(x_21);
-x_22 = !lean_is_exclusive(x_16);
-if (x_22 == 0)
-{
-uint8_t x_23; lean_object* x_24; 
-x_23 = lean_ctor_get_uint8(x_15, sizeof(void*)*10);
-x_24 = lean_ctor_get(x_16, 0);
-lean_inc(x_1);
-lean_ctor_set(x_16, 0, x_1);
-if (x_23 == 0)
-{
-uint8_t x_25; lean_object* x_26; 
-x_25 = 1;
-x_26 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(x_24, x_25, x_16, x_21, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_20);
-if (lean_obj_tag(x_26) == 0)
-{
-lean_object* x_27; lean_object* x_28; lean_object* x_29; 
-x_27 = lean_ctor_get(x_26, 0);
-lean_inc(x_27);
-x_28 = lean_ctor_get(x_26, 1);
-lean_inc(x_28);
-lean_dec(x_26);
-x_29 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(x_15, x_3, x_4, x_2, x_1, x_27, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_28);
-lean_dec(x_27);
-lean_dec(x_1);
-return x_29;
-}
-else
-{
-uint8_t x_30; 
-lean_dec(x_15);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_1);
-x_30 = !lean_is_exclusive(x_26);
-if (x_30 == 0)
-{
-return x_26;
-}
-else
-{
-lean_object* x_31; lean_object* x_32; lean_object* x_33; 
-x_31 = lean_ctor_get(x_26, 0);
-x_32 = lean_ctor_get(x_26, 1);
-lean_inc(x_32);
-lean_inc(x_31);
-lean_dec(x_26);
-x_33 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_33, 0, x_31);
-lean_ctor_set(x_33, 1, x_32);
-return x_33;
-}
-}
-}
-else
-{
-uint8_t x_34; lean_object* x_35; 
-x_34 = 0;
-x_35 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(x_24, x_34, x_16, x_21, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_20);
-if (lean_obj_tag(x_35) == 0)
-{
-lean_object* x_36; lean_object* x_37; lean_object* x_38; 
-x_36 = lean_ctor_get(x_35, 0);
-lean_inc(x_36);
-x_37 = lean_ctor_get(x_35, 1);
-lean_inc(x_37);
-lean_dec(x_35);
-x_38 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(x_15, x_3, x_4, x_2, x_1, x_36, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_37);
-lean_dec(x_36);
-lean_dec(x_1);
-return x_38;
-}
-else
-{
-uint8_t x_39; 
-lean_dec(x_15);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_1);
-x_39 = !lean_is_exclusive(x_35);
-if (x_39 == 0)
-{
-return x_35;
-}
-else
-{
-lean_object* x_40; lean_object* x_41; lean_object* x_42; 
-x_40 = lean_ctor_get(x_35, 0);
-x_41 = lean_ctor_get(x_35, 1);
-lean_inc(x_41);
-lean_inc(x_40);
-lean_dec(x_35);
-x_42 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_42, 0, x_40);
-lean_ctor_set(x_42, 1, x_41);
-return x_42;
-}
-}
-}
-}
-else
-{
-uint8_t x_43; lean_object* x_44; lean_object* x_45; 
-x_43 = lean_ctor_get_uint8(x_15, sizeof(void*)*10);
-x_44 = lean_ctor_get(x_16, 0);
-lean_inc(x_44);
-lean_dec(x_16);
-lean_inc(x_1);
-x_45 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_45, 0, x_1);
-if (x_43 == 0)
-{
-uint8_t x_46; lean_object* x_47; 
-x_46 = 1;
-x_47 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(x_44, x_46, x_45, x_21, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_20);
-if (lean_obj_tag(x_47) == 0)
-{
-lean_object* x_48; lean_object* x_49; lean_object* x_50; 
-x_48 = lean_ctor_get(x_47, 0);
-lean_inc(x_48);
-x_49 = lean_ctor_get(x_47, 1);
-lean_inc(x_49);
-lean_dec(x_47);
-x_50 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(x_15, x_3, x_4, x_2, x_1, x_48, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_49);
-lean_dec(x_48);
-lean_dec(x_1);
-return x_50;
-}
-else
-{
-lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; 
-lean_dec(x_15);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_1);
-x_51 = lean_ctor_get(x_47, 0);
-lean_inc(x_51);
-x_52 = lean_ctor_get(x_47, 1);
-lean_inc(x_52);
-if (lean_is_exclusive(x_47)) {
- lean_ctor_release(x_47, 0);
- lean_ctor_release(x_47, 1);
- x_53 = x_47;
-} else {
- lean_dec_ref(x_47);
- x_53 = lean_box(0);
-}
-if (lean_is_scalar(x_53)) {
- x_54 = lean_alloc_ctor(1, 2, 0);
-} else {
- x_54 = x_53;
-}
-lean_ctor_set(x_54, 0, x_51);
-lean_ctor_set(x_54, 1, x_52);
-return x_54;
-}
-}
-else
-{
-uint8_t x_55; lean_object* x_56; 
-x_55 = 0;
-x_56 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(x_44, x_55, x_45, x_21, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_20);
-if (lean_obj_tag(x_56) == 0)
-{
-lean_object* x_57; lean_object* x_58; lean_object* x_59; 
-x_57 = lean_ctor_get(x_56, 0);
-lean_inc(x_57);
-x_58 = lean_ctor_get(x_56, 1);
-lean_inc(x_58);
-lean_dec(x_56);
-x_59 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(x_15, x_3, x_4, x_2, x_1, x_57, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_58);
-lean_dec(x_57);
-lean_dec(x_1);
-return x_59;
-}
-else
-{
-lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; 
-lean_dec(x_15);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_1);
-x_60 = lean_ctor_get(x_56, 0);
-lean_inc(x_60);
-x_61 = lean_ctor_get(x_56, 1);
-lean_inc(x_61);
-if (lean_is_exclusive(x_56)) {
- lean_ctor_release(x_56, 0);
- lean_ctor_release(x_56, 1);
- x_62 = x_56;
-} else {
- lean_dec_ref(x_56);
- x_62 = lean_box(0);
-}
-if (lean_is_scalar(x_62)) {
- x_63 = lean_alloc_ctor(1, 2, 0);
-} else {
- x_63 = x_62;
-}
-lean_ctor_set(x_63, 0, x_60);
-lean_ctor_set(x_63, 1, x_61);
-return x_63;
-}
-}
-}
-}
-}
-else
-{
-uint8_t x_64; 
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_1);
-x_64 = !lean_is_exclusive(x_14);
-if (x_64 == 0)
-{
-return x_14;
-}
-else
-{
-lean_object* x_65; lean_object* x_66; lean_object* x_67; 
-x_65 = lean_ctor_get(x_14, 0);
-x_66 = lean_ctor_get(x_14, 1);
-lean_inc(x_66);
-lean_inc(x_65);
-lean_dec(x_14);
-x_67 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_67, 0, x_65);
-lean_ctor_set(x_67, 1, x_66);
-return x_67;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
-_start:
-{
-uint8_t x_16; lean_object* x_17; 
-x_16 = lean_unbox(x_4);
-lean_dec(x_4);
-x_17 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go___lambda__1(x_1, x_2, x_3, x_16, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
-lean_dec(x_14);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-return x_17;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
-_start:
-{
-uint8_t x_14; lean_object* x_15; 
-x_14 = lean_unbox(x_2);
-lean_dec(x_2);
-x_15 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(x_1, x_14, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-return x_15;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans(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:
-{
-lean_object* x_11; uint8_t x_12; lean_object* x_13; 
-x_11 = lean_box(0);
-x_12 = 0;
-x_13 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans_go(x_1, x_12, x_11, x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_13;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans___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, lean_object* x_10) {
-_start:
-{
-lean_object* x_11; 
-x_11 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_invertTrans(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_11;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_markAsInconsistent(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; lean_object* x_11; lean_object* x_12; uint8_t x_13; 
-x_10 = lean_st_ref_take(x_1, x_9);
-x_11 = lean_ctor_get(x_10, 0);
-lean_inc(x_11);
-x_12 = lean_ctor_get(x_10, 1);
-lean_inc(x_12);
-lean_dec(x_10);
-x_13 = !lean_is_exclusive(x_11);
-if (x_13 == 0)
-{
-uint8_t x_14; lean_object* x_15; uint8_t x_16; 
-x_14 = 1;
-lean_ctor_set_uint8(x_11, sizeof(void*)*7, x_14);
-x_15 = lean_st_ref_set(x_1, x_11, x_12);
-x_16 = !lean_is_exclusive(x_15);
-if (x_16 == 0)
-{
-lean_object* x_17; lean_object* x_18; 
-x_17 = lean_ctor_get(x_15, 0);
-lean_dec(x_17);
-x_18 = lean_box(0);
-lean_ctor_set(x_15, 0, x_18);
-return x_15;
-}
-else
-{
-lean_object* x_19; lean_object* x_20; lean_object* x_21; 
-x_19 = lean_ctor_get(x_15, 1);
-lean_inc(x_19);
-lean_dec(x_15);
-x_20 = lean_box(0);
-x_21 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_21, 0, x_20);
-lean_ctor_set(x_21, 1, x_19);
-return x_21;
-}
-}
-else
-{
-lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; uint8_t x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_22 = lean_ctor_get(x_11, 0);
-x_23 = lean_ctor_get(x_11, 1);
-x_24 = lean_ctor_get(x_11, 2);
-x_25 = lean_ctor_get(x_11, 3);
-x_26 = lean_ctor_get(x_11, 4);
-x_27 = lean_ctor_get(x_11, 5);
-x_28 = lean_ctor_get(x_11, 6);
-lean_inc(x_28);
-lean_inc(x_27);
-lean_inc(x_26);
-lean_inc(x_25);
-lean_inc(x_24);
-lean_inc(x_23);
-lean_inc(x_22);
-lean_dec(x_11);
-x_29 = 1;
-x_30 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_30, 0, x_22);
-lean_ctor_set(x_30, 1, x_23);
-lean_ctor_set(x_30, 2, x_24);
-lean_ctor_set(x_30, 3, x_25);
-lean_ctor_set(x_30, 4, x_26);
-lean_ctor_set(x_30, 5, x_27);
-lean_ctor_set(x_30, 6, x_28);
-lean_ctor_set_uint8(x_30, sizeof(void*)*7, x_29);
-x_31 = lean_st_ref_set(x_1, x_30, x_12);
-x_32 = lean_ctor_get(x_31, 1);
-lean_inc(x_32);
-if (lean_is_exclusive(x_31)) {
- lean_ctor_release(x_31, 0);
- lean_ctor_release(x_31, 1);
- x_33 = x_31;
-} else {
- lean_dec_ref(x_31);
- x_33 = lean_box(0);
-}
-x_34 = lean_box(0);
-if (lean_is_scalar(x_33)) {
- x_35 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_35 = x_33;
-}
-lean_ctor_set(x_35, 0, x_34);
-lean_ctor_set(x_35, 1, x_32);
-return x_35;
-}
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_markAsInconsistent___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___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_markAsInconsistent(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
-lean_dec(x_8);
-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_10;
-}
-}
-LEAN_EXPORT lean_object* l_Array_indexOfAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__3(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
-_start:
-{
-lean_object* x_5; lean_object* x_6; uint8_t x_7; 
-x_5 = lean_ctor_get(x_1, 1);
-lean_inc(x_5);
-x_6 = lean_array_get_size(x_2);
-x_7 = lean_nat_dec_lt(x_4, x_6);
-lean_dec(x_6);
-if (x_7 == 0)
-{
-lean_object* x_8; 
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_1);
-x_8 = lean_box(0);
-return x_8;
-}
-else
-{
-lean_object* x_9; uint8_t x_10; 
-x_9 = lean_array_fget(x_2, x_4);
-lean_inc(x_3);
-x_10 = l_Lean_Meta_Grind_isCongruent(x_5, x_9, x_3);
-if (x_10 == 0)
-{
-lean_object* x_11; lean_object* x_12; 
-x_11 = lean_unsigned_to_nat(1u);
-x_12 = lean_nat_add(x_4, x_11);
-lean_dec(x_4);
-x_4 = x_12;
-goto _start;
-}
-else
-{
-lean_object* x_14; 
-lean_dec(x_3);
-lean_dec(x_1);
-x_14 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_14, 0, x_4);
-return x_14;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2(lean_object* x_1, lean_object* x_2, size_t x_3, lean_object* x_4) {
-_start:
-{
-if (lean_obj_tag(x_2) == 0)
-{
-lean_object* x_5; lean_object* x_6; size_t x_7; size_t x_8; size_t x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; 
-x_5 = lean_ctor_get(x_2, 0);
-lean_inc(x_5);
-x_6 = lean_ctor_get(x_1, 1);
-lean_inc(x_6);
-x_7 = 5;
-x_8 = l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
-x_9 = lean_usize_land(x_3, x_8);
-x_10 = lean_usize_to_nat(x_9);
-x_11 = lean_box(2);
-x_12 = lean_array_get(x_11, x_5, x_10);
-switch (lean_obj_tag(x_12)) {
-case 0:
-{
-lean_object* x_13; uint8_t x_14; 
-lean_dec(x_1);
-x_13 = lean_ctor_get(x_12, 0);
-lean_inc(x_13);
-lean_dec(x_12);
-x_14 = l_Lean_Meta_Grind_isCongruent(x_6, x_4, x_13);
-if (x_14 == 0)
-{
-lean_dec(x_10);
-lean_dec(x_5);
-return x_2;
-}
-else
-{
-uint8_t x_15; 
-x_15 = !lean_is_exclusive(x_2);
-if (x_15 == 0)
-{
-lean_object* x_16; lean_object* x_17; 
-x_16 = lean_ctor_get(x_2, 0);
-lean_dec(x_16);
-x_17 = lean_array_set(x_5, x_10, x_11);
-lean_dec(x_10);
-lean_ctor_set(x_2, 0, x_17);
-return x_2;
-}
-else
-{
-lean_object* x_18; lean_object* x_19; 
-lean_dec(x_2);
-x_18 = lean_array_set(x_5, x_10, x_11);
-lean_dec(x_10);
-x_19 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_19, 0, x_18);
-return x_19;
-}
-}
-}
-case 1:
-{
-uint8_t x_20; 
-lean_dec(x_6);
-x_20 = !lean_is_exclusive(x_2);
-if (x_20 == 0)
-{
-lean_object* x_21; uint8_t x_22; 
-x_21 = lean_ctor_get(x_2, 0);
-lean_dec(x_21);
-x_22 = !lean_is_exclusive(x_12);
-if (x_22 == 0)
-{
-lean_object* x_23; lean_object* x_24; size_t x_25; lean_object* x_26; lean_object* x_27; 
-x_23 = lean_ctor_get(x_12, 0);
-x_24 = lean_array_set(x_5, x_10, x_11);
-x_25 = lean_usize_shift_right(x_3, x_7);
-x_26 = l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2(x_1, x_23, x_25, x_4);
-lean_inc(x_26);
-x_27 = l_Lean_PersistentHashMap_isUnaryNode___rarg(x_26);
-if (lean_obj_tag(x_27) == 0)
-{
-lean_object* x_28; 
-lean_ctor_set(x_12, 0, x_26);
-x_28 = lean_array_set(x_24, x_10, x_12);
-lean_dec(x_10);
-lean_ctor_set(x_2, 0, x_28);
-return x_2;
-}
-else
-{
-lean_object* x_29; uint8_t x_30; 
-lean_dec(x_26);
-lean_free_object(x_12);
-x_29 = lean_ctor_get(x_27, 0);
-lean_inc(x_29);
-lean_dec(x_27);
-x_30 = !lean_is_exclusive(x_29);
-if (x_30 == 0)
-{
-lean_object* x_31; 
-x_31 = lean_array_set(x_24, x_10, x_29);
-lean_dec(x_10);
-lean_ctor_set(x_2, 0, x_31);
-return x_2;
-}
-else
-{
-lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_32 = lean_ctor_get(x_29, 0);
-x_33 = lean_ctor_get(x_29, 1);
-lean_inc(x_33);
-lean_inc(x_32);
-lean_dec(x_29);
-x_34 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_34, 0, x_32);
-lean_ctor_set(x_34, 1, x_33);
-x_35 = lean_array_set(x_24, x_10, x_34);
-lean_dec(x_10);
-lean_ctor_set(x_2, 0, x_35);
-return x_2;
-}
-}
-}
-else
-{
-lean_object* x_36; lean_object* x_37; size_t x_38; lean_object* x_39; lean_object* x_40; 
-x_36 = lean_ctor_get(x_12, 0);
-lean_inc(x_36);
-lean_dec(x_12);
-x_37 = lean_array_set(x_5, x_10, x_11);
-x_38 = lean_usize_shift_right(x_3, x_7);
-x_39 = l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2(x_1, x_36, x_38, x_4);
-lean_inc(x_39);
-x_40 = l_Lean_PersistentHashMap_isUnaryNode___rarg(x_39);
-if (lean_obj_tag(x_40) == 0)
-{
-lean_object* x_41; lean_object* x_42; 
-x_41 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_41, 0, x_39);
-x_42 = lean_array_set(x_37, x_10, x_41);
-lean_dec(x_10);
-lean_ctor_set(x_2, 0, x_42);
-return x_2;
-}
-else
-{
-lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; 
-lean_dec(x_39);
-x_43 = lean_ctor_get(x_40, 0);
-lean_inc(x_43);
-lean_dec(x_40);
-x_44 = lean_ctor_get(x_43, 0);
-lean_inc(x_44);
-x_45 = lean_ctor_get(x_43, 1);
-lean_inc(x_45);
-if (lean_is_exclusive(x_43)) {
- lean_ctor_release(x_43, 0);
- lean_ctor_release(x_43, 1);
- x_46 = x_43;
-} else {
- lean_dec_ref(x_43);
- x_46 = lean_box(0);
-}
-if (lean_is_scalar(x_46)) {
- x_47 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_47 = x_46;
-}
-lean_ctor_set(x_47, 0, x_44);
-lean_ctor_set(x_47, 1, x_45);
-x_48 = lean_array_set(x_37, x_10, x_47);
-lean_dec(x_10);
-lean_ctor_set(x_2, 0, x_48);
-return x_2;
-}
-}
-}
-else
-{
-lean_object* x_49; lean_object* x_50; lean_object* x_51; size_t x_52; lean_object* x_53; lean_object* x_54; 
-lean_dec(x_2);
-x_49 = lean_ctor_get(x_12, 0);
-lean_inc(x_49);
-if (lean_is_exclusive(x_12)) {
- lean_ctor_release(x_12, 0);
- x_50 = x_12;
-} else {
- lean_dec_ref(x_12);
- x_50 = lean_box(0);
-}
-x_51 = lean_array_set(x_5, x_10, x_11);
-x_52 = lean_usize_shift_right(x_3, x_7);
-x_53 = l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2(x_1, x_49, x_52, x_4);
-lean_inc(x_53);
-x_54 = l_Lean_PersistentHashMap_isUnaryNode___rarg(x_53);
-if (lean_obj_tag(x_54) == 0)
-{
-lean_object* x_55; lean_object* x_56; lean_object* x_57; 
-if (lean_is_scalar(x_50)) {
- x_55 = lean_alloc_ctor(1, 1, 0);
-} else {
- x_55 = x_50;
-}
-lean_ctor_set(x_55, 0, x_53);
-x_56 = lean_array_set(x_51, x_10, x_55);
-lean_dec(x_10);
-x_57 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_57, 0, x_56);
-return x_57;
-}
-else
-{
-lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; 
-lean_dec(x_53);
-lean_dec(x_50);
-x_58 = lean_ctor_get(x_54, 0);
-lean_inc(x_58);
-lean_dec(x_54);
-x_59 = lean_ctor_get(x_58, 0);
-lean_inc(x_59);
-x_60 = lean_ctor_get(x_58, 1);
-lean_inc(x_60);
-if (lean_is_exclusive(x_58)) {
- lean_ctor_release(x_58, 0);
- lean_ctor_release(x_58, 1);
- x_61 = x_58;
-} else {
- lean_dec_ref(x_58);
- x_61 = lean_box(0);
-}
-if (lean_is_scalar(x_61)) {
- x_62 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_62 = x_61;
-}
-lean_ctor_set(x_62, 0, x_59);
-lean_ctor_set(x_62, 1, x_60);
-x_63 = lean_array_set(x_51, x_10, x_62);
-lean_dec(x_10);
-x_64 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_64, 0, x_63);
-return x_64;
-}
-}
-}
-default: 
-{
-lean_dec(x_10);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_1);
-return x_2;
-}
-}
-}
-else
-{
-lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; 
-x_65 = lean_ctor_get(x_2, 0);
-lean_inc(x_65);
-x_66 = lean_ctor_get(x_2, 1);
-lean_inc(x_66);
-x_67 = lean_unsigned_to_nat(0u);
-x_68 = l_Array_indexOfAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__3(x_1, x_65, x_4, x_67);
-if (lean_obj_tag(x_68) == 0)
-{
-lean_dec(x_66);
-lean_dec(x_65);
-return x_2;
-}
-else
-{
-uint8_t x_69; 
-x_69 = !lean_is_exclusive(x_2);
-if (x_69 == 0)
-{
-lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; 
-x_70 = lean_ctor_get(x_2, 1);
-lean_dec(x_70);
-x_71 = lean_ctor_get(x_2, 0);
-lean_dec(x_71);
-x_72 = lean_ctor_get(x_68, 0);
-lean_inc(x_72);
-lean_dec(x_68);
-lean_inc(x_72);
-x_73 = l_Array_eraseIdx___rarg(x_65, x_72, lean_box(0));
-x_74 = l_Array_eraseIdx___rarg(x_66, x_72, lean_box(0));
-lean_ctor_set(x_2, 1, x_74);
-lean_ctor_set(x_2, 0, x_73);
-return x_2;
-}
-else
-{
-lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; 
-lean_dec(x_2);
-x_75 = lean_ctor_get(x_68, 0);
-lean_inc(x_75);
-lean_dec(x_68);
-lean_inc(x_75);
-x_76 = l_Array_eraseIdx___rarg(x_65, x_75, lean_box(0));
-x_77 = l_Array_eraseIdx___rarg(x_66, x_75, lean_box(0));
-x_78 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_78, 0, x_76);
-lean_ctor_set(x_78, 1, x_77);
-return x_78;
-}
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_erase___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
-_start:
-{
-lean_object* x_4; uint64_t x_5; size_t x_6; lean_object* x_7; 
-x_4 = lean_ctor_get(x_1, 1);
-lean_inc(x_4);
-x_5 = l_Lean_Meta_Grind_congrHash(x_4, x_3);
-x_6 = lean_uint64_to_usize(x_5);
-x_7 = l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2(x_1, x_2, x_6, x_3);
-return x_7;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__4(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, lean_object* x_11) {
-_start:
-{
-if (lean_obj_tag(x_1) == 0)
-{
-lean_object* x_12; lean_object* x_13; 
-x_12 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_12, 0, x_2);
-x_13 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_13, 0, x_12);
-lean_ctor_set(x_13, 1, x_11);
-return x_13;
-}
-else
-{
-lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; uint8_t x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; uint8_t x_31; 
-x_14 = lean_ctor_get(x_1, 0);
-lean_inc(x_14);
-x_15 = lean_ctor_get(x_1, 1);
-lean_inc(x_15);
-x_16 = lean_ctor_get(x_1, 3);
-lean_inc(x_16);
-lean_dec(x_1);
-x_17 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__4(x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-x_18 = lean_ctor_get(x_17, 1);
-lean_inc(x_18);
-lean_dec(x_17);
-x_19 = lean_st_ref_take(x_3, x_18);
-x_20 = lean_ctor_get(x_19, 0);
-lean_inc(x_20);
-x_21 = lean_ctor_get(x_19, 1);
-lean_inc(x_21);
-lean_dec(x_19);
-x_22 = lean_ctor_get(x_20, 0);
-lean_inc(x_22);
-x_23 = lean_ctor_get(x_20, 1);
-lean_inc(x_23);
-x_24 = lean_ctor_get(x_20, 2);
-lean_inc(x_24);
-x_25 = lean_ctor_get(x_20, 3);
-lean_inc(x_25);
-x_26 = lean_ctor_get(x_20, 4);
-lean_inc(x_26);
-x_27 = lean_ctor_get_uint8(x_20, sizeof(void*)*7);
-x_28 = lean_ctor_get(x_20, 5);
-lean_inc(x_28);
-x_29 = lean_ctor_get(x_20, 6);
-lean_inc(x_29);
-lean_inc(x_20);
-x_30 = l_Lean_PersistentHashMap_erase___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__1(x_20, x_25, x_15);
-x_31 = !lean_is_exclusive(x_20);
-if (x_31 == 0)
-{
-lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; 
-x_32 = lean_ctor_get(x_20, 6);
-lean_dec(x_32);
-x_33 = lean_ctor_get(x_20, 5);
-lean_dec(x_33);
-x_34 = lean_ctor_get(x_20, 4);
-lean_dec(x_34);
-x_35 = lean_ctor_get(x_20, 3);
-lean_dec(x_35);
-x_36 = lean_ctor_get(x_20, 2);
-lean_dec(x_36);
-x_37 = lean_ctor_get(x_20, 1);
-lean_dec(x_37);
-x_38 = lean_ctor_get(x_20, 0);
-lean_dec(x_38);
-lean_ctor_set(x_20, 3, x_30);
-x_39 = lean_st_ref_set(x_3, x_20, x_21);
-x_40 = lean_ctor_get(x_39, 1);
-lean_inc(x_40);
-lean_dec(x_39);
-x_41 = lean_box(0);
-x_1 = x_16;
-x_2 = x_41;
-x_11 = x_40;
-goto _start;
-}
-else
-{
-lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; 
-lean_dec(x_20);
-x_43 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_43, 0, x_22);
-lean_ctor_set(x_43, 1, x_23);
-lean_ctor_set(x_43, 2, x_24);
-lean_ctor_set(x_43, 3, x_30);
-lean_ctor_set(x_43, 4, x_26);
-lean_ctor_set(x_43, 5, x_28);
-lean_ctor_set(x_43, 6, x_29);
-lean_ctor_set_uint8(x_43, sizeof(void*)*7, x_27);
-x_44 = lean_st_ref_set(x_3, x_43, x_21);
-x_45 = lean_ctor_get(x_44, 1);
-lean_inc(x_45);
-lean_dec(x_44);
-x_46 = lean_box(0);
-x_1 = x_16;
-x_2 = x_46;
-x_11 = x_45;
-goto _start;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents(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:
-{
-lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; 
-x_11 = l_Lean_Meta_Grind_getParentsAndReset(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-x_12 = lean_ctor_get(x_11, 0);
-lean_inc(x_12);
-x_13 = lean_ctor_get(x_11, 1);
-lean_inc(x_13);
-lean_dec(x_11);
-x_14 = lean_box(0);
-lean_inc(x_12);
-x_15 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__4(x_12, x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
-x_16 = !lean_is_exclusive(x_15);
-if (x_16 == 0)
+lean_dec(x_4);
+lean_dec(x_3);
+x_29 = !lean_is_exclusive(x_25);
+if (x_29 == 0)
 {
-lean_object* x_17; 
-x_17 = lean_ctor_get(x_15, 0);
-lean_dec(x_17);
-lean_ctor_set(x_15, 0, x_12);
-return x_15;
+return x_25;
 }
 else
 {
-lean_object* x_18; lean_object* x_19; 
-x_18 = lean_ctor_get(x_15, 1);
-lean_inc(x_18);
-lean_dec(x_15);
-x_19 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_19, 0, x_12);
-lean_ctor_set(x_19, 1, x_18);
-return x_19;
+lean_object* x_30; lean_object* x_31; lean_object* x_32; 
+x_30 = lean_ctor_get(x_25, 0);
+x_31 = lean_ctor_get(x_25, 1);
+lean_inc(x_31);
+lean_inc(x_30);
+lean_dec(x_25);
+x_32 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_32, 0, x_30);
+lean_ctor_set(x_32, 1, x_31);
+return x_32;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Array_indexOfAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
-_start:
+else
 {
-lean_object* x_5; 
-x_5 = l_Array_indexOfAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__3(x_1, x_2, x_3, x_4);
-lean_dec(x_2);
-return x_5;
-}
+uint8_t x_33; 
+lean_dec(x_16);
+lean_dec(x_13);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_33 = !lean_is_exclusive(x_18);
+if (x_33 == 0)
+{
+return x_18;
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
-_start:
+else
 {
-size_t x_5; lean_object* x_6; 
-x_5 = lean_unbox_usize(x_3);
-lean_dec(x_3);
-x_6 = l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2(x_1, x_2, x_5, x_4);
-return x_6;
+lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_34 = lean_ctor_get(x_18, 0);
+x_35 = lean_ctor_get(x_18, 1);
+lean_inc(x_35);
+lean_inc(x_34);
+lean_dec(x_18);
+x_36 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_36, 0, x_34);
+lean_ctor_set(x_36, 1, x_35);
+return x_36;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__4___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, lean_object* x_10, lean_object* x_11) {
-_start:
+}
+else
 {
-lean_object* x_12; 
-x_12 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__4(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+uint8_t x_37; 
+lean_dec(x_13);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
@@ -7307,14 +1961,30 @@ lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
-return x_12;
+x_37 = !lean_is_exclusive(x_15);
+if (x_37 == 0)
+{
+return x_15;
+}
+else
+{
+lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+x_38 = lean_ctor_get(x_15, 0);
+x_39 = lean_ctor_get(x_15, 1);
+lean_inc(x_39);
+lean_inc(x_38);
+lean_dec(x_15);
+x_40 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_40, 0, x_38);
+lean_ctor_set(x_40, 1, x_39);
+return x_40;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___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, lean_object* x_10) {
-_start:
+}
+else
 {
-lean_object* x_11; 
-x_11 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+uint8_t x_41; 
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
@@ -7324,320 +1994,548 @@ lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-return x_11;
+x_41 = !lean_is_exclusive(x_12);
+if (x_41 == 0)
+{
+return x_12;
+}
+else
+{
+lean_object* x_42; lean_object* x_43; lean_object* x_44; 
+x_42 = lean_ctor_get(x_12, 0);
+x_43 = lean_ctor_get(x_12, 1);
+lean_inc(x_43);
+lean_inc(x_42);
+lean_dec(x_12);
+x_44 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_44, 0, x_42);
+lean_ctor_set(x_44, 1, x_43);
+return x_44;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents___spec__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, lean_object* x_11) {
+}
+}
+LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT___spec__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, lean_object* x_11, lean_object* x_12) {
 _start:
 {
-if (lean_obj_tag(x_1) == 0)
+if (lean_obj_tag(x_2) == 0)
 {
-lean_object* x_12; lean_object* x_13; 
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-x_12 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_12, 0, x_2);
-x_13 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_13, 0, x_12);
-lean_ctor_set(x_13, 1, x_11);
-return x_13;
+lean_object* x_13; lean_object* x_14; 
+lean_dec(x_1);
+x_13 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_13, 0, x_3);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_13);
+lean_ctor_set(x_14, 1, x_12);
+return x_14;
 }
 else
 {
-lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; 
-x_14 = lean_ctor_get(x_1, 0);
-lean_inc(x_14);
-x_15 = lean_ctor_get(x_1, 1);
+lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+x_15 = lean_ctor_get(x_2, 0);
 lean_inc(x_15);
-x_16 = lean_ctor_get(x_1, 3);
+x_16 = lean_ctor_get(x_2, 1);
 lean_inc(x_16);
+x_17 = lean_ctor_get(x_2, 3);
+lean_inc(x_17);
+lean_dec(x_2);
+lean_inc(x_1);
+x_18 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT___spec__1(x_1, x_15, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_18) == 0)
+{
+lean_object* x_19; 
+x_19 = lean_ctor_get(x_18, 0);
+lean_inc(x_19);
+if (lean_obj_tag(x_19) == 0)
+{
+uint8_t x_20; 
+lean_dec(x_17);
+lean_dec(x_16);
 lean_dec(x_1);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-x_17 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents___spec__1(x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-if (lean_obj_tag(x_17) == 0)
+x_20 = !lean_is_exclusive(x_18);
+if (x_20 == 0)
 {
-lean_object* x_18; 
-x_18 = lean_ctor_get(x_17, 0);
-lean_inc(x_18);
-if (lean_obj_tag(x_18) == 0)
+lean_object* x_21; 
+x_21 = lean_ctor_get(x_18, 0);
+lean_dec(x_21);
+return x_18;
+}
+else
+{
+lean_object* x_22; lean_object* x_23; 
+x_22 = lean_ctor_get(x_18, 1);
+lean_inc(x_22);
+lean_dec(x_18);
+x_23 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_23, 0, x_19);
+lean_ctor_set(x_23, 1, x_22);
+return x_23;
+}
+}
+else
+{
+lean_object* x_24; lean_object* x_25; 
+lean_dec(x_19);
+x_24 = lean_ctor_get(x_18, 1);
+lean_inc(x_24);
+lean_dec(x_18);
+lean_inc(x_16);
+x_25 = l_Lean_Meta_Grind_getENode(x_16, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_24);
+if (lean_obj_tag(x_25) == 0)
+{
+lean_object* x_26; lean_object* x_27; uint8_t x_28; 
+x_26 = lean_ctor_get(x_25, 0);
+lean_inc(x_26);
+x_27 = lean_ctor_get(x_25, 1);
+lean_inc(x_27);
+lean_dec(x_25);
+x_28 = !lean_is_exclusive(x_26);
+if (x_28 == 0)
+{
+lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; uint8_t x_39; 
+x_29 = lean_ctor_get(x_26, 0);
+x_30 = lean_ctor_get(x_26, 1);
+x_31 = lean_ctor_get(x_26, 2);
+x_32 = lean_ctor_get(x_26, 3);
+x_33 = lean_ctor_get(x_26, 4);
+x_34 = lean_ctor_get(x_26, 5);
+x_35 = lean_ctor_get(x_26, 6);
+x_36 = lean_ctor_get(x_26, 7);
+x_37 = lean_ctor_get(x_26, 8);
+x_38 = lean_ctor_get(x_26, 9);
+x_39 = lean_nat_dec_lt(x_38, x_1);
+lean_dec(x_38);
+if (x_39 == 0)
+{
+lean_object* x_40; 
+lean_free_object(x_26);
+lean_dec(x_37);
+lean_dec(x_36);
+lean_dec(x_35);
+lean_dec(x_34);
+lean_dec(x_33);
+lean_dec(x_32);
+lean_dec(x_31);
+lean_dec(x_30);
+lean_dec(x_29);
+lean_dec(x_16);
+x_40 = lean_box(0);
+x_2 = x_17;
+x_3 = x_40;
+x_12 = x_27;
+goto _start;
+}
+else
+{
+lean_object* x_42; lean_object* x_43; lean_object* x_44; 
+lean_inc(x_1);
+lean_ctor_set(x_26, 9, x_1);
+x_42 = l_Lean_Meta_Grind_setENode(x_16, x_26, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_27);
+x_43 = lean_ctor_get(x_42, 1);
+lean_inc(x_43);
+lean_dec(x_42);
+x_44 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT(x_16, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_43);
+lean_dec(x_16);
+if (lean_obj_tag(x_44) == 0)
+{
+lean_object* x_45; lean_object* x_46; 
+x_45 = lean_ctor_get(x_44, 1);
+lean_inc(x_45);
+lean_dec(x_44);
+x_46 = lean_box(0);
+x_2 = x_17;
+x_3 = x_46;
+x_12 = x_45;
+goto _start;
+}
+else
+{
+uint8_t x_48; 
+lean_dec(x_17);
+lean_dec(x_1);
+x_48 = !lean_is_exclusive(x_44);
+if (x_48 == 0)
+{
+return x_44;
+}
+else
+{
+lean_object* x_49; lean_object* x_50; lean_object* x_51; 
+x_49 = lean_ctor_get(x_44, 0);
+x_50 = lean_ctor_get(x_44, 1);
+lean_inc(x_50);
+lean_inc(x_49);
+lean_dec(x_44);
+x_51 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_51, 0, x_49);
+lean_ctor_set(x_51, 1, x_50);
+return x_51;
+}
+}
+}
+}
+else
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; uint8_t x_58; lean_object* x_59; uint8_t x_60; uint8_t x_61; uint8_t x_62; uint8_t x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; uint8_t x_67; 
+x_52 = lean_ctor_get(x_26, 0);
+x_53 = lean_ctor_get(x_26, 1);
+x_54 = lean_ctor_get(x_26, 2);
+x_55 = lean_ctor_get(x_26, 3);
+x_56 = lean_ctor_get(x_26, 4);
+x_57 = lean_ctor_get(x_26, 5);
+x_58 = lean_ctor_get_uint8(x_26, sizeof(void*)*10);
+x_59 = lean_ctor_get(x_26, 6);
+x_60 = lean_ctor_get_uint8(x_26, sizeof(void*)*10 + 1);
+x_61 = lean_ctor_get_uint8(x_26, sizeof(void*)*10 + 2);
+x_62 = lean_ctor_get_uint8(x_26, sizeof(void*)*10 + 3);
+x_63 = lean_ctor_get_uint8(x_26, sizeof(void*)*10 + 4);
+x_64 = lean_ctor_get(x_26, 7);
+x_65 = lean_ctor_get(x_26, 8);
+x_66 = lean_ctor_get(x_26, 9);
+lean_inc(x_66);
+lean_inc(x_65);
+lean_inc(x_64);
+lean_inc(x_59);
+lean_inc(x_57);
+lean_inc(x_56);
+lean_inc(x_55);
+lean_inc(x_54);
+lean_inc(x_53);
+lean_inc(x_52);
+lean_dec(x_26);
+x_67 = lean_nat_dec_lt(x_66, x_1);
+lean_dec(x_66);
+if (x_67 == 0)
+{
+lean_object* x_68; 
+lean_dec(x_65);
+lean_dec(x_64);
+lean_dec(x_59);
+lean_dec(x_57);
+lean_dec(x_56);
+lean_dec(x_55);
+lean_dec(x_54);
+lean_dec(x_53);
+lean_dec(x_52);
+lean_dec(x_16);
+x_68 = lean_box(0);
+x_2 = x_17;
+x_3 = x_68;
+x_12 = x_27;
+goto _start;
+}
+else
 {
-uint8_t x_19; 
+lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; 
+lean_inc(x_1);
+x_70 = lean_alloc_ctor(0, 10, 5);
+lean_ctor_set(x_70, 0, x_52);
+lean_ctor_set(x_70, 1, x_53);
+lean_ctor_set(x_70, 2, x_54);
+lean_ctor_set(x_70, 3, x_55);
+lean_ctor_set(x_70, 4, x_56);
+lean_ctor_set(x_70, 5, x_57);
+lean_ctor_set(x_70, 6, x_59);
+lean_ctor_set(x_70, 7, x_64);
+lean_ctor_set(x_70, 8, x_65);
+lean_ctor_set(x_70, 9, x_1);
+lean_ctor_set_uint8(x_70, sizeof(void*)*10, x_58);
+lean_ctor_set_uint8(x_70, sizeof(void*)*10 + 1, x_60);
+lean_ctor_set_uint8(x_70, sizeof(void*)*10 + 2, x_61);
+lean_ctor_set_uint8(x_70, sizeof(void*)*10 + 3, x_62);
+lean_ctor_set_uint8(x_70, sizeof(void*)*10 + 4, x_63);
+x_71 = l_Lean_Meta_Grind_setENode(x_16, x_70, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_27);
+x_72 = lean_ctor_get(x_71, 1);
+lean_inc(x_72);
+lean_dec(x_71);
+x_73 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT(x_16, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_72);
 lean_dec(x_16);
-lean_dec(x_15);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-x_19 = !lean_is_exclusive(x_17);
-if (x_19 == 0)
+if (lean_obj_tag(x_73) == 0)
 {
-lean_object* x_20; 
-x_20 = lean_ctor_get(x_17, 0);
-lean_dec(x_20);
-return x_17;
+lean_object* x_74; lean_object* x_75; 
+x_74 = lean_ctor_get(x_73, 1);
+lean_inc(x_74);
+lean_dec(x_73);
+x_75 = lean_box(0);
+x_2 = x_17;
+x_3 = x_75;
+x_12 = x_74;
+goto _start;
 }
 else
 {
-lean_object* x_21; lean_object* x_22; 
-x_21 = lean_ctor_get(x_17, 1);
-lean_inc(x_21);
+lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; 
 lean_dec(x_17);
-x_22 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_22, 0, x_18);
-lean_ctor_set(x_22, 1, x_21);
-return x_22;
+lean_dec(x_1);
+x_77 = lean_ctor_get(x_73, 0);
+lean_inc(x_77);
+x_78 = lean_ctor_get(x_73, 1);
+lean_inc(x_78);
+if (lean_is_exclusive(x_73)) {
+ lean_ctor_release(x_73, 0);
+ lean_ctor_release(x_73, 1);
+ x_79 = x_73;
+} else {
+ lean_dec_ref(x_73);
+ x_79 = lean_box(0);
+}
+if (lean_is_scalar(x_79)) {
+ x_80 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_80 = x_79;
+}
+lean_ctor_set(x_80, 0, x_77);
+lean_ctor_set(x_80, 1, x_78);
+return x_80;
+}
 }
 }
-else
-{
-lean_object* x_23; lean_object* x_24; 
-lean_dec(x_18);
-x_23 = lean_ctor_get(x_17, 1);
-lean_inc(x_23);
-lean_dec(x_17);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-x_24 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable(x_15, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_23);
-if (lean_obj_tag(x_24) == 0)
-{
-lean_object* x_25; lean_object* x_26; 
-x_25 = lean_ctor_get(x_24, 1);
-lean_inc(x_25);
-lean_dec(x_24);
-x_26 = lean_box(0);
-x_1 = x_16;
-x_2 = x_26;
-x_11 = x_25;
-goto _start;
 }
 else
 {
-uint8_t x_28; 
+uint8_t x_81; 
+lean_dec(x_17);
 lean_dec(x_16);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-x_28 = !lean_is_exclusive(x_24);
-if (x_28 == 0)
+lean_dec(x_1);
+x_81 = !lean_is_exclusive(x_25);
+if (x_81 == 0)
 {
-return x_24;
+return x_25;
 }
 else
 {
-lean_object* x_29; lean_object* x_30; lean_object* x_31; 
-x_29 = lean_ctor_get(x_24, 0);
-x_30 = lean_ctor_get(x_24, 1);
-lean_inc(x_30);
-lean_inc(x_29);
-lean_dec(x_24);
-x_31 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_31, 0, x_29);
-lean_ctor_set(x_31, 1, x_30);
-return x_31;
+lean_object* x_82; lean_object* x_83; lean_object* x_84; 
+x_82 = lean_ctor_get(x_25, 0);
+x_83 = lean_ctor_get(x_25, 1);
+lean_inc(x_83);
+lean_inc(x_82);
+lean_dec(x_25);
+x_84 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_84, 0, x_82);
+lean_ctor_set(x_84, 1, x_83);
+return x_84;
 }
 }
 }
 }
 else
 {
-uint8_t x_32; 
+uint8_t x_85; 
+lean_dec(x_17);
 lean_dec(x_16);
-lean_dec(x_15);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-x_32 = !lean_is_exclusive(x_17);
-if (x_32 == 0)
+lean_dec(x_1);
+x_85 = !lean_is_exclusive(x_18);
+if (x_85 == 0)
 {
-return x_17;
+return x_18;
 }
 else
 {
-lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_33 = lean_ctor_get(x_17, 0);
-x_34 = lean_ctor_get(x_17, 1);
-lean_inc(x_34);
-lean_inc(x_33);
-lean_dec(x_17);
-x_35 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_35, 0, x_33);
-lean_ctor_set(x_35, 1, x_34);
-return x_35;
+lean_object* x_86; lean_object* x_87; lean_object* x_88; 
+x_86 = lean_ctor_get(x_18, 0);
+x_87 = lean_ctor_get(x_18, 1);
+lean_inc(x_87);
+lean_inc(x_86);
+lean_dec(x_18);
+x_88 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_88, 0, x_86);
+lean_ctor_set(x_88, 1, x_87);
+return x_88;
 }
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents(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) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT(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:
 {
-lean_object* x_11; lean_object* x_12; 
-x_11 = lean_box(0);
-x_12 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents___spec__1(x_1, x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_12) == 0)
+lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_11 = lean_st_ref_get(x_2, x_10);
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+x_13 = lean_ctor_get(x_11, 1);
+lean_inc(x_13);
+lean_dec(x_11);
+x_14 = lean_ctor_get(x_12, 6);
+lean_inc(x_14);
+lean_dec(x_12);
+x_15 = l_Lean_Meta_Grind_getParents(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
+x_16 = lean_ctor_get(x_15, 0);
+lean_inc(x_16);
+x_17 = lean_ctor_get(x_15, 1);
+lean_inc(x_17);
+lean_dec(x_15);
+x_18 = lean_box(0);
+x_19 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT___spec__1(x_14, x_16, x_18, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_17);
+if (lean_obj_tag(x_19) == 0)
 {
-uint8_t x_13; 
-x_13 = !lean_is_exclusive(x_12);
-if (x_13 == 0)
+uint8_t x_20; 
+x_20 = !lean_is_exclusive(x_19);
+if (x_20 == 0)
 {
-lean_object* x_14; 
-x_14 = lean_ctor_get(x_12, 0);
-lean_dec(x_14);
-lean_ctor_set(x_12, 0, x_11);
-return x_12;
+lean_object* x_21; 
+x_21 = lean_ctor_get(x_19, 0);
+lean_dec(x_21);
+lean_ctor_set(x_19, 0, x_18);
+return x_19;
 }
 else
 {
-lean_object* x_15; lean_object* x_16; 
-x_15 = lean_ctor_get(x_12, 1);
-lean_inc(x_15);
-lean_dec(x_12);
-x_16 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_16, 0, x_11);
-lean_ctor_set(x_16, 1, x_15);
-return x_16;
+lean_object* x_22; lean_object* x_23; 
+x_22 = lean_ctor_get(x_19, 1);
+lean_inc(x_22);
+lean_dec(x_19);
+x_23 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_23, 0, x_18);
+lean_ctor_set(x_23, 1, x_22);
+return x_23;
 }
 }
 else
 {
-uint8_t x_17; 
-x_17 = !lean_is_exclusive(x_12);
-if (x_17 == 0)
+uint8_t x_24; 
+x_24 = !lean_is_exclusive(x_19);
+if (x_24 == 0)
 {
-return x_12;
+return x_19;
 }
 else
 {
-lean_object* x_18; lean_object* x_19; lean_object* x_20; 
-x_18 = lean_ctor_get(x_12, 0);
-x_19 = lean_ctor_get(x_12, 1);
-lean_inc(x_19);
-lean_inc(x_18);
-lean_dec(x_12);
-x_20 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_20, 0, x_18);
-lean_ctor_set(x_20, 1, x_19);
-return x_20;
+lean_object* x_25; lean_object* x_26; lean_object* x_27; 
+x_25 = lean_ctor_get(x_19, 0);
+x_26 = lean_ctor_get(x_19, 1);
+lean_inc(x_26);
+lean_inc(x_25);
+lean_dec(x_19);
+x_27 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_27, 0, x_25);
+lean_ctor_set(x_27, 1, x_26);
+return x_27;
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents___spec__1___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, lean_object* x_10, lean_object* x_11) {
+LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT___spec__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
 _start:
 {
-lean_object* x_12; 
-x_12 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_object* x_13; 
+x_13 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
 lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
-lean_dec(x_3);
-return x_12;
+return x_13;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents___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, lean_object* x_10) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT___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, lean_object* x_10) {
 _start:
 {
 lean_object* x_11; 
-x_11 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+x_11 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_11;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__1(lean_object* x_1, lean_object* x_2, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
 _start:
 {
-lean_object* x_15; 
-x_15 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(x_1, x_2, x_3, x_4, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-return x_15;
+lean_object* x_14; 
+x_14 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(x_1, x_2, x_3, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+return x_14;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2(lean_object* x_1, lean_object* x_2, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2(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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
 _start:
 {
-uint8_t x_15; 
-x_15 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_4);
-if (x_15 == 0)
+uint8_t x_14; 
+x_14 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_3);
+if (x_14 == 0)
 {
-lean_object* x_16; 
-x_16 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(x_1, x_2, x_3, x_4, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-return x_16;
+lean_object* x_15; 
+x_15 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(x_1, x_2, x_3, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+return x_15;
 }
 else
 {
-lean_object* x_17; lean_object* x_18; 
-lean_dec(x_13);
+lean_object* x_16; lean_object* x_17; 
 lean_dec(x_12);
 lean_dec(x_11);
 lean_dec(x_10);
-lean_dec(x_4);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
 lean_dec(x_2);
-x_17 = lean_box(0);
-x_18 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_18, 0, x_17);
-lean_ctor_set(x_18, 1, x_14);
-return x_18;
+x_16 = lean_box(0);
+x_17 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_17, 0, x_16);
+lean_ctor_set(x_17, 1, x_13);
+return x_17;
 }
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(lean_object* x_1, lean_object* x_2, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(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, lean_object* x_11, lean_object* x_12) {
 _start:
 {
-lean_object* x_14; 
-lean_inc(x_4);
-x_14 = l_Lean_Meta_Grind_getENode(x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
-if (lean_obj_tag(x_14) == 0)
+lean_object* x_13; 
+lean_inc(x_3);
+x_13 = l_Lean_Meta_Grind_getENode(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
 {
-lean_object* x_15; lean_object* x_16; uint8_t x_17; 
-x_15 = lean_ctor_get(x_14, 0);
+lean_object* x_14; lean_object* x_15; uint8_t x_16; 
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_ctor_get(x_13, 1);
 lean_inc(x_15);
-x_16 = lean_ctor_get(x_14, 1);
-lean_inc(x_16);
-lean_dec(x_14);
-x_17 = !lean_is_exclusive(x_15);
-if (x_17 == 0)
+lean_dec(x_13);
+x_16 = !lean_is_exclusive(x_14);
+if (x_16 == 0)
 {
-lean_object* x_18; lean_object* x_19; lean_object* x_20; 
-x_18 = lean_ctor_get(x_15, 1);
-x_19 = lean_ctor_get(x_15, 2);
-lean_dec(x_19);
+lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; 
+x_17 = lean_ctor_get(x_14, 1);
+x_18 = lean_ctor_get(x_14, 2);
+lean_dec(x_18);
 lean_inc(x_2);
-lean_inc(x_18);
-lean_ctor_set(x_15, 2, x_2);
-x_20 = l_Lean_Meta_Grind_setENode(x_4, x_15, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_16);
-if (x_3 == 0)
-{
-lean_object* x_21; lean_object* x_22; lean_object* x_23; 
-lean_dec(x_4);
-x_21 = lean_ctor_get(x_20, 1);
-lean_inc(x_21);
-lean_dec(x_20);
-x_22 = lean_box(0);
-x_23 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2(x_1, x_2, x_3, x_18, x_22, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_21);
-return x_23;
-}
-else
+lean_inc(x_17);
+lean_ctor_set(x_14, 2, x_2);
+x_19 = l_Lean_Meta_Grind_setENode(x_3, x_14, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_15);
+x_20 = lean_ctor_get(x_19, 1);
+lean_inc(x_20);
+lean_dec(x_19);
+x_21 = l_Lean_Meta_Grind_isInconsistent(x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_20);
+x_22 = lean_ctor_get(x_21, 0);
+lean_inc(x_22);
+x_23 = lean_unbox(x_22);
+lean_dec(x_22);
+if (x_23 == 0)
 {
 lean_object* x_24; lean_object* x_25; 
-x_24 = lean_ctor_get(x_20, 1);
+x_24 = lean_ctor_get(x_21, 1);
 lean_inc(x_24);
-lean_dec(x_20);
-lean_inc(x_12);
+lean_dec(x_21);
 lean_inc(x_11);
 lean_inc(x_10);
 lean_inc(x_9);
-x_25 = l_Lean_Meta_Grind_propagateConnectivesDown(x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_24);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_25 = l_Lean_Meta_Grind_propagateDown(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_24);
 if (lean_obj_tag(x_25) == 0)
 {
 lean_object* x_26; lean_object* x_27; lean_object* x_28; 
@@ -7646,18 +2544,22 @@ lean_inc(x_26);
 x_27 = lean_ctor_get(x_25, 1);
 lean_inc(x_27);
 lean_dec(x_25);
-x_28 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2(x_1, x_2, x_3, x_18, x_26, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_27);
+x_28 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2(x_1, x_2, x_17, x_26, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_27);
 lean_dec(x_26);
 return x_28;
 }
 else
 {
 uint8_t x_29; 
-lean_dec(x_18);
-lean_dec(x_12);
+lean_dec(x_17);
 lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
 lean_dec(x_2);
 x_29 = !lean_is_exclusive(x_25);
 if (x_29 == 0)
@@ -7679,219 +2581,218 @@ return x_32;
 }
 }
 }
+else
+{
+lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+lean_dec(x_3);
+x_33 = lean_ctor_get(x_21, 1);
+lean_inc(x_33);
+lean_dec(x_21);
+x_34 = lean_box(0);
+x_35 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2(x_1, x_2, x_17, x_34, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_33);
+return x_35;
+}
 }
 else
 {
-lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; uint8_t x_38; lean_object* x_39; uint8_t x_40; uint8_t x_41; uint8_t x_42; uint8_t x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; 
-x_33 = lean_ctor_get(x_15, 0);
-x_34 = lean_ctor_get(x_15, 1);
-x_35 = lean_ctor_get(x_15, 3);
-x_36 = lean_ctor_get(x_15, 4);
-x_37 = lean_ctor_get(x_15, 5);
-x_38 = lean_ctor_get_uint8(x_15, sizeof(void*)*10);
-x_39 = lean_ctor_get(x_15, 6);
-x_40 = lean_ctor_get_uint8(x_15, sizeof(void*)*10 + 1);
-x_41 = lean_ctor_get_uint8(x_15, sizeof(void*)*10 + 2);
-x_42 = lean_ctor_get_uint8(x_15, sizeof(void*)*10 + 3);
-x_43 = lean_ctor_get_uint8(x_15, sizeof(void*)*10 + 4);
-x_44 = lean_ctor_get(x_15, 7);
-x_45 = lean_ctor_get(x_15, 8);
-x_46 = lean_ctor_get(x_15, 9);
-lean_inc(x_46);
-lean_inc(x_45);
-lean_inc(x_44);
+lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; uint8_t x_41; lean_object* x_42; uint8_t x_43; uint8_t x_44; uint8_t x_45; uint8_t x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; uint8_t x_55; 
+x_36 = lean_ctor_get(x_14, 0);
+x_37 = lean_ctor_get(x_14, 1);
+x_38 = lean_ctor_get(x_14, 3);
+x_39 = lean_ctor_get(x_14, 4);
+x_40 = lean_ctor_get(x_14, 5);
+x_41 = lean_ctor_get_uint8(x_14, sizeof(void*)*10);
+x_42 = lean_ctor_get(x_14, 6);
+x_43 = lean_ctor_get_uint8(x_14, sizeof(void*)*10 + 1);
+x_44 = lean_ctor_get_uint8(x_14, sizeof(void*)*10 + 2);
+x_45 = lean_ctor_get_uint8(x_14, sizeof(void*)*10 + 3);
+x_46 = lean_ctor_get_uint8(x_14, sizeof(void*)*10 + 4);
+x_47 = lean_ctor_get(x_14, 7);
+x_48 = lean_ctor_get(x_14, 8);
+x_49 = lean_ctor_get(x_14, 9);
+lean_inc(x_49);
+lean_inc(x_48);
+lean_inc(x_47);
+lean_inc(x_42);
+lean_inc(x_40);
 lean_inc(x_39);
+lean_inc(x_38);
 lean_inc(x_37);
 lean_inc(x_36);
-lean_inc(x_35);
-lean_inc(x_34);
-lean_inc(x_33);
-lean_dec(x_15);
+lean_dec(x_14);
 lean_inc(x_2);
-lean_inc(x_34);
-x_47 = lean_alloc_ctor(0, 10, 5);
-lean_ctor_set(x_47, 0, x_33);
-lean_ctor_set(x_47, 1, x_34);
-lean_ctor_set(x_47, 2, x_2);
-lean_ctor_set(x_47, 3, x_35);
-lean_ctor_set(x_47, 4, x_36);
-lean_ctor_set(x_47, 5, x_37);
-lean_ctor_set(x_47, 6, x_39);
-lean_ctor_set(x_47, 7, x_44);
-lean_ctor_set(x_47, 8, x_45);
-lean_ctor_set(x_47, 9, x_46);
-lean_ctor_set_uint8(x_47, sizeof(void*)*10, x_38);
-lean_ctor_set_uint8(x_47, sizeof(void*)*10 + 1, x_40);
-lean_ctor_set_uint8(x_47, sizeof(void*)*10 + 2, x_41);
-lean_ctor_set_uint8(x_47, sizeof(void*)*10 + 3, x_42);
-lean_ctor_set_uint8(x_47, sizeof(void*)*10 + 4, x_43);
-x_48 = l_Lean_Meta_Grind_setENode(x_4, x_47, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_16);
-if (x_3 == 0)
-{
-lean_object* x_49; lean_object* x_50; lean_object* x_51; 
-lean_dec(x_4);
-x_49 = lean_ctor_get(x_48, 1);
-lean_inc(x_49);
-lean_dec(x_48);
-x_50 = lean_box(0);
-x_51 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2(x_1, x_2, x_3, x_34, x_50, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_49);
-return x_51;
-}
-else
-{
-lean_object* x_52; lean_object* x_53; 
-x_52 = lean_ctor_get(x_48, 1);
+lean_inc(x_37);
+x_50 = lean_alloc_ctor(0, 10, 5);
+lean_ctor_set(x_50, 0, x_36);
+lean_ctor_set(x_50, 1, x_37);
+lean_ctor_set(x_50, 2, x_2);
+lean_ctor_set(x_50, 3, x_38);
+lean_ctor_set(x_50, 4, x_39);
+lean_ctor_set(x_50, 5, x_40);
+lean_ctor_set(x_50, 6, x_42);
+lean_ctor_set(x_50, 7, x_47);
+lean_ctor_set(x_50, 8, x_48);
+lean_ctor_set(x_50, 9, x_49);
+lean_ctor_set_uint8(x_50, sizeof(void*)*10, x_41);
+lean_ctor_set_uint8(x_50, sizeof(void*)*10 + 1, x_43);
+lean_ctor_set_uint8(x_50, sizeof(void*)*10 + 2, x_44);
+lean_ctor_set_uint8(x_50, sizeof(void*)*10 + 3, x_45);
+lean_ctor_set_uint8(x_50, sizeof(void*)*10 + 4, x_46);
+x_51 = l_Lean_Meta_Grind_setENode(x_3, x_50, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_15);
+x_52 = lean_ctor_get(x_51, 1);
 lean_inc(x_52);
-lean_dec(x_48);
-lean_inc(x_12);
+lean_dec(x_51);
+x_53 = l_Lean_Meta_Grind_isInconsistent(x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_52);
+x_54 = lean_ctor_get(x_53, 0);
+lean_inc(x_54);
+x_55 = lean_unbox(x_54);
+lean_dec(x_54);
+if (x_55 == 0)
+{
+lean_object* x_56; lean_object* x_57; 
+x_56 = lean_ctor_get(x_53, 1);
+lean_inc(x_56);
+lean_dec(x_53);
 lean_inc(x_11);
 lean_inc(x_10);
 lean_inc(x_9);
-x_53 = l_Lean_Meta_Grind_propagateConnectivesDown(x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_52);
-if (lean_obj_tag(x_53) == 0)
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_57 = l_Lean_Meta_Grind_propagateDown(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_56);
+if (lean_obj_tag(x_57) == 0)
 {
-lean_object* x_54; lean_object* x_55; lean_object* x_56; 
-x_54 = lean_ctor_get(x_53, 0);
-lean_inc(x_54);
-x_55 = lean_ctor_get(x_53, 1);
-lean_inc(x_55);
-lean_dec(x_53);
-x_56 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2(x_1, x_2, x_3, x_34, x_54, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_55);
-lean_dec(x_54);
-return x_56;
+lean_object* x_58; lean_object* x_59; lean_object* x_60; 
+x_58 = lean_ctor_get(x_57, 0);
+lean_inc(x_58);
+x_59 = lean_ctor_get(x_57, 1);
+lean_inc(x_59);
+lean_dec(x_57);
+x_60 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2(x_1, x_2, x_37, x_58, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_59);
+lean_dec(x_58);
+return x_60;
 }
 else
 {
-lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; 
-lean_dec(x_34);
-lean_dec(x_12);
+lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; 
+lean_dec(x_37);
 lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
 lean_dec(x_2);
-x_57 = lean_ctor_get(x_53, 0);
-lean_inc(x_57);
-x_58 = lean_ctor_get(x_53, 1);
-lean_inc(x_58);
-if (lean_is_exclusive(x_53)) {
- lean_ctor_release(x_53, 0);
- lean_ctor_release(x_53, 1);
- x_59 = x_53;
+x_61 = lean_ctor_get(x_57, 0);
+lean_inc(x_61);
+x_62 = lean_ctor_get(x_57, 1);
+lean_inc(x_62);
+if (lean_is_exclusive(x_57)) {
+ lean_ctor_release(x_57, 0);
+ lean_ctor_release(x_57, 1);
+ x_63 = x_57;
 } else {
- lean_dec_ref(x_53);
- x_59 = lean_box(0);
+ lean_dec_ref(x_57);
+ x_63 = lean_box(0);
 }
-if (lean_is_scalar(x_59)) {
- x_60 = lean_alloc_ctor(1, 2, 0);
+if (lean_is_scalar(x_63)) {
+ x_64 = lean_alloc_ctor(1, 2, 0);
 } else {
- x_60 = x_59;
+ x_64 = x_63;
 }
-lean_ctor_set(x_60, 0, x_57);
-lean_ctor_set(x_60, 1, x_58);
-return x_60;
+lean_ctor_set(x_64, 0, x_61);
+lean_ctor_set(x_64, 1, x_62);
+return x_64;
 }
 }
+else
+{
+lean_object* x_65; lean_object* x_66; lean_object* x_67; 
+lean_dec(x_3);
+x_65 = lean_ctor_get(x_53, 1);
+lean_inc(x_65);
+lean_dec(x_53);
+x_66 = lean_box(0);
+x_67 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2(x_1, x_2, x_37, x_66, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_65);
+return x_67;
+}
 }
 }
 else
 {
-uint8_t x_61; 
-lean_dec(x_12);
+uint8_t x_68; 
 lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
 lean_dec(x_4);
+lean_dec(x_3);
 lean_dec(x_2);
-x_61 = !lean_is_exclusive(x_14);
-if (x_61 == 0)
+x_68 = !lean_is_exclusive(x_13);
+if (x_68 == 0)
 {
-return x_14;
+return x_13;
 }
 else
 {
-lean_object* x_62; lean_object* x_63; lean_object* x_64; 
-x_62 = lean_ctor_get(x_14, 0);
-x_63 = lean_ctor_get(x_14, 1);
-lean_inc(x_63);
-lean_inc(x_62);
-lean_dec(x_14);
-x_64 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_64, 0, x_62);
-lean_ctor_set(x_64, 1, x_63);
-return x_64;
-}
-}
+lean_object* x_69; lean_object* x_70; lean_object* x_71; 
+x_69 = lean_ctor_get(x_13, 0);
+x_70 = lean_ctor_get(x_13, 1);
+lean_inc(x_70);
+lean_inc(x_69);
+lean_dec(x_13);
+x_71 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_71, 0, x_69);
+lean_ctor_set(x_71, 1, x_70);
+return x_71;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
-_start:
-{
-uint8_t x_15; lean_object* x_16; 
-x_15 = lean_unbox(x_3);
-lean_dec(x_3);
-x_16 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__1(x_1, x_2, x_15, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_1);
-return x_16;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
 _start:
 {
-uint8_t x_15; lean_object* x_16; 
-x_15 = lean_unbox(x_3);
-lean_dec(x_3);
-x_16 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2(x_1, x_2, x_15, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
+lean_object* x_14; 
+x_14 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_4);
 lean_dec(x_1);
-return x_16;
+return x_14;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
 _start:
 {
-uint8_t x_14; lean_object* x_15; 
-x_14 = lean_unbox(x_3);
-lean_dec(x_3);
-x_15 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(x_1, x_2, x_14, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
+lean_object* x_14; 
+x_14 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_4);
 lean_dec(x_1);
-return x_15;
+return x_14;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots(lean_object* x_1, lean_object* x_2, uint8_t 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, lean_object* x_11, lean_object* x_12) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
 _start:
 {
 lean_object* x_13; 
-lean_inc(x_1);
-x_13 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(x_1, x_2, x_3, x_1, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+x_13 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
 lean_dec(x_1);
 return x_13;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots(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, lean_object* x_11) {
 _start:
 {
-uint8_t x_13; lean_object* x_14; 
-x_13 = lean_unbox(x_3);
-lean_dec(x_3);
-x_14 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots(x_1, x_2, x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-return x_14;
+lean_object* x_12; 
+lean_inc(x_1);
+x_12 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(x_1, x_2, x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_1);
+return x_12;
 }
 }
 LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___spec__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, lean_object* x_11) {
@@ -7904,6 +2805,10 @@ lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
 x_12 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_12, 0, x_2);
 x_13 = lean_alloc_ctor(0, 2, 0);
@@ -7925,6 +2830,10 @@ lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
 x_17 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___spec__1(x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
 if (lean_obj_tag(x_17) == 0)
 {
@@ -7940,6 +2849,10 @@ lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
 x_19 = !lean_is_exclusive(x_17);
 if (x_19 == 0)
 {
@@ -7971,7 +2884,11 @@ lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
-x_24 = l_Lean_Meta_Grind_propagateConectivesUp(x_15, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_23);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_24 = l_Lean_Meta_Grind_propagateUp(x_15, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_23);
 if (lean_obj_tag(x_24) == 0)
 {
 lean_object* x_25; lean_object* x_26; 
@@ -7992,6 +2909,10 @@ lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
 x_28 = !lean_is_exclusive(x_24);
 if (x_28 == 0)
 {
@@ -8022,565 +2943,561 @@ lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
 x_32 = !lean_is_exclusive(x_17);
 if (x_32 == 0)
 {
-return x_17;
+return x_17;
+}
+else
+{
+lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_33 = lean_ctor_get(x_17, 0);
+x_34 = lean_ctor_get(x_17, 1);
+lean_inc(x_34);
+lean_inc(x_33);
+lean_dec(x_17);
+x_35 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_35, 0, x_33);
+lean_ctor_set(x_35, 1, x_34);
+return x_35;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_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, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; lean_object* x_13; uint8_t x_14; 
+x_12 = l_Lean_Meta_Grind_isInconsistent(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+x_13 = lean_ctor_get(x_12, 0);
+lean_inc(x_13);
+x_14 = lean_unbox(x_13);
+lean_dec(x_13);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; 
+x_15 = lean_ctor_get(x_12, 1);
+lean_inc(x_15);
+lean_dec(x_12);
+x_16 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_updateMT(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_15);
+return x_16;
+}
+else
+{
+uint8_t x_17; 
+x_17 = !lean_is_exclusive(x_12);
+if (x_17 == 0)
+{
+lean_object* x_18; lean_object* x_19; 
+x_18 = lean_ctor_get(x_12, 0);
+lean_dec(x_18);
+x_19 = lean_box(0);
+lean_ctor_set(x_12, 0, x_19);
+return x_12;
 }
 else
 {
-lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_33 = lean_ctor_get(x_17, 0);
-x_34 = lean_ctor_get(x_17, 1);
-lean_inc(x_34);
-lean_inc(x_33);
-lean_dec(x_17);
-x_35 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_35, 0, x_33);
-lean_ctor_set(x_35, 1, x_34);
-return x_35;
-}
+lean_object* x_20; lean_object* x_21; lean_object* x_22; 
+x_20 = lean_ctor_get(x_12, 1);
+lean_inc(x_20);
+lean_dec(x_12);
+x_21 = lean_box(0);
+x_22 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_22, 0, x_21);
+lean_ctor_set(x_22, 1, x_20);
+return x_22;
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_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, lean_object* x_7, uint8_t x_8, uint8_t x_9, uint8_t x_10, uint8_t x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18, lean_object* x_19, lean_object* x_20, lean_object* x_21) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(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, uint8_t x_8, uint8_t x_9, uint8_t x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18, lean_object* x_19, lean_object* x_20) {
 _start:
 {
-lean_object* x_22; 
-lean_inc(x_20);
+lean_object* x_21; 
 lean_inc(x_19);
 lean_inc(x_18);
 lean_inc(x_17);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
 lean_inc(x_1);
-x_22 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents(x_1, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_21);
-if (lean_obj_tag(x_22) == 0)
+x_21 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_reinsertParents(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
+if (lean_obj_tag(x_21) == 0)
 {
-lean_object* x_23; lean_object* x_24; 
-x_23 = lean_ctor_get(x_22, 1);
-lean_inc(x_23);
-lean_dec(x_22);
-x_24 = l_Lean_Meta_Grind_getENode(x_2, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_23);
-if (lean_obj_tag(x_24) == 0)
+lean_object* x_22; lean_object* x_23; 
+x_22 = lean_ctor_get(x_21, 1);
+lean_inc(x_22);
+lean_dec(x_21);
+x_23 = l_Lean_Meta_Grind_getENode(x_2, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_22);
+if (lean_obj_tag(x_23) == 0)
 {
-lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; uint8_t x_32; lean_object* x_33; uint8_t x_34; uint8_t x_35; uint8_t x_36; uint8_t x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; uint8_t x_42; 
-x_25 = lean_ctor_get(x_24, 0);
+lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; uint8_t x_31; lean_object* x_32; uint8_t x_33; uint8_t x_34; uint8_t x_35; uint8_t x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; uint8_t x_41; 
+x_24 = lean_ctor_get(x_23, 0);
+lean_inc(x_24);
+x_25 = lean_ctor_get(x_23, 1);
 lean_inc(x_25);
-x_26 = lean_ctor_get(x_24, 1);
+lean_dec(x_23);
+x_26 = lean_ctor_get(x_24, 0);
 lean_inc(x_26);
-lean_dec(x_24);
-x_27 = lean_ctor_get(x_25, 0);
+x_27 = lean_ctor_get(x_24, 2);
 lean_inc(x_27);
-x_28 = lean_ctor_get(x_25, 2);
+x_28 = lean_ctor_get(x_24, 3);
 lean_inc(x_28);
-x_29 = lean_ctor_get(x_25, 3);
+x_29 = lean_ctor_get(x_24, 4);
 lean_inc(x_29);
-x_30 = lean_ctor_get(x_25, 4);
+x_30 = lean_ctor_get(x_24, 5);
 lean_inc(x_30);
-x_31 = lean_ctor_get(x_25, 5);
-lean_inc(x_31);
-x_32 = lean_ctor_get_uint8(x_25, sizeof(void*)*10);
-x_33 = lean_ctor_get(x_25, 6);
-lean_inc(x_33);
-x_34 = lean_ctor_get_uint8(x_25, sizeof(void*)*10 + 1);
-x_35 = lean_ctor_get_uint8(x_25, sizeof(void*)*10 + 2);
-x_36 = lean_ctor_get_uint8(x_25, sizeof(void*)*10 + 3);
-x_37 = lean_ctor_get_uint8(x_25, sizeof(void*)*10 + 4);
-x_38 = lean_ctor_get(x_25, 7);
+x_31 = lean_ctor_get_uint8(x_24, sizeof(void*)*10);
+x_32 = lean_ctor_get(x_24, 6);
+lean_inc(x_32);
+x_33 = lean_ctor_get_uint8(x_24, sizeof(void*)*10 + 1);
+x_34 = lean_ctor_get_uint8(x_24, sizeof(void*)*10 + 2);
+x_35 = lean_ctor_get_uint8(x_24, sizeof(void*)*10 + 3);
+x_36 = lean_ctor_get_uint8(x_24, sizeof(void*)*10 + 4);
+x_37 = lean_ctor_get(x_24, 7);
+lean_inc(x_37);
+x_38 = lean_ctor_get(x_24, 8);
 lean_inc(x_38);
-x_39 = lean_ctor_get(x_25, 8);
+x_39 = lean_ctor_get(x_24, 9);
 lean_inc(x_39);
-x_40 = lean_ctor_get(x_25, 9);
-lean_inc(x_40);
-if (lean_is_exclusive(x_25)) {
- lean_ctor_release(x_25, 0);
- lean_ctor_release(x_25, 1);
- lean_ctor_release(x_25, 2);
- lean_ctor_release(x_25, 3);
- lean_ctor_release(x_25, 4);
- lean_ctor_release(x_25, 5);
- lean_ctor_release(x_25, 6);
- lean_ctor_release(x_25, 7);
- lean_ctor_release(x_25, 8);
- lean_ctor_release(x_25, 9);
- x_41 = x_25;
+if (lean_is_exclusive(x_24)) {
+ lean_ctor_release(x_24, 0);
+ lean_ctor_release(x_24, 1);
+ lean_ctor_release(x_24, 2);
+ lean_ctor_release(x_24, 3);
+ lean_ctor_release(x_24, 4);
+ lean_ctor_release(x_24, 5);
+ lean_ctor_release(x_24, 6);
+ lean_ctor_release(x_24, 7);
+ lean_ctor_release(x_24, 8);
+ lean_ctor_release(x_24, 9);
+ x_40 = x_24;
 } else {
- lean_dec_ref(x_25);
- x_41 = lean_box(0);
+ lean_dec_ref(x_24);
+ x_40 = lean_box(0);
 }
-x_42 = !lean_is_exclusive(x_3);
-if (x_42 == 0)
+x_41 = !lean_is_exclusive(x_3);
+if (x_41 == 0)
 {
-lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; uint8_t x_48; lean_object* x_49; uint8_t x_50; uint8_t x_51; uint8_t x_52; uint8_t x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; uint8_t x_60; 
-x_43 = lean_ctor_get(x_3, 0);
-x_44 = lean_ctor_get(x_3, 2);
-x_45 = lean_ctor_get(x_3, 3);
-x_46 = lean_ctor_get(x_3, 4);
-x_47 = lean_ctor_get(x_3, 5);
-x_48 = lean_ctor_get_uint8(x_3, sizeof(void*)*10);
-x_49 = lean_ctor_get(x_3, 6);
-x_50 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 1);
-x_51 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 2);
-x_52 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 3);
-x_53 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 4);
-x_54 = lean_ctor_get(x_3, 7);
-x_55 = lean_ctor_get(x_3, 8);
-x_56 = lean_ctor_get(x_3, 9);
-lean_ctor_set(x_3, 9, x_40);
-lean_ctor_set(x_3, 8, x_39);
-lean_ctor_set(x_3, 7, x_38);
-lean_ctor_set(x_3, 6, x_33);
-lean_ctor_set(x_3, 5, x_31);
-lean_ctor_set(x_3, 4, x_30);
-lean_ctor_set(x_3, 3, x_29);
-lean_ctor_set(x_3, 2, x_28);
-lean_ctor_set(x_3, 0, x_27);
-lean_ctor_set_uint8(x_3, sizeof(void*)*10, x_32);
-lean_ctor_set_uint8(x_3, sizeof(void*)*10 + 1, x_34);
-lean_ctor_set_uint8(x_3, sizeof(void*)*10 + 2, x_35);
-lean_ctor_set_uint8(x_3, sizeof(void*)*10 + 3, x_36);
-lean_ctor_set_uint8(x_3, sizeof(void*)*10 + 4, x_37);
-x_57 = l_Lean_Meta_Grind_setENode(x_4, x_3, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_26);
-x_58 = lean_ctor_get(x_57, 1);
-lean_inc(x_58);
-lean_dec(x_57);
-x_59 = lean_nat_add(x_49, x_5);
-lean_dec(x_49);
-if (x_52 == 0)
+lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; uint8_t x_47; lean_object* x_48; uint8_t x_49; uint8_t x_50; uint8_t x_51; uint8_t x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; uint8_t x_59; 
+x_42 = lean_ctor_get(x_3, 0);
+x_43 = lean_ctor_get(x_3, 2);
+x_44 = lean_ctor_get(x_3, 3);
+x_45 = lean_ctor_get(x_3, 4);
+x_46 = lean_ctor_get(x_3, 5);
+x_47 = lean_ctor_get_uint8(x_3, sizeof(void*)*10);
+x_48 = lean_ctor_get(x_3, 6);
+x_49 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 1);
+x_50 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 2);
+x_51 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 3);
+x_52 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 4);
+x_53 = lean_ctor_get(x_3, 7);
+x_54 = lean_ctor_get(x_3, 8);
+x_55 = lean_ctor_get(x_3, 9);
+lean_ctor_set(x_3, 9, x_39);
+lean_ctor_set(x_3, 8, x_38);
+lean_ctor_set(x_3, 7, x_37);
+lean_ctor_set(x_3, 6, x_32);
+lean_ctor_set(x_3, 5, x_30);
+lean_ctor_set(x_3, 4, x_29);
+lean_ctor_set(x_3, 3, x_28);
+lean_ctor_set(x_3, 2, x_27);
+lean_ctor_set(x_3, 0, x_26);
+lean_ctor_set_uint8(x_3, sizeof(void*)*10, x_31);
+lean_ctor_set_uint8(x_3, sizeof(void*)*10 + 1, x_33);
+lean_ctor_set_uint8(x_3, sizeof(void*)*10 + 2, x_34);
+lean_ctor_set_uint8(x_3, sizeof(void*)*10 + 3, x_35);
+lean_ctor_set_uint8(x_3, sizeof(void*)*10 + 4, x_36);
+x_56 = l_Lean_Meta_Grind_setENode(x_4, x_3, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_25);
+x_57 = lean_ctor_get(x_56, 1);
+lean_inc(x_57);
+lean_dec(x_56);
+x_58 = lean_nat_add(x_48, x_5);
+lean_dec(x_48);
+if (x_51 == 0)
 {
-x_60 = x_11;
-goto block_96;
+x_59 = x_10;
+goto block_84;
 }
 else
 {
-uint8_t x_97; 
-x_97 = 1;
-x_60 = x_97;
-goto block_96;
+uint8_t x_85; 
+x_85 = 1;
+x_59 = x_85;
+goto block_84;
 }
-block_96:
+block_84:
 {
-uint8_t x_61; 
-if (x_9 == 0)
+uint8_t x_60; 
+if (x_8 == 0)
 {
-if (x_53 == 0)
+if (x_52 == 0)
 {
-x_61 = x_10;
-goto block_93;
+x_60 = x_9;
+goto block_81;
 }
 else
 {
-uint8_t x_94; 
-x_94 = 1;
-x_61 = x_94;
-goto block_93;
+uint8_t x_82; 
+x_82 = 1;
+x_60 = x_82;
+goto block_81;
 }
 }
 else
 {
-uint8_t x_95; 
-x_95 = 1;
-x_61 = x_95;
-goto block_93;
+uint8_t x_83; 
+x_83 = 1;
+x_60 = x_83;
+goto block_81;
 }
-block_93:
+block_81:
 {
-lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; uint8_t x_69; 
-if (lean_is_scalar(x_41)) {
- x_62 = lean_alloc_ctor(0, 10, 5);
+lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; uint8_t x_68; 
+lean_inc(x_42);
+if (lean_is_scalar(x_40)) {
+ x_61 = lean_alloc_ctor(0, 10, 5);
 } else {
- x_62 = x_41;
-}
-lean_ctor_set(x_62, 0, x_43);
-lean_ctor_set(x_62, 1, x_6);
-lean_ctor_set(x_62, 2, x_44);
-lean_ctor_set(x_62, 3, x_45);
-lean_ctor_set(x_62, 4, x_46);
-lean_ctor_set(x_62, 5, x_47);
-lean_ctor_set(x_62, 6, x_59);
-lean_ctor_set(x_62, 7, x_54);
-lean_ctor_set(x_62, 8, x_55);
-lean_ctor_set(x_62, 9, x_56);
-lean_ctor_set_uint8(x_62, sizeof(void*)*10, x_48);
-lean_ctor_set_uint8(x_62, sizeof(void*)*10 + 1, x_50);
-lean_ctor_set_uint8(x_62, sizeof(void*)*10 + 2, x_51);
-lean_ctor_set_uint8(x_62, sizeof(void*)*10 + 3, x_60);
-lean_ctor_set_uint8(x_62, sizeof(void*)*10 + 4, x_61);
-x_63 = l_Lean_Meta_Grind_setENode(x_7, x_62, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_58);
-x_64 = lean_ctor_get(x_63, 1);
-lean_inc(x_64);
-lean_dec(x_63);
+ x_61 = x_40;
+}
+lean_ctor_set(x_61, 0, x_42);
+lean_ctor_set(x_61, 1, x_6);
+lean_ctor_set(x_61, 2, x_43);
+lean_ctor_set(x_61, 3, x_44);
+lean_ctor_set(x_61, 4, x_45);
+lean_ctor_set(x_61, 5, x_46);
+lean_ctor_set(x_61, 6, x_58);
+lean_ctor_set(x_61, 7, x_53);
+lean_ctor_set(x_61, 8, x_54);
+lean_ctor_set(x_61, 9, x_55);
+lean_ctor_set_uint8(x_61, sizeof(void*)*10, x_47);
+lean_ctor_set_uint8(x_61, sizeof(void*)*10 + 1, x_49);
+lean_ctor_set_uint8(x_61, sizeof(void*)*10 + 2, x_50);
+lean_ctor_set_uint8(x_61, sizeof(void*)*10 + 3, x_59);
+lean_ctor_set_uint8(x_61, sizeof(void*)*10 + 4, x_60);
+x_62 = l_Lean_Meta_Grind_setENode(x_7, x_61, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_57);
+x_63 = lean_ctor_get(x_62, 1);
+lean_inc(x_63);
+lean_dec(x_62);
 lean_inc(x_1);
-x_65 = l_Lean_Meta_Grind_copyParentsTo(x_1, x_7, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_64);
-x_66 = lean_ctor_get(x_65, 1);
-lean_inc(x_66);
-lean_dec(x_65);
-x_67 = l_Lean_Meta_Grind_isInconsistent(x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_66);
-x_68 = lean_ctor_get(x_67, 0);
-lean_inc(x_68);
-x_69 = lean_unbox(x_68);
-lean_dec(x_68);
-if (x_69 == 0)
+x_64 = l_Lean_Meta_Grind_copyParentsTo(x_1, x_7, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_63);
+x_65 = lean_ctor_get(x_64, 1);
+lean_inc(x_65);
+lean_dec(x_64);
+x_66 = l_Lean_Meta_Grind_isInconsistent(x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_65);
+x_67 = lean_ctor_get(x_66, 0);
+lean_inc(x_67);
+x_68 = lean_unbox(x_67);
+lean_dec(x_67);
+if (x_68 == 0)
 {
-if (x_8 == 0)
+lean_object* x_69; lean_object* x_70; lean_object* x_71; 
+x_69 = lean_ctor_get(x_66, 1);
+lean_inc(x_69);
+lean_dec(x_66);
+x_70 = lean_box(0);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+x_71 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___spec__1(x_1, x_70, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_69);
+if (lean_obj_tag(x_71) == 0)
 {
-uint8_t x_70; 
-lean_dec(x_20);
+lean_object* x_72; lean_object* x_73; 
+x_72 = lean_ctor_get(x_71, 1);
+lean_inc(x_72);
+lean_dec(x_71);
+x_73 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(x_42, x_70, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_72);
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
-lean_dec(x_1);
-x_70 = !lean_is_exclusive(x_67);
-if (x_70 == 0)
-{
-lean_object* x_71; lean_object* x_72; 
-x_71 = lean_ctor_get(x_67, 0);
-lean_dec(x_71);
-x_72 = lean_box(0);
-lean_ctor_set(x_67, 0, x_72);
-return x_67;
-}
-else
-{
-lean_object* x_73; lean_object* x_74; lean_object* x_75; 
-x_73 = lean_ctor_get(x_67, 1);
-lean_inc(x_73);
-lean_dec(x_67);
-x_74 = lean_box(0);
-x_75 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_75, 0, x_74);
-lean_ctor_set(x_75, 1, x_73);
-return x_75;
-}
-}
-else
-{
-lean_object* x_76; lean_object* x_77; lean_object* x_78; 
-x_76 = lean_ctor_get(x_67, 1);
-lean_inc(x_76);
-lean_dec(x_67);
-x_77 = lean_box(0);
-x_78 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___spec__1(x_1, x_77, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_76);
-if (lean_obj_tag(x_78) == 0)
-{
-uint8_t x_79; 
-x_79 = !lean_is_exclusive(x_78);
-if (x_79 == 0)
-{
-lean_object* x_80; 
-x_80 = lean_ctor_get(x_78, 0);
-lean_dec(x_80);
-lean_ctor_set(x_78, 0, x_77);
-return x_78;
-}
-else
-{
-lean_object* x_81; lean_object* x_82; 
-x_81 = lean_ctor_get(x_78, 1);
-lean_inc(x_81);
-lean_dec(x_78);
-x_82 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_82, 0, x_77);
-lean_ctor_set(x_82, 1, x_81);
-return x_82;
-}
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_42);
+return x_73;
 }
 else
 {
-uint8_t x_83; 
-x_83 = !lean_is_exclusive(x_78);
-if (x_83 == 0)
+uint8_t x_74; 
+lean_dec(x_42);
+lean_dec(x_19);
+lean_dec(x_18);
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+x_74 = !lean_is_exclusive(x_71);
+if (x_74 == 0)
 {
-return x_78;
+return x_71;
 }
 else
 {
-lean_object* x_84; lean_object* x_85; lean_object* x_86; 
-x_84 = lean_ctor_get(x_78, 0);
-x_85 = lean_ctor_get(x_78, 1);
-lean_inc(x_85);
-lean_inc(x_84);
-lean_dec(x_78);
-x_86 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_86, 0, x_84);
-lean_ctor_set(x_86, 1, x_85);
-return x_86;
-}
+lean_object* x_75; lean_object* x_76; lean_object* x_77; 
+x_75 = lean_ctor_get(x_71, 0);
+x_76 = lean_ctor_get(x_71, 1);
+lean_inc(x_76);
+lean_inc(x_75);
+lean_dec(x_71);
+x_77 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_77, 0, x_75);
+lean_ctor_set(x_77, 1, x_76);
+return x_77;
 }
 }
 }
 else
 {
-uint8_t x_87; 
-lean_dec(x_20);
+lean_object* x_78; lean_object* x_79; lean_object* x_80; 
+lean_dec(x_1);
+x_78 = lean_ctor_get(x_66, 1);
+lean_inc(x_78);
+lean_dec(x_66);
+x_79 = lean_box(0);
+x_80 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(x_42, x_79, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_78);
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
-lean_dec(x_1);
-x_87 = !lean_is_exclusive(x_67);
-if (x_87 == 0)
-{
-lean_object* x_88; lean_object* x_89; 
-x_88 = lean_ctor_get(x_67, 0);
-lean_dec(x_88);
-x_89 = lean_box(0);
-lean_ctor_set(x_67, 0, x_89);
-return x_67;
-}
-else
-{
-lean_object* x_90; lean_object* x_91; lean_object* x_92; 
-x_90 = lean_ctor_get(x_67, 1);
-lean_inc(x_90);
-lean_dec(x_67);
-x_91 = lean_box(0);
-x_92 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_92, 0, x_91);
-lean_ctor_set(x_92, 1, x_90);
-return x_92;
-}
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_42);
+return x_80;
 }
 }
 }
 }
 else
 {
-lean_object* x_98; lean_object* x_99; lean_object* x_100; lean_object* x_101; lean_object* x_102; lean_object* x_103; uint8_t x_104; lean_object* x_105; uint8_t x_106; uint8_t x_107; uint8_t x_108; uint8_t x_109; lean_object* x_110; lean_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; lean_object* x_115; lean_object* x_116; uint8_t x_117; 
-x_98 = lean_ctor_get(x_3, 0);
-x_99 = lean_ctor_get(x_3, 1);
-x_100 = lean_ctor_get(x_3, 2);
-x_101 = lean_ctor_get(x_3, 3);
-x_102 = lean_ctor_get(x_3, 4);
-x_103 = lean_ctor_get(x_3, 5);
-x_104 = lean_ctor_get_uint8(x_3, sizeof(void*)*10);
-x_105 = lean_ctor_get(x_3, 6);
-x_106 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 1);
-x_107 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 2);
-x_108 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 3);
-x_109 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 4);
-x_110 = lean_ctor_get(x_3, 7);
-x_111 = lean_ctor_get(x_3, 8);
-x_112 = lean_ctor_get(x_3, 9);
-lean_inc(x_112);
-lean_inc(x_111);
-lean_inc(x_110);
-lean_inc(x_105);
-lean_inc(x_103);
-lean_inc(x_102);
-lean_inc(x_101);
+lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; uint8_t x_92; lean_object* x_93; uint8_t x_94; uint8_t x_95; uint8_t x_96; uint8_t x_97; lean_object* x_98; lean_object* x_99; lean_object* x_100; lean_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; uint8_t x_105; 
+x_86 = lean_ctor_get(x_3, 0);
+x_87 = lean_ctor_get(x_3, 1);
+x_88 = lean_ctor_get(x_3, 2);
+x_89 = lean_ctor_get(x_3, 3);
+x_90 = lean_ctor_get(x_3, 4);
+x_91 = lean_ctor_get(x_3, 5);
+x_92 = lean_ctor_get_uint8(x_3, sizeof(void*)*10);
+x_93 = lean_ctor_get(x_3, 6);
+x_94 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 1);
+x_95 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 2);
+x_96 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 3);
+x_97 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 4);
+x_98 = lean_ctor_get(x_3, 7);
+x_99 = lean_ctor_get(x_3, 8);
+x_100 = lean_ctor_get(x_3, 9);
 lean_inc(x_100);
 lean_inc(x_99);
 lean_inc(x_98);
+lean_inc(x_93);
+lean_inc(x_91);
+lean_inc(x_90);
+lean_inc(x_89);
+lean_inc(x_88);
+lean_inc(x_87);
+lean_inc(x_86);
 lean_dec(x_3);
-x_113 = lean_alloc_ctor(0, 10, 5);
-lean_ctor_set(x_113, 0, x_27);
-lean_ctor_set(x_113, 1, x_99);
-lean_ctor_set(x_113, 2, x_28);
-lean_ctor_set(x_113, 3, x_29);
-lean_ctor_set(x_113, 4, x_30);
-lean_ctor_set(x_113, 5, x_31);
-lean_ctor_set(x_113, 6, x_33);
-lean_ctor_set(x_113, 7, x_38);
-lean_ctor_set(x_113, 8, x_39);
-lean_ctor_set(x_113, 9, x_40);
-lean_ctor_set_uint8(x_113, sizeof(void*)*10, x_32);
-lean_ctor_set_uint8(x_113, sizeof(void*)*10 + 1, x_34);
-lean_ctor_set_uint8(x_113, sizeof(void*)*10 + 2, x_35);
-lean_ctor_set_uint8(x_113, sizeof(void*)*10 + 3, x_36);
-lean_ctor_set_uint8(x_113, sizeof(void*)*10 + 4, x_37);
-x_114 = l_Lean_Meta_Grind_setENode(x_4, x_113, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_26);
-x_115 = lean_ctor_get(x_114, 1);
-lean_inc(x_115);
-lean_dec(x_114);
-x_116 = lean_nat_add(x_105, x_5);
-lean_dec(x_105);
-if (x_108 == 0)
+x_101 = lean_alloc_ctor(0, 10, 5);
+lean_ctor_set(x_101, 0, x_26);
+lean_ctor_set(x_101, 1, x_87);
+lean_ctor_set(x_101, 2, x_27);
+lean_ctor_set(x_101, 3, x_28);
+lean_ctor_set(x_101, 4, x_29);
+lean_ctor_set(x_101, 5, x_30);
+lean_ctor_set(x_101, 6, x_32);
+lean_ctor_set(x_101, 7, x_37);
+lean_ctor_set(x_101, 8, x_38);
+lean_ctor_set(x_101, 9, x_39);
+lean_ctor_set_uint8(x_101, sizeof(void*)*10, x_31);
+lean_ctor_set_uint8(x_101, sizeof(void*)*10 + 1, x_33);
+lean_ctor_set_uint8(x_101, sizeof(void*)*10 + 2, x_34);
+lean_ctor_set_uint8(x_101, sizeof(void*)*10 + 3, x_35);
+lean_ctor_set_uint8(x_101, sizeof(void*)*10 + 4, x_36);
+x_102 = l_Lean_Meta_Grind_setENode(x_4, x_101, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_25);
+x_103 = lean_ctor_get(x_102, 1);
+lean_inc(x_103);
+lean_dec(x_102);
+x_104 = lean_nat_add(x_93, x_5);
+lean_dec(x_93);
+if (x_96 == 0)
 {
-x_117 = x_11;
-goto block_148;
+x_105 = x_10;
+goto block_130;
 }
 else
 {
-uint8_t x_149; 
-x_149 = 1;
-x_117 = x_149;
-goto block_148;
+uint8_t x_131; 
+x_131 = 1;
+x_105 = x_131;
+goto block_130;
 }
-block_148:
+block_130:
 {
-uint8_t x_118; 
-if (x_9 == 0)
+uint8_t x_106; 
+if (x_8 == 0)
 {
-if (x_109 == 0)
+if (x_97 == 0)
 {
-x_118 = x_10;
-goto block_145;
+x_106 = x_9;
+goto block_127;
 }
 else
 {
-uint8_t x_146; 
-x_146 = 1;
-x_118 = x_146;
-goto block_145;
+uint8_t x_128; 
+x_128 = 1;
+x_106 = x_128;
+goto block_127;
 }
 }
 else
 {
-uint8_t x_147; 
-x_147 = 1;
-x_118 = x_147;
-goto block_145;
+uint8_t x_129; 
+x_129 = 1;
+x_106 = x_129;
+goto block_127;
 }
-block_145:
+block_127:
 {
-lean_object* x_119; lean_object* x_120; lean_object* x_121; lean_object* x_122; lean_object* x_123; lean_object* x_124; lean_object* x_125; uint8_t x_126; 
-if (lean_is_scalar(x_41)) {
- x_119 = lean_alloc_ctor(0, 10, 5);
+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_object* x_113; uint8_t x_114; 
+lean_inc(x_86);
+if (lean_is_scalar(x_40)) {
+ x_107 = lean_alloc_ctor(0, 10, 5);
 } else {
- x_119 = x_41;
-}
-lean_ctor_set(x_119, 0, x_98);
-lean_ctor_set(x_119, 1, x_6);
-lean_ctor_set(x_119, 2, x_100);
-lean_ctor_set(x_119, 3, x_101);
-lean_ctor_set(x_119, 4, x_102);
-lean_ctor_set(x_119, 5, x_103);
-lean_ctor_set(x_119, 6, x_116);
-lean_ctor_set(x_119, 7, x_110);
-lean_ctor_set(x_119, 8, x_111);
-lean_ctor_set(x_119, 9, x_112);
-lean_ctor_set_uint8(x_119, sizeof(void*)*10, x_104);
-lean_ctor_set_uint8(x_119, sizeof(void*)*10 + 1, x_106);
-lean_ctor_set_uint8(x_119, sizeof(void*)*10 + 2, x_107);
-lean_ctor_set_uint8(x_119, sizeof(void*)*10 + 3, x_117);
-lean_ctor_set_uint8(x_119, sizeof(void*)*10 + 4, x_118);
-x_120 = l_Lean_Meta_Grind_setENode(x_7, x_119, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_115);
-x_121 = lean_ctor_get(x_120, 1);
-lean_inc(x_121);
-lean_dec(x_120);
+ x_107 = x_40;
+}
+lean_ctor_set(x_107, 0, x_86);
+lean_ctor_set(x_107, 1, x_6);
+lean_ctor_set(x_107, 2, x_88);
+lean_ctor_set(x_107, 3, x_89);
+lean_ctor_set(x_107, 4, x_90);
+lean_ctor_set(x_107, 5, x_91);
+lean_ctor_set(x_107, 6, x_104);
+lean_ctor_set(x_107, 7, x_98);
+lean_ctor_set(x_107, 8, x_99);
+lean_ctor_set(x_107, 9, x_100);
+lean_ctor_set_uint8(x_107, sizeof(void*)*10, x_92);
+lean_ctor_set_uint8(x_107, sizeof(void*)*10 + 1, x_94);
+lean_ctor_set_uint8(x_107, sizeof(void*)*10 + 2, x_95);
+lean_ctor_set_uint8(x_107, sizeof(void*)*10 + 3, x_105);
+lean_ctor_set_uint8(x_107, sizeof(void*)*10 + 4, x_106);
+x_108 = l_Lean_Meta_Grind_setENode(x_7, x_107, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_103);
+x_109 = lean_ctor_get(x_108, 1);
+lean_inc(x_109);
+lean_dec(x_108);
 lean_inc(x_1);
-x_122 = l_Lean_Meta_Grind_copyParentsTo(x_1, x_7, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_121);
-x_123 = lean_ctor_get(x_122, 1);
-lean_inc(x_123);
-lean_dec(x_122);
-x_124 = l_Lean_Meta_Grind_isInconsistent(x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_123);
-x_125 = lean_ctor_get(x_124, 0);
-lean_inc(x_125);
-x_126 = lean_unbox(x_125);
-lean_dec(x_125);
-if (x_126 == 0)
+x_110 = l_Lean_Meta_Grind_copyParentsTo(x_1, x_7, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_109);
+x_111 = lean_ctor_get(x_110, 1);
+lean_inc(x_111);
+lean_dec(x_110);
+x_112 = l_Lean_Meta_Grind_isInconsistent(x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_111);
+x_113 = lean_ctor_get(x_112, 0);
+lean_inc(x_113);
+x_114 = lean_unbox(x_113);
+lean_dec(x_113);
+if (x_114 == 0)
 {
-if (x_8 == 0)
+lean_object* x_115; lean_object* x_116; lean_object* x_117; 
+x_115 = lean_ctor_get(x_112, 1);
+lean_inc(x_115);
+lean_dec(x_112);
+x_116 = lean_box(0);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+x_117 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___spec__1(x_1, x_116, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_115);
+if (lean_obj_tag(x_117) == 0)
 {
-lean_object* x_127; lean_object* x_128; lean_object* x_129; lean_object* x_130; 
-lean_dec(x_20);
+lean_object* x_118; lean_object* x_119; 
+x_118 = lean_ctor_get(x_117, 1);
+lean_inc(x_118);
+lean_dec(x_117);
+x_119 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(x_86, x_116, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_118);
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
-lean_dec(x_1);
-x_127 = lean_ctor_get(x_124, 1);
-lean_inc(x_127);
-if (lean_is_exclusive(x_124)) {
- lean_ctor_release(x_124, 0);
- lean_ctor_release(x_124, 1);
- x_128 = x_124;
-} else {
- lean_dec_ref(x_124);
- x_128 = lean_box(0);
-}
-x_129 = lean_box(0);
-if (lean_is_scalar(x_128)) {
- x_130 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_130 = x_128;
-}
-lean_ctor_set(x_130, 0, x_129);
-lean_ctor_set(x_130, 1, x_127);
-return x_130;
-}
-else
-{
-lean_object* x_131; lean_object* x_132; lean_object* x_133; 
-x_131 = lean_ctor_get(x_124, 1);
-lean_inc(x_131);
-lean_dec(x_124);
-x_132 = lean_box(0);
-x_133 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___spec__1(x_1, x_132, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_131);
-if (lean_obj_tag(x_133) == 0)
-{
-lean_object* x_134; lean_object* x_135; lean_object* x_136; 
-x_134 = lean_ctor_get(x_133, 1);
-lean_inc(x_134);
-if (lean_is_exclusive(x_133)) {
- lean_ctor_release(x_133, 0);
- lean_ctor_release(x_133, 1);
- x_135 = x_133;
-} else {
- lean_dec_ref(x_133);
- x_135 = lean_box(0);
-}
-if (lean_is_scalar(x_135)) {
- x_136 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_136 = x_135;
-}
-lean_ctor_set(x_136, 0, x_132);
-lean_ctor_set(x_136, 1, x_134);
-return x_136;
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_86);
+return x_119;
 }
 else
 {
-lean_object* x_137; lean_object* x_138; lean_object* x_139; lean_object* x_140; 
-x_137 = lean_ctor_get(x_133, 0);
-lean_inc(x_137);
-x_138 = lean_ctor_get(x_133, 1);
-lean_inc(x_138);
-if (lean_is_exclusive(x_133)) {
- lean_ctor_release(x_133, 0);
- lean_ctor_release(x_133, 1);
- x_139 = x_133;
+lean_object* x_120; lean_object* x_121; lean_object* x_122; lean_object* x_123; 
+lean_dec(x_86);
+lean_dec(x_19);
+lean_dec(x_18);
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+x_120 = lean_ctor_get(x_117, 0);
+lean_inc(x_120);
+x_121 = lean_ctor_get(x_117, 1);
+lean_inc(x_121);
+if (lean_is_exclusive(x_117)) {
+ lean_ctor_release(x_117, 0);
+ lean_ctor_release(x_117, 1);
+ x_122 = x_117;
 } else {
- lean_dec_ref(x_133);
- x_139 = lean_box(0);
+ lean_dec_ref(x_117);
+ x_122 = lean_box(0);
 }
-if (lean_is_scalar(x_139)) {
- x_140 = lean_alloc_ctor(1, 2, 0);
+if (lean_is_scalar(x_122)) {
+ x_123 = lean_alloc_ctor(1, 2, 0);
 } else {
- x_140 = x_139;
-}
-lean_ctor_set(x_140, 0, x_137);
-lean_ctor_set(x_140, 1, x_138);
-return x_140;
+ x_123 = x_122;
 }
+lean_ctor_set(x_123, 0, x_120);
+lean_ctor_set(x_123, 1, x_121);
+return x_123;
 }
 }
 else
 {
-lean_object* x_141; lean_object* x_142; lean_object* x_143; lean_object* x_144; 
-lean_dec(x_20);
+lean_object* x_124; lean_object* x_125; lean_object* x_126; 
+lean_dec(x_1);
+x_124 = lean_ctor_get(x_112, 1);
+lean_inc(x_124);
+lean_dec(x_112);
+x_125 = lean_box(0);
+x_126 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(x_86, x_125, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_124);
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
-lean_dec(x_1);
-x_141 = lean_ctor_get(x_124, 1);
-lean_inc(x_141);
-if (lean_is_exclusive(x_124)) {
- lean_ctor_release(x_124, 0);
- lean_ctor_release(x_124, 1);
- x_142 = x_124;
-} else {
- lean_dec_ref(x_124);
- x_142 = lean_box(0);
-}
-x_143 = lean_box(0);
-if (lean_is_scalar(x_142)) {
- x_144 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_144 = x_142;
-}
-lean_ctor_set(x_144, 0, x_143);
-lean_ctor_set(x_144, 1, x_141);
-return x_144;
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_86);
+return x_126;
 }
 }
 }
@@ -8588,67 +3505,92 @@ return x_144;
 }
 else
 {
-uint8_t x_150; 
-lean_dec(x_20);
+uint8_t x_132; 
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_6);
 lean_dec(x_3);
 lean_dec(x_1);
-x_150 = !lean_is_exclusive(x_24);
-if (x_150 == 0)
+x_132 = !lean_is_exclusive(x_23);
+if (x_132 == 0)
 {
-return x_24;
+return x_23;
 }
 else
 {
-lean_object* x_151; lean_object* x_152; lean_object* x_153; 
-x_151 = lean_ctor_get(x_24, 0);
-x_152 = lean_ctor_get(x_24, 1);
-lean_inc(x_152);
-lean_inc(x_151);
-lean_dec(x_24);
-x_153 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_153, 0, x_151);
-lean_ctor_set(x_153, 1, x_152);
-return x_153;
+lean_object* x_133; lean_object* x_134; lean_object* x_135; 
+x_133 = lean_ctor_get(x_23, 0);
+x_134 = lean_ctor_get(x_23, 1);
+lean_inc(x_134);
+lean_inc(x_133);
+lean_dec(x_23);
+x_135 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_135, 0, x_133);
+lean_ctor_set(x_135, 1, x_134);
+return x_135;
 }
 }
 }
 else
 {
-uint8_t x_154; 
-lean_dec(x_20);
+uint8_t x_136; 
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_6);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_154 = !lean_is_exclusive(x_22);
-if (x_154 == 0)
+x_136 = !lean_is_exclusive(x_21);
+if (x_136 == 0)
 {
-return x_22;
+return x_21;
 }
 else
 {
-lean_object* x_155; lean_object* x_156; lean_object* x_157; 
-x_155 = lean_ctor_get(x_22, 0);
-x_156 = lean_ctor_get(x_22, 1);
-lean_inc(x_156);
-lean_inc(x_155);
-lean_dec(x_22);
-x_157 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_157, 0, x_155);
-lean_ctor_set(x_157, 1, x_156);
-return x_157;
+lean_object* x_137; lean_object* x_138; lean_object* x_139; 
+x_137 = lean_ctor_get(x_21, 0);
+x_138 = lean_ctor_get(x_21, 1);
+lean_inc(x_138);
+lean_inc(x_137);
+lean_dec(x_21);
+x_139 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_139, 0, x_137);
+lean_ctor_set(x_139, 1, x_138);
+return x_139;
+}
+}
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("", 0, 0);
+return x_1;
 }
 }
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__1;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__1() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__3() {
 _start:
 {
 lean_object* x_1; 
@@ -8656,16 +3598,16 @@ x_1 = lean_mk_string_unchecked(" new root ", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__2() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__1;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__3;
 x_2 = l_Lean_stringToMessageData(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__3() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__5() {
 _start:
 {
 lean_object* x_1; 
@@ -8673,16 +3615,16 @@ x_1 = lean_mk_string_unchecked(", ", 2, 2);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__4() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__3;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__5;
 x_2 = l_Lean_stringToMessageData(x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, uint8_t x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, uint8_t x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18, lean_object* x_19, lean_object* x_20) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, uint8_t x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, uint8_t x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18, lean_object* x_19, lean_object* x_20) {
 _start:
 {
 lean_object* x_21; 
@@ -8697,7 +3639,7 @@ lean_dec(x_21);
 x_23 = !lean_is_exclusive(x_2);
 if (x_23 == 0)
 {
-lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; uint8_t x_34; uint8_t x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; uint8_t x_41; lean_object* x_42; lean_object* x_210; lean_object* x_211; uint8_t x_212; 
+lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; uint8_t x_30; 
 x_24 = lean_ctor_get(x_2, 2);
 x_25 = lean_ctor_get(x_2, 5);
 lean_dec(x_25);
@@ -8712,1228 +3654,1602 @@ lean_ctor_set(x_2, 5, x_28);
 lean_ctor_set(x_2, 4, x_27);
 lean_ctor_set_uint8(x_2, sizeof(void*)*10, x_5);
 x_29 = l_Lean_Meta_Grind_setENode(x_1, x_2, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_22);
-x_30 = lean_ctor_get(x_29, 1);
-lean_inc(x_30);
-lean_dec(x_29);
-x_31 = lean_ctor_get(x_6, 0);
-lean_inc(x_31);
-x_32 = lean_ctor_get(x_6, 1);
-lean_inc(x_32);
-x_33 = lean_ctor_get(x_6, 6);
+x_30 = !lean_is_exclusive(x_29);
+if (x_30 == 0)
+{
+lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; uint8_t x_36; uint8_t x_37; lean_object* x_38; uint8_t x_39; 
+x_31 = lean_ctor_get(x_29, 1);
+x_32 = lean_ctor_get(x_29, 0);
+lean_dec(x_32);
+x_33 = lean_ctor_get(x_6, 0);
 lean_inc(x_33);
-x_34 = lean_ctor_get_uint8(x_6, sizeof(void*)*10 + 3);
-x_35 = lean_ctor_get_uint8(x_6, sizeof(void*)*10 + 4);
+x_34 = lean_ctor_get(x_6, 1);
+lean_inc(x_34);
+x_35 = lean_ctor_get(x_6, 6);
+lean_inc(x_35);
+x_36 = lean_ctor_get_uint8(x_6, sizeof(void*)*10 + 3);
+x_37 = lean_ctor_get_uint8(x_6, sizeof(void*)*10 + 4);
 lean_dec(x_6);
-x_36 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents(x_31, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_30);
-x_37 = lean_ctor_get(x_36, 0);
-lean_inc(x_37);
-x_38 = lean_ctor_get(x_36, 1);
-lean_inc(x_38);
-if (lean_is_exclusive(x_36)) {
- lean_ctor_release(x_36, 0);
- lean_ctor_release(x_36, 1);
- x_39 = x_36;
-} else {
- lean_dec_ref(x_36);
- x_39 = lean_box(0);
-}
-x_40 = lean_ctor_get(x_7, 2);
-lean_inc(x_40);
+x_38 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents(x_33, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_31);
+x_39 = !lean_is_exclusive(x_38);
+if (x_39 == 0)
+{
+lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; 
+x_40 = lean_ctor_get(x_38, 0);
+x_41 = lean_ctor_get(x_38, 1);
+x_42 = lean_ctor_get(x_7, 2);
+lean_inc(x_42);
 lean_dec(x_7);
-x_210 = l_Lean_Meta_Grind_isTrueExpr(x_40, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_38);
-x_211 = lean_ctor_get(x_210, 0);
-lean_inc(x_211);
-x_212 = lean_unbox(x_211);
-if (x_212 == 0)
+lean_inc(x_19);
+lean_inc(x_18);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_42);
+lean_inc(x_1);
+x_43 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(x_1, x_42, x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_41);
+if (lean_obj_tag(x_43) == 0)
 {
-lean_object* x_213; lean_object* x_214; lean_object* x_215; lean_object* x_216; uint8_t x_217; 
-lean_dec(x_211);
-x_213 = lean_ctor_get(x_210, 1);
-lean_inc(x_213);
-lean_dec(x_210);
-x_214 = l_Lean_Meta_Grind_isFalseExpr(x_40, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_213);
-x_215 = lean_ctor_get(x_214, 0);
-lean_inc(x_215);
-x_216 = lean_ctor_get(x_214, 1);
-lean_inc(x_216);
-lean_dec(x_214);
-x_217 = lean_unbox(x_215);
-lean_dec(x_215);
-x_41 = x_217;
-x_42 = x_216;
-goto block_209;
+lean_object* x_44; lean_object* x_45; lean_object* x_46; uint8_t x_47; 
+x_44 = lean_ctor_get(x_43, 1);
+lean_inc(x_44);
+lean_dec(x_43);
+lean_inc(x_8);
+x_45 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_8, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_44);
+x_46 = lean_ctor_get(x_45, 0);
+lean_inc(x_46);
+x_47 = lean_unbox(x_46);
+lean_dec(x_46);
+if (x_47 == 0)
+{
+lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+lean_free_object(x_38);
+lean_free_object(x_29);
+lean_dec(x_8);
+lean_dec(x_1);
+x_48 = lean_ctor_get(x_45, 1);
+lean_inc(x_48);
+lean_dec(x_45);
+x_49 = lean_box(0);
+x_50 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_40, x_33, x_9, x_24, x_35, x_34, x_42, x_10, x_37, x_36, x_49, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_48);
+lean_dec(x_42);
+lean_dec(x_35);
+lean_dec(x_24);
+return x_50;
 }
 else
 {
-lean_object* x_218; uint8_t x_219; 
-x_218 = lean_ctor_get(x_210, 1);
-lean_inc(x_218);
-lean_dec(x_210);
-x_219 = lean_unbox(x_211);
-lean_dec(x_211);
-x_41 = x_219;
-x_42 = x_218;
-goto block_209;
+uint8_t x_51; 
+x_51 = !lean_is_exclusive(x_45);
+if (x_51 == 0)
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; uint8_t x_55; 
+x_52 = lean_ctor_get(x_45, 1);
+x_53 = lean_ctor_get(x_45, 0);
+lean_dec(x_53);
+x_54 = l_Lean_Meta_Grind_ppENodeRef(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_52);
+x_55 = !lean_is_exclusive(x_54);
+if (x_55 == 0)
+{
+lean_object* x_56; lean_object* x_57; lean_object* x_58; uint8_t x_59; 
+x_56 = lean_ctor_get(x_54, 0);
+x_57 = lean_ctor_get(x_54, 1);
+x_58 = l_Lean_Meta_Grind_ppENodeRef(x_42, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_57);
+x_59 = !lean_is_exclusive(x_58);
+if (x_59 == 0)
+{
+lean_object* x_60; lean_object* x_61; lean_object* x_62; 
+x_60 = lean_ctor_get(x_58, 0);
+x_61 = lean_ctor_get(x_58, 1);
+x_62 = l_Lean_Meta_Grind_getRoot(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_61);
+if (lean_obj_tag(x_62) == 0)
+{
+lean_object* x_63; lean_object* x_64; lean_object* x_65; uint8_t x_66; 
+x_63 = lean_ctor_get(x_62, 0);
+lean_inc(x_63);
+x_64 = lean_ctor_get(x_62, 1);
+lean_inc(x_64);
+lean_dec(x_62);
+x_65 = l_Lean_Meta_Grind_ppENodeRef(x_63, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_64);
+lean_dec(x_63);
+x_66 = !lean_is_exclusive(x_65);
+if (x_66 == 0)
+{
+lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; 
+x_67 = lean_ctor_get(x_65, 0);
+x_68 = lean_ctor_get(x_65, 1);
+x_69 = l_Lean_MessageData_ofFormat(x_56);
+x_70 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
+lean_ctor_set_tag(x_65, 7);
+lean_ctor_set(x_65, 1, x_69);
+lean_ctor_set(x_65, 0, x_70);
+x_71 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__4;
+lean_ctor_set_tag(x_58, 7);
+lean_ctor_set(x_58, 1, x_71);
+lean_ctor_set(x_58, 0, x_65);
+x_72 = l_Lean_MessageData_ofFormat(x_60);
+lean_ctor_set_tag(x_54, 7);
+lean_ctor_set(x_54, 1, x_72);
+lean_ctor_set(x_54, 0, x_58);
+x_73 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6;
+lean_ctor_set_tag(x_45, 7);
+lean_ctor_set(x_45, 1, x_73);
+lean_ctor_set(x_45, 0, x_54);
+x_74 = l_Lean_MessageData_ofFormat(x_67);
+lean_ctor_set_tag(x_38, 7);
+lean_ctor_set(x_38, 1, x_74);
+lean_ctor_set(x_38, 0, x_45);
+lean_ctor_set_tag(x_29, 7);
+lean_ctor_set(x_29, 1, x_70);
+lean_ctor_set(x_29, 0, x_38);
+x_75 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_8, x_29, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_68);
+x_76 = lean_ctor_get(x_75, 0);
+lean_inc(x_76);
+x_77 = lean_ctor_get(x_75, 1);
+lean_inc(x_77);
+lean_dec(x_75);
+x_78 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_40, x_33, x_9, x_24, x_35, x_34, x_42, x_10, x_37, x_36, x_76, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_77);
+lean_dec(x_76);
+lean_dec(x_42);
+lean_dec(x_35);
+lean_dec(x_24);
+return x_78;
 }
-block_209:
+else
 {
-lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; uint8_t x_47; 
-x_43 = l_Lean_Meta_Grind_isInconsistent(x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_42);
-x_44 = lean_ctor_get(x_43, 0);
-lean_inc(x_44);
-x_45 = lean_ctor_get(x_43, 1);
-lean_inc(x_45);
-if (lean_is_exclusive(x_43)) {
- lean_ctor_release(x_43, 0);
- lean_ctor_release(x_43, 1);
- x_46 = x_43;
+lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; 
+x_79 = lean_ctor_get(x_65, 0);
+x_80 = lean_ctor_get(x_65, 1);
+lean_inc(x_80);
+lean_inc(x_79);
+lean_dec(x_65);
+x_81 = l_Lean_MessageData_ofFormat(x_56);
+x_82 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
+x_83 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_83, 0, x_82);
+lean_ctor_set(x_83, 1, x_81);
+x_84 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__4;
+lean_ctor_set_tag(x_58, 7);
+lean_ctor_set(x_58, 1, x_84);
+lean_ctor_set(x_58, 0, x_83);
+x_85 = l_Lean_MessageData_ofFormat(x_60);
+lean_ctor_set_tag(x_54, 7);
+lean_ctor_set(x_54, 1, x_85);
+lean_ctor_set(x_54, 0, x_58);
+x_86 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6;
+lean_ctor_set_tag(x_45, 7);
+lean_ctor_set(x_45, 1, x_86);
+lean_ctor_set(x_45, 0, x_54);
+x_87 = l_Lean_MessageData_ofFormat(x_79);
+lean_ctor_set_tag(x_38, 7);
+lean_ctor_set(x_38, 1, x_87);
+lean_ctor_set(x_38, 0, x_45);
+lean_ctor_set_tag(x_29, 7);
+lean_ctor_set(x_29, 1, x_82);
+lean_ctor_set(x_29, 0, x_38);
+x_88 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_8, x_29, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_80);
+x_89 = lean_ctor_get(x_88, 0);
+lean_inc(x_89);
+x_90 = lean_ctor_get(x_88, 1);
+lean_inc(x_90);
+lean_dec(x_88);
+x_91 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_40, x_33, x_9, x_24, x_35, x_34, x_42, x_10, x_37, x_36, x_89, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_90);
+lean_dec(x_89);
+lean_dec(x_42);
+lean_dec(x_35);
+lean_dec(x_24);
+return x_91;
+}
+}
+else
+{
+uint8_t x_92; 
+lean_free_object(x_58);
+lean_dec(x_60);
+lean_free_object(x_54);
+lean_dec(x_56);
+lean_free_object(x_45);
+lean_dec(x_42);
+lean_free_object(x_38);
+lean_dec(x_40);
+lean_dec(x_35);
+lean_dec(x_34);
+lean_dec(x_33);
+lean_free_object(x_29);
+lean_dec(x_24);
+lean_dec(x_19);
+lean_dec(x_18);
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_9);
+lean_dec(x_8);
+x_92 = !lean_is_exclusive(x_62);
+if (x_92 == 0)
+{
+return x_62;
+}
+else
+{
+lean_object* x_93; lean_object* x_94; lean_object* x_95; 
+x_93 = lean_ctor_get(x_62, 0);
+x_94 = lean_ctor_get(x_62, 1);
+lean_inc(x_94);
+lean_inc(x_93);
+lean_dec(x_62);
+x_95 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_95, 0, x_93);
+lean_ctor_set(x_95, 1, x_94);
+return x_95;
+}
+}
+}
+else
+{
+lean_object* x_96; lean_object* x_97; lean_object* x_98; 
+x_96 = lean_ctor_get(x_58, 0);
+x_97 = lean_ctor_get(x_58, 1);
+lean_inc(x_97);
+lean_inc(x_96);
+lean_dec(x_58);
+x_98 = l_Lean_Meta_Grind_getRoot(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_97);
+if (lean_obj_tag(x_98) == 0)
+{
+lean_object* x_99; lean_object* x_100; lean_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; 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_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; lean_object* x_115; lean_object* x_116; 
+x_99 = lean_ctor_get(x_98, 0);
+lean_inc(x_99);
+x_100 = lean_ctor_get(x_98, 1);
+lean_inc(x_100);
+lean_dec(x_98);
+x_101 = l_Lean_Meta_Grind_ppENodeRef(x_99, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_100);
+lean_dec(x_99);
+x_102 = lean_ctor_get(x_101, 0);
+lean_inc(x_102);
+x_103 = lean_ctor_get(x_101, 1);
+lean_inc(x_103);
+if (lean_is_exclusive(x_101)) {
+ lean_ctor_release(x_101, 0);
+ lean_ctor_release(x_101, 1);
+ x_104 = x_101;
 } else {
- lean_dec_ref(x_43);
- x_46 = lean_box(0);
+ lean_dec_ref(x_101);
+ x_104 = lean_box(0);
 }
-if (x_41 == 0)
+x_105 = l_Lean_MessageData_ofFormat(x_56);
+x_106 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
+if (lean_is_scalar(x_104)) {
+ x_107 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_107 = x_104;
+ lean_ctor_set_tag(x_107, 7);
+}
+lean_ctor_set(x_107, 0, x_106);
+lean_ctor_set(x_107, 1, x_105);
+x_108 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__4;
+x_109 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_109, 0, x_107);
+lean_ctor_set(x_109, 1, x_108);
+x_110 = l_Lean_MessageData_ofFormat(x_96);
+lean_ctor_set_tag(x_54, 7);
+lean_ctor_set(x_54, 1, x_110);
+lean_ctor_set(x_54, 0, x_109);
+x_111 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6;
+lean_ctor_set_tag(x_45, 7);
+lean_ctor_set(x_45, 1, x_111);
+lean_ctor_set(x_45, 0, x_54);
+x_112 = l_Lean_MessageData_ofFormat(x_102);
+lean_ctor_set_tag(x_38, 7);
+lean_ctor_set(x_38, 1, x_112);
+lean_ctor_set(x_38, 0, x_45);
+lean_ctor_set_tag(x_29, 7);
+lean_ctor_set(x_29, 1, x_106);
+lean_ctor_set(x_29, 0, x_38);
+x_113 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_8, x_29, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_103);
+x_114 = lean_ctor_get(x_113, 0);
+lean_inc(x_114);
+x_115 = lean_ctor_get(x_113, 1);
+lean_inc(x_115);
+lean_dec(x_113);
+x_116 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_40, x_33, x_9, x_24, x_35, x_34, x_42, x_10, x_37, x_36, x_114, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_115);
+lean_dec(x_114);
+lean_dec(x_42);
+lean_dec(x_35);
+lean_dec(x_24);
+return x_116;
+}
+else
 {
-uint8_t x_205; 
-lean_dec(x_44);
-x_205 = 0;
-x_47 = x_205;
-goto block_204;
+lean_object* x_117; lean_object* x_118; lean_object* x_119; lean_object* x_120; 
+lean_dec(x_96);
+lean_free_object(x_54);
+lean_dec(x_56);
+lean_free_object(x_45);
+lean_dec(x_42);
+lean_free_object(x_38);
+lean_dec(x_40);
+lean_dec(x_35);
+lean_dec(x_34);
+lean_dec(x_33);
+lean_free_object(x_29);
+lean_dec(x_24);
+lean_dec(x_19);
+lean_dec(x_18);
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_9);
+lean_dec(x_8);
+x_117 = lean_ctor_get(x_98, 0);
+lean_inc(x_117);
+x_118 = lean_ctor_get(x_98, 1);
+lean_inc(x_118);
+if (lean_is_exclusive(x_98)) {
+ lean_ctor_release(x_98, 0);
+ lean_ctor_release(x_98, 1);
+ x_119 = x_98;
+} else {
+ lean_dec_ref(x_98);
+ x_119 = lean_box(0);
+}
+if (lean_is_scalar(x_119)) {
+ x_120 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_120 = x_119;
+}
+lean_ctor_set(x_120, 0, x_117);
+lean_ctor_set(x_120, 1, x_118);
+return x_120;
+}
+}
 }
 else
 {
-uint8_t x_206; 
-x_206 = lean_unbox(x_44);
-lean_dec(x_44);
-if (x_206 == 0)
+lean_object* x_121; lean_object* x_122; lean_object* x_123; lean_object* x_124; lean_object* x_125; lean_object* x_126; lean_object* x_127; 
+x_121 = lean_ctor_get(x_54, 0);
+x_122 = lean_ctor_get(x_54, 1);
+lean_inc(x_122);
+lean_inc(x_121);
+lean_dec(x_54);
+x_123 = l_Lean_Meta_Grind_ppENodeRef(x_42, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_122);
+x_124 = lean_ctor_get(x_123, 0);
+lean_inc(x_124);
+x_125 = lean_ctor_get(x_123, 1);
+lean_inc(x_125);
+if (lean_is_exclusive(x_123)) {
+ lean_ctor_release(x_123, 0);
+ lean_ctor_release(x_123, 1);
+ x_126 = x_123;
+} else {
+ lean_dec_ref(x_123);
+ x_126 = lean_box(0);
+}
+x_127 = l_Lean_Meta_Grind_getRoot(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_125);
+if (lean_obj_tag(x_127) == 0)
 {
-uint8_t x_207; 
-x_207 = 1;
-x_47 = x_207;
-goto block_204;
+lean_object* x_128; 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_object* x_135; lean_object* x_136; lean_object* x_137; lean_object* x_138; lean_object* x_139; lean_object* x_140; lean_object* x_141; lean_object* x_142; lean_object* x_143; lean_object* x_144; lean_object* x_145; lean_object* x_146; 
+x_128 = lean_ctor_get(x_127, 0);
+lean_inc(x_128);
+x_129 = lean_ctor_get(x_127, 1);
+lean_inc(x_129);
+lean_dec(x_127);
+x_130 = l_Lean_Meta_Grind_ppENodeRef(x_128, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_129);
+lean_dec(x_128);
+x_131 = lean_ctor_get(x_130, 0);
+lean_inc(x_131);
+x_132 = lean_ctor_get(x_130, 1);
+lean_inc(x_132);
+if (lean_is_exclusive(x_130)) {
+ lean_ctor_release(x_130, 0);
+ lean_ctor_release(x_130, 1);
+ x_133 = x_130;
+} else {
+ lean_dec_ref(x_130);
+ x_133 = lean_box(0);
 }
-else
-{
-uint8_t x_208; 
-x_208 = 0;
-x_47 = x_208;
-goto block_204;
+x_134 = l_Lean_MessageData_ofFormat(x_121);
+x_135 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
+if (lean_is_scalar(x_133)) {
+ x_136 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_136 = x_133;
+ lean_ctor_set_tag(x_136, 7);
 }
+lean_ctor_set(x_136, 0, x_135);
+lean_ctor_set(x_136, 1, x_134);
+x_137 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__4;
+if (lean_is_scalar(x_126)) {
+ x_138 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_138 = x_126;
+ lean_ctor_set_tag(x_138, 7);
+}
+lean_ctor_set(x_138, 0, x_136);
+lean_ctor_set(x_138, 1, x_137);
+x_139 = l_Lean_MessageData_ofFormat(x_124);
+x_140 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_140, 0, x_138);
+lean_ctor_set(x_140, 1, x_139);
+x_141 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6;
+lean_ctor_set_tag(x_45, 7);
+lean_ctor_set(x_45, 1, x_141);
+lean_ctor_set(x_45, 0, x_140);
+x_142 = l_Lean_MessageData_ofFormat(x_131);
+lean_ctor_set_tag(x_38, 7);
+lean_ctor_set(x_38, 1, x_142);
+lean_ctor_set(x_38, 0, x_45);
+lean_ctor_set_tag(x_29, 7);
+lean_ctor_set(x_29, 1, x_135);
+lean_ctor_set(x_29, 0, x_38);
+x_143 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_8, x_29, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_132);
+x_144 = lean_ctor_get(x_143, 0);
+lean_inc(x_144);
+x_145 = lean_ctor_get(x_143, 1);
+lean_inc(x_145);
+lean_dec(x_143);
+x_146 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_40, x_33, x_9, x_24, x_35, x_34, x_42, x_10, x_37, x_36, x_144, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_145);
+lean_dec(x_144);
+lean_dec(x_42);
+lean_dec(x_35);
+lean_dec(x_24);
+return x_146;
 }
-block_204:
-{
-lean_object* x_48; 
-lean_inc(x_19);
-lean_inc(x_18);
-lean_inc(x_17);
-lean_inc(x_16);
-lean_inc(x_40);
-lean_inc(x_1);
-x_48 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(x_1, x_40, x_47, x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_45);
-if (lean_obj_tag(x_48) == 0)
-{
-lean_object* x_49; lean_object* x_50; lean_object* x_51; uint8_t x_52; 
-x_49 = lean_ctor_get(x_48, 1);
-lean_inc(x_49);
-lean_dec(x_48);
-lean_inc(x_8);
-x_50 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_8, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_49);
-x_51 = lean_ctor_get(x_50, 0);
-lean_inc(x_51);
-x_52 = lean_unbox(x_51);
-lean_dec(x_51);
-if (x_52 == 0)
+else
 {
-lean_object* x_53; lean_object* x_54; lean_object* x_55; 
-lean_dec(x_46);
-lean_dec(x_39);
-lean_dec(x_8);
-lean_dec(x_1);
-x_53 = lean_ctor_get(x_50, 1);
-lean_inc(x_53);
-lean_dec(x_50);
-x_54 = lean_box(0);
-x_55 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(x_37, x_31, x_9, x_24, x_33, x_32, x_40, x_41, x_10, x_35, x_34, x_54, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_53);
+lean_object* x_147; lean_object* x_148; lean_object* x_149; lean_object* x_150; 
+lean_dec(x_126);
+lean_dec(x_124);
+lean_dec(x_121);
+lean_free_object(x_45);
+lean_dec(x_42);
+lean_free_object(x_38);
 lean_dec(x_40);
+lean_dec(x_35);
+lean_dec(x_34);
 lean_dec(x_33);
+lean_free_object(x_29);
 lean_dec(x_24);
-return x_55;
+lean_dec(x_19);
+lean_dec(x_18);
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_9);
+lean_dec(x_8);
+x_147 = lean_ctor_get(x_127, 0);
+lean_inc(x_147);
+x_148 = lean_ctor_get(x_127, 1);
+lean_inc(x_148);
+if (lean_is_exclusive(x_127)) {
+ lean_ctor_release(x_127, 0);
+ lean_ctor_release(x_127, 1);
+ x_149 = x_127;
+} else {
+ lean_dec_ref(x_127);
+ x_149 = lean_box(0);
+}
+if (lean_is_scalar(x_149)) {
+ x_150 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_150 = x_149;
+}
+lean_ctor_set(x_150, 0, x_147);
+lean_ctor_set(x_150, 1, x_148);
+return x_150;
+}
+}
 }
 else
 {
-uint8_t x_56; 
-x_56 = !lean_is_exclusive(x_50);
-if (x_56 == 0)
-{
-lean_object* x_57; lean_object* x_58; lean_object* x_59; uint8_t x_60; 
-x_57 = lean_ctor_get(x_50, 1);
-x_58 = lean_ctor_get(x_50, 0);
-lean_dec(x_58);
-x_59 = l_Lean_Meta_Grind_ppENodeRef(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_57);
-x_60 = !lean_is_exclusive(x_59);
-if (x_60 == 0)
-{
-lean_object* x_61; lean_object* x_62; lean_object* x_63; uint8_t x_64; 
-x_61 = lean_ctor_get(x_59, 0);
-x_62 = lean_ctor_get(x_59, 1);
-x_63 = l_Lean_Meta_Grind_ppENodeRef(x_40, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_62);
-x_64 = !lean_is_exclusive(x_63);
-if (x_64 == 0)
+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_object* x_157; lean_object* x_158; lean_object* x_159; lean_object* x_160; 
+x_151 = lean_ctor_get(x_45, 1);
+lean_inc(x_151);
+lean_dec(x_45);
+x_152 = l_Lean_Meta_Grind_ppENodeRef(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_151);
+x_153 = lean_ctor_get(x_152, 0);
+lean_inc(x_153);
+x_154 = lean_ctor_get(x_152, 1);
+lean_inc(x_154);
+if (lean_is_exclusive(x_152)) {
+ lean_ctor_release(x_152, 0);
+ lean_ctor_release(x_152, 1);
+ x_155 = x_152;
+} else {
+ lean_dec_ref(x_152);
+ x_155 = lean_box(0);
+}
+x_156 = l_Lean_Meta_Grind_ppENodeRef(x_42, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_154);
+x_157 = lean_ctor_get(x_156, 0);
+lean_inc(x_157);
+x_158 = lean_ctor_get(x_156, 1);
+lean_inc(x_158);
+if (lean_is_exclusive(x_156)) {
+ lean_ctor_release(x_156, 0);
+ lean_ctor_release(x_156, 1);
+ x_159 = x_156;
+} else {
+ lean_dec_ref(x_156);
+ x_159 = lean_box(0);
+}
+x_160 = l_Lean_Meta_Grind_getRoot(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_158);
+if (lean_obj_tag(x_160) == 0)
 {
-lean_object* x_65; lean_object* x_66; lean_object* x_67; 
-x_65 = lean_ctor_get(x_63, 0);
-x_66 = lean_ctor_get(x_63, 1);
-x_67 = l_Lean_Meta_Grind_getRoot(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_66);
-if (lean_obj_tag(x_67) == 0)
-{
-lean_object* x_68; lean_object* x_69; lean_object* x_70; uint8_t x_71; 
-x_68 = lean_ctor_get(x_67, 0);
-lean_inc(x_68);
-x_69 = lean_ctor_get(x_67, 1);
-lean_inc(x_69);
-lean_dec(x_67);
-x_70 = l_Lean_Meta_Grind_ppENodeRef(x_68, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_69);
-lean_dec(x_68);
-x_71 = !lean_is_exclusive(x_70);
-if (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; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; 
-x_72 = lean_ctor_get(x_70, 0);
-x_73 = lean_ctor_get(x_70, 1);
-x_74 = l_Lean_MessageData_ofFormat(x_61);
-x_75 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-lean_ctor_set_tag(x_70, 7);
-lean_ctor_set(x_70, 1, x_74);
-lean_ctor_set(x_70, 0, x_75);
-x_76 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__2;
-lean_ctor_set_tag(x_63, 7);
-lean_ctor_set(x_63, 1, x_76);
-lean_ctor_set(x_63, 0, x_70);
-x_77 = l_Lean_MessageData_ofFormat(x_65);
-lean_ctor_set_tag(x_59, 7);
-lean_ctor_set(x_59, 1, x_77);
-lean_ctor_set(x_59, 0, x_63);
-x_78 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__4;
-lean_ctor_set_tag(x_50, 7);
-lean_ctor_set(x_50, 1, x_78);
-lean_ctor_set(x_50, 0, x_59);
-x_79 = l_Lean_MessageData_ofFormat(x_72);
-if (lean_is_scalar(x_46)) {
- x_80 = lean_alloc_ctor(7, 2, 0);
+lean_object* x_161; lean_object* x_162; lean_object* x_163; lean_object* x_164; lean_object* x_165; lean_object* x_166; lean_object* x_167; lean_object* x_168; lean_object* x_169; lean_object* x_170; lean_object* x_171; lean_object* x_172; lean_object* x_173; lean_object* x_174; lean_object* x_175; lean_object* x_176; lean_object* x_177; lean_object* x_178; lean_object* x_179; lean_object* x_180; 
+x_161 = lean_ctor_get(x_160, 0);
+lean_inc(x_161);
+x_162 = lean_ctor_get(x_160, 1);
+lean_inc(x_162);
+lean_dec(x_160);
+x_163 = l_Lean_Meta_Grind_ppENodeRef(x_161, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_162);
+lean_dec(x_161);
+x_164 = lean_ctor_get(x_163, 0);
+lean_inc(x_164);
+x_165 = lean_ctor_get(x_163, 1);
+lean_inc(x_165);
+if (lean_is_exclusive(x_163)) {
+ lean_ctor_release(x_163, 0);
+ lean_ctor_release(x_163, 1);
+ x_166 = x_163;
 } else {
- x_80 = x_46;
- lean_ctor_set_tag(x_80, 7);
+ lean_dec_ref(x_163);
+ x_166 = lean_box(0);
 }
-lean_ctor_set(x_80, 0, x_50);
-lean_ctor_set(x_80, 1, x_79);
-if (lean_is_scalar(x_39)) {
- x_81 = lean_alloc_ctor(7, 2, 0);
+x_167 = l_Lean_MessageData_ofFormat(x_153);
+x_168 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
+if (lean_is_scalar(x_166)) {
+ x_169 = lean_alloc_ctor(7, 2, 0);
 } else {
- x_81 = x_39;
- lean_ctor_set_tag(x_81, 7);
+ x_169 = x_166;
+ lean_ctor_set_tag(x_169, 7);
+}
+lean_ctor_set(x_169, 0, x_168);
+lean_ctor_set(x_169, 1, x_167);
+x_170 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__4;
+if (lean_is_scalar(x_159)) {
+ x_171 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_171 = x_159;
+ lean_ctor_set_tag(x_171, 7);
 }
-lean_ctor_set(x_81, 0, x_80);
-lean_ctor_set(x_81, 1, x_75);
-x_82 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_8, x_81, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_73);
-x_83 = lean_ctor_get(x_82, 0);
-lean_inc(x_83);
-x_84 = lean_ctor_get(x_82, 1);
-lean_inc(x_84);
-lean_dec(x_82);
-x_85 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(x_37, x_31, x_9, x_24, x_33, x_32, x_40, x_41, x_10, x_35, x_34, x_83, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_84);
-lean_dec(x_83);
-lean_dec(x_40);
-lean_dec(x_33);
+lean_ctor_set(x_171, 0, x_169);
+lean_ctor_set(x_171, 1, x_170);
+x_172 = l_Lean_MessageData_ofFormat(x_157);
+if (lean_is_scalar(x_155)) {
+ x_173 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_173 = x_155;
+ lean_ctor_set_tag(x_173, 7);
+}
+lean_ctor_set(x_173, 0, x_171);
+lean_ctor_set(x_173, 1, x_172);
+x_174 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6;
+x_175 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_175, 0, x_173);
+lean_ctor_set(x_175, 1, x_174);
+x_176 = l_Lean_MessageData_ofFormat(x_164);
+lean_ctor_set_tag(x_38, 7);
+lean_ctor_set(x_38, 1, x_176);
+lean_ctor_set(x_38, 0, x_175);
+lean_ctor_set_tag(x_29, 7);
+lean_ctor_set(x_29, 1, x_168);
+lean_ctor_set(x_29, 0, x_38);
+x_177 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_8, x_29, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_165);
+x_178 = lean_ctor_get(x_177, 0);
+lean_inc(x_178);
+x_179 = lean_ctor_get(x_177, 1);
+lean_inc(x_179);
+lean_dec(x_177);
+x_180 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_40, x_33, x_9, x_24, x_35, x_34, x_42, x_10, x_37, x_36, x_178, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_179);
+lean_dec(x_178);
+lean_dec(x_42);
+lean_dec(x_35);
 lean_dec(x_24);
-return x_85;
+return x_180;
 }
 else
 {
-lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; lean_object* x_99; lean_object* x_100; 
-x_86 = lean_ctor_get(x_70, 0);
-x_87 = lean_ctor_get(x_70, 1);
-lean_inc(x_87);
-lean_inc(x_86);
-lean_dec(x_70);
-x_88 = l_Lean_MessageData_ofFormat(x_61);
-x_89 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-x_90 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_90, 0, x_89);
-lean_ctor_set(x_90, 1, x_88);
-x_91 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__2;
-lean_ctor_set_tag(x_63, 7);
-lean_ctor_set(x_63, 1, x_91);
-lean_ctor_set(x_63, 0, x_90);
-x_92 = l_Lean_MessageData_ofFormat(x_65);
-lean_ctor_set_tag(x_59, 7);
-lean_ctor_set(x_59, 1, x_92);
-lean_ctor_set(x_59, 0, x_63);
-x_93 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__4;
-lean_ctor_set_tag(x_50, 7);
-lean_ctor_set(x_50, 1, x_93);
-lean_ctor_set(x_50, 0, x_59);
-x_94 = l_Lean_MessageData_ofFormat(x_86);
-if (lean_is_scalar(x_46)) {
- x_95 = lean_alloc_ctor(7, 2, 0);
+lean_object* x_181; lean_object* x_182; lean_object* x_183; lean_object* x_184; 
+lean_dec(x_159);
+lean_dec(x_157);
+lean_dec(x_155);
+lean_dec(x_153);
+lean_dec(x_42);
+lean_free_object(x_38);
+lean_dec(x_40);
+lean_dec(x_35);
+lean_dec(x_34);
+lean_dec(x_33);
+lean_free_object(x_29);
+lean_dec(x_24);
+lean_dec(x_19);
+lean_dec(x_18);
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_9);
+lean_dec(x_8);
+x_181 = lean_ctor_get(x_160, 0);
+lean_inc(x_181);
+x_182 = lean_ctor_get(x_160, 1);
+lean_inc(x_182);
+if (lean_is_exclusive(x_160)) {
+ lean_ctor_release(x_160, 0);
+ lean_ctor_release(x_160, 1);
+ x_183 = x_160;
 } else {
- x_95 = x_46;
- lean_ctor_set_tag(x_95, 7);
+ lean_dec_ref(x_160);
+ x_183 = lean_box(0);
 }
-lean_ctor_set(x_95, 0, x_50);
-lean_ctor_set(x_95, 1, x_94);
-if (lean_is_scalar(x_39)) {
- x_96 = lean_alloc_ctor(7, 2, 0);
+if (lean_is_scalar(x_183)) {
+ x_184 = lean_alloc_ctor(1, 2, 0);
 } else {
- x_96 = x_39;
- lean_ctor_set_tag(x_96, 7);
+ x_184 = x_183;
+}
+lean_ctor_set(x_184, 0, x_181);
+lean_ctor_set(x_184, 1, x_182);
+return x_184;
+}
 }
-lean_ctor_set(x_96, 0, x_95);
-lean_ctor_set(x_96, 1, x_89);
-x_97 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_8, x_96, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_87);
-x_98 = lean_ctor_get(x_97, 0);
-lean_inc(x_98);
-x_99 = lean_ctor_get(x_97, 1);
-lean_inc(x_99);
-lean_dec(x_97);
-x_100 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(x_37, x_31, x_9, x_24, x_33, x_32, x_40, x_41, x_10, x_35, x_34, x_98, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_99);
-lean_dec(x_98);
-lean_dec(x_40);
-lean_dec(x_33);
-lean_dec(x_24);
-return x_100;
 }
 }
 else
 {
-uint8_t x_101; 
-lean_free_object(x_63);
-lean_dec(x_65);
-lean_free_object(x_59);
-lean_dec(x_61);
-lean_free_object(x_50);
-lean_dec(x_46);
+uint8_t x_185; 
+lean_dec(x_42);
+lean_free_object(x_38);
 lean_dec(x_40);
-lean_dec(x_39);
-lean_dec(x_37);
+lean_dec(x_35);
+lean_dec(x_34);
 lean_dec(x_33);
-lean_dec(x_32);
-lean_dec(x_31);
+lean_free_object(x_29);
 lean_dec(x_24);
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_9);
 lean_dec(x_8);
-x_101 = !lean_is_exclusive(x_67);
-if (x_101 == 0)
+lean_dec(x_1);
+x_185 = !lean_is_exclusive(x_43);
+if (x_185 == 0)
 {
-return x_67;
+return x_43;
 }
 else
 {
-lean_object* x_102; lean_object* x_103; lean_object* x_104; 
-x_102 = lean_ctor_get(x_67, 0);
-x_103 = lean_ctor_get(x_67, 1);
-lean_inc(x_103);
-lean_inc(x_102);
-lean_dec(x_67);
-x_104 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_104, 0, x_102);
-lean_ctor_set(x_104, 1, x_103);
-return x_104;
+lean_object* x_186; lean_object* x_187; lean_object* x_188; 
+x_186 = lean_ctor_get(x_43, 0);
+x_187 = lean_ctor_get(x_43, 1);
+lean_inc(x_187);
+lean_inc(x_186);
+lean_dec(x_43);
+x_188 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_188, 0, x_186);
+lean_ctor_set(x_188, 1, x_187);
+return x_188;
 }
 }
 }
 else
 {
-lean_object* x_105; lean_object* x_106; lean_object* x_107; 
-x_105 = lean_ctor_get(x_63, 0);
-x_106 = lean_ctor_get(x_63, 1);
-lean_inc(x_106);
-lean_inc(x_105);
-lean_dec(x_63);
-x_107 = l_Lean_Meta_Grind_getRoot(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_106);
-if (lean_obj_tag(x_107) == 0)
+lean_object* x_189; lean_object* x_190; lean_object* x_191; lean_object* x_192; 
+x_189 = lean_ctor_get(x_38, 0);
+x_190 = lean_ctor_get(x_38, 1);
+lean_inc(x_190);
+lean_inc(x_189);
+lean_dec(x_38);
+x_191 = lean_ctor_get(x_7, 2);
+lean_inc(x_191);
+lean_dec(x_7);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_191);
+lean_inc(x_1);
+x_192 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(x_1, x_191, x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_190);
+if (lean_obj_tag(x_192) == 0)
 {
-lean_object* x_108; lean_object* x_109; lean_object* x_110; lean_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; lean_object* x_115; lean_object* x_116; 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_object* x_123; lean_object* x_124; lean_object* x_125; lean_object* x_126; lean_object* x_127; 
-x_108 = lean_ctor_get(x_107, 0);
-lean_inc(x_108);
-x_109 = lean_ctor_get(x_107, 1);
-lean_inc(x_109);
-lean_dec(x_107);
-x_110 = l_Lean_Meta_Grind_ppENodeRef(x_108, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_109);
-lean_dec(x_108);
-x_111 = lean_ctor_get(x_110, 0);
-lean_inc(x_111);
-x_112 = lean_ctor_get(x_110, 1);
-lean_inc(x_112);
-if (lean_is_exclusive(x_110)) {
- lean_ctor_release(x_110, 0);
- lean_ctor_release(x_110, 1);
- x_113 = x_110;
-} else {
- lean_dec_ref(x_110);
- x_113 = lean_box(0);
+lean_object* x_193; lean_object* x_194; lean_object* x_195; uint8_t x_196; 
+x_193 = lean_ctor_get(x_192, 1);
+lean_inc(x_193);
+lean_dec(x_192);
+lean_inc(x_8);
+x_194 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_8, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_193);
+x_195 = lean_ctor_get(x_194, 0);
+lean_inc(x_195);
+x_196 = lean_unbox(x_195);
+lean_dec(x_195);
+if (x_196 == 0)
+{
+lean_object* x_197; lean_object* x_198; lean_object* x_199; 
+lean_free_object(x_29);
+lean_dec(x_8);
+lean_dec(x_1);
+x_197 = lean_ctor_get(x_194, 1);
+lean_inc(x_197);
+lean_dec(x_194);
+x_198 = lean_box(0);
+x_199 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_189, x_33, x_9, x_24, x_35, x_34, x_191, x_10, x_37, x_36, x_198, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_197);
+lean_dec(x_191);
+lean_dec(x_35);
+lean_dec(x_24);
+return x_199;
 }
-x_114 = l_Lean_MessageData_ofFormat(x_61);
-x_115 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-if (lean_is_scalar(x_113)) {
- x_116 = lean_alloc_ctor(7, 2, 0);
+else
+{
+lean_object* x_200; lean_object* x_201; lean_object* x_202; lean_object* x_203; lean_object* x_204; lean_object* x_205; lean_object* x_206; lean_object* x_207; lean_object* x_208; lean_object* x_209; lean_object* x_210; 
+x_200 = lean_ctor_get(x_194, 1);
+lean_inc(x_200);
+if (lean_is_exclusive(x_194)) {
+ lean_ctor_release(x_194, 0);
+ lean_ctor_release(x_194, 1);
+ x_201 = x_194;
 } else {
- x_116 = x_113;
- lean_ctor_set_tag(x_116, 7);
+ lean_dec_ref(x_194);
+ x_201 = lean_box(0);
 }
-lean_ctor_set(x_116, 0, x_115);
-lean_ctor_set(x_116, 1, x_114);
-x_117 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__2;
-x_118 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_118, 0, x_116);
-lean_ctor_set(x_118, 1, x_117);
-x_119 = l_Lean_MessageData_ofFormat(x_105);
-lean_ctor_set_tag(x_59, 7);
-lean_ctor_set(x_59, 1, x_119);
-lean_ctor_set(x_59, 0, x_118);
-x_120 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__4;
-lean_ctor_set_tag(x_50, 7);
-lean_ctor_set(x_50, 1, x_120);
-lean_ctor_set(x_50, 0, x_59);
-x_121 = l_Lean_MessageData_ofFormat(x_111);
-if (lean_is_scalar(x_46)) {
- x_122 = lean_alloc_ctor(7, 2, 0);
+x_202 = l_Lean_Meta_Grind_ppENodeRef(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_200);
+x_203 = lean_ctor_get(x_202, 0);
+lean_inc(x_203);
+x_204 = lean_ctor_get(x_202, 1);
+lean_inc(x_204);
+if (lean_is_exclusive(x_202)) {
+ lean_ctor_release(x_202, 0);
+ lean_ctor_release(x_202, 1);
+ x_205 = x_202;
 } else {
- x_122 = x_46;
- lean_ctor_set_tag(x_122, 7);
+ lean_dec_ref(x_202);
+ x_205 = lean_box(0);
+}
+x_206 = l_Lean_Meta_Grind_ppENodeRef(x_191, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_204);
+x_207 = lean_ctor_get(x_206, 0);
+lean_inc(x_207);
+x_208 = lean_ctor_get(x_206, 1);
+lean_inc(x_208);
+if (lean_is_exclusive(x_206)) {
+ lean_ctor_release(x_206, 0);
+ lean_ctor_release(x_206, 1);
+ x_209 = x_206;
+} else {
+ lean_dec_ref(x_206);
+ x_209 = lean_box(0);
 }
-lean_ctor_set(x_122, 0, x_50);
-lean_ctor_set(x_122, 1, x_121);
-if (lean_is_scalar(x_39)) {
- x_123 = lean_alloc_ctor(7, 2, 0);
+x_210 = l_Lean_Meta_Grind_getRoot(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_208);
+if (lean_obj_tag(x_210) == 0)
+{
+lean_object* x_211; lean_object* x_212; lean_object* x_213; lean_object* x_214; lean_object* x_215; lean_object* x_216; lean_object* x_217; lean_object* x_218; lean_object* x_219; lean_object* x_220; lean_object* x_221; lean_object* x_222; lean_object* x_223; lean_object* x_224; lean_object* x_225; lean_object* x_226; lean_object* x_227; lean_object* x_228; lean_object* x_229; lean_object* x_230; lean_object* x_231; 
+x_211 = lean_ctor_get(x_210, 0);
+lean_inc(x_211);
+x_212 = lean_ctor_get(x_210, 1);
+lean_inc(x_212);
+lean_dec(x_210);
+x_213 = l_Lean_Meta_Grind_ppENodeRef(x_211, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_212);
+lean_dec(x_211);
+x_214 = lean_ctor_get(x_213, 0);
+lean_inc(x_214);
+x_215 = lean_ctor_get(x_213, 1);
+lean_inc(x_215);
+if (lean_is_exclusive(x_213)) {
+ lean_ctor_release(x_213, 0);
+ lean_ctor_release(x_213, 1);
+ x_216 = x_213;
 } else {
- x_123 = x_39;
- lean_ctor_set_tag(x_123, 7);
+ lean_dec_ref(x_213);
+ x_216 = lean_box(0);
 }
-lean_ctor_set(x_123, 0, x_122);
-lean_ctor_set(x_123, 1, x_115);
-x_124 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_8, x_123, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_112);
-x_125 = lean_ctor_get(x_124, 0);
-lean_inc(x_125);
-x_126 = lean_ctor_get(x_124, 1);
-lean_inc(x_126);
-lean_dec(x_124);
-x_127 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(x_37, x_31, x_9, x_24, x_33, x_32, x_40, x_41, x_10, x_35, x_34, x_125, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_126);
-lean_dec(x_125);
-lean_dec(x_40);
-lean_dec(x_33);
+x_217 = l_Lean_MessageData_ofFormat(x_203);
+x_218 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
+if (lean_is_scalar(x_216)) {
+ x_219 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_219 = x_216;
+ lean_ctor_set_tag(x_219, 7);
+}
+lean_ctor_set(x_219, 0, x_218);
+lean_ctor_set(x_219, 1, x_217);
+x_220 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__4;
+if (lean_is_scalar(x_209)) {
+ x_221 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_221 = x_209;
+ lean_ctor_set_tag(x_221, 7);
+}
+lean_ctor_set(x_221, 0, x_219);
+lean_ctor_set(x_221, 1, x_220);
+x_222 = l_Lean_MessageData_ofFormat(x_207);
+if (lean_is_scalar(x_205)) {
+ x_223 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_223 = x_205;
+ lean_ctor_set_tag(x_223, 7);
+}
+lean_ctor_set(x_223, 0, x_221);
+lean_ctor_set(x_223, 1, x_222);
+x_224 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6;
+if (lean_is_scalar(x_201)) {
+ x_225 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_225 = x_201;
+ lean_ctor_set_tag(x_225, 7);
+}
+lean_ctor_set(x_225, 0, x_223);
+lean_ctor_set(x_225, 1, x_224);
+x_226 = l_Lean_MessageData_ofFormat(x_214);
+x_227 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_227, 0, x_225);
+lean_ctor_set(x_227, 1, x_226);
+lean_ctor_set_tag(x_29, 7);
+lean_ctor_set(x_29, 1, x_218);
+lean_ctor_set(x_29, 0, x_227);
+x_228 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_8, x_29, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_215);
+x_229 = lean_ctor_get(x_228, 0);
+lean_inc(x_229);
+x_230 = lean_ctor_get(x_228, 1);
+lean_inc(x_230);
+lean_dec(x_228);
+x_231 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_189, x_33, x_9, x_24, x_35, x_34, x_191, x_10, x_37, x_36, x_229, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_230);
+lean_dec(x_229);
+lean_dec(x_191);
+lean_dec(x_35);
 lean_dec(x_24);
-return x_127;
+return x_231;
 }
 else
 {
-lean_object* x_128; lean_object* x_129; lean_object* x_130; lean_object* x_131; 
-lean_dec(x_105);
-lean_free_object(x_59);
-lean_dec(x_61);
-lean_free_object(x_50);
-lean_dec(x_46);
-lean_dec(x_40);
-lean_dec(x_39);
-lean_dec(x_37);
+lean_object* x_232; lean_object* x_233; lean_object* x_234; lean_object* x_235; 
+lean_dec(x_209);
+lean_dec(x_207);
+lean_dec(x_205);
+lean_dec(x_203);
+lean_dec(x_201);
+lean_dec(x_191);
+lean_dec(x_189);
+lean_dec(x_35);
+lean_dec(x_34);
 lean_dec(x_33);
-lean_dec(x_32);
-lean_dec(x_31);
+lean_free_object(x_29);
 lean_dec(x_24);
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_9);
 lean_dec(x_8);
-x_128 = lean_ctor_get(x_107, 0);
-lean_inc(x_128);
-x_129 = lean_ctor_get(x_107, 1);
-lean_inc(x_129);
-if (lean_is_exclusive(x_107)) {
- lean_ctor_release(x_107, 0);
- lean_ctor_release(x_107, 1);
- x_130 = x_107;
-} else {
- lean_dec_ref(x_107);
- x_130 = lean_box(0);
-}
-if (lean_is_scalar(x_130)) {
- x_131 = lean_alloc_ctor(1, 2, 0);
+x_232 = lean_ctor_get(x_210, 0);
+lean_inc(x_232);
+x_233 = lean_ctor_get(x_210, 1);
+lean_inc(x_233);
+if (lean_is_exclusive(x_210)) {
+ lean_ctor_release(x_210, 0);
+ lean_ctor_release(x_210, 1);
+ x_234 = x_210;
 } else {
- x_131 = x_130;
-}
-lean_ctor_set(x_131, 0, x_128);
-lean_ctor_set(x_131, 1, x_129);
-return x_131;
-}
+ lean_dec_ref(x_210);
+ x_234 = lean_box(0);
 }
-}
-else
-{
-lean_object* x_132; lean_object* x_133; lean_object* x_134; lean_object* x_135; lean_object* x_136; lean_object* x_137; lean_object* x_138; 
-x_132 = lean_ctor_get(x_59, 0);
-x_133 = lean_ctor_get(x_59, 1);
-lean_inc(x_133);
-lean_inc(x_132);
-lean_dec(x_59);
-x_134 = l_Lean_Meta_Grind_ppENodeRef(x_40, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_133);
-x_135 = lean_ctor_get(x_134, 0);
-lean_inc(x_135);
-x_136 = lean_ctor_get(x_134, 1);
-lean_inc(x_136);
-if (lean_is_exclusive(x_134)) {
- lean_ctor_release(x_134, 0);
- lean_ctor_release(x_134, 1);
- x_137 = x_134;
+if (lean_is_scalar(x_234)) {
+ x_235 = lean_alloc_ctor(1, 2, 0);
 } else {
- lean_dec_ref(x_134);
- x_137 = lean_box(0);
-}
-x_138 = l_Lean_Meta_Grind_getRoot(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_136);
-if (lean_obj_tag(x_138) == 0)
-{
-lean_object* x_139; lean_object* x_140; lean_object* x_141; lean_object* x_142; lean_object* x_143; lean_object* x_144; 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_object* x_151; lean_object* x_152; lean_object* x_153; lean_object* x_154; lean_object* x_155; lean_object* x_156; lean_object* x_157; lean_object* x_158; lean_object* x_159; 
-x_139 = lean_ctor_get(x_138, 0);
-lean_inc(x_139);
-x_140 = lean_ctor_get(x_138, 1);
-lean_inc(x_140);
-lean_dec(x_138);
-x_141 = l_Lean_Meta_Grind_ppENodeRef(x_139, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_140);
-lean_dec(x_139);
-x_142 = lean_ctor_get(x_141, 0);
-lean_inc(x_142);
-x_143 = lean_ctor_get(x_141, 1);
-lean_inc(x_143);
-if (lean_is_exclusive(x_141)) {
- lean_ctor_release(x_141, 0);
- lean_ctor_release(x_141, 1);
- x_144 = x_141;
-} else {
- lean_dec_ref(x_141);
- x_144 = lean_box(0);
+ x_235 = x_234;
 }
-x_145 = l_Lean_MessageData_ofFormat(x_132);
-x_146 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-if (lean_is_scalar(x_144)) {
- x_147 = lean_alloc_ctor(7, 2, 0);
-} else {
- x_147 = x_144;
- lean_ctor_set_tag(x_147, 7);
-}
-lean_ctor_set(x_147, 0, x_146);
-lean_ctor_set(x_147, 1, x_145);
-x_148 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__2;
-if (lean_is_scalar(x_137)) {
- x_149 = lean_alloc_ctor(7, 2, 0);
-} else {
- x_149 = x_137;
- lean_ctor_set_tag(x_149, 7);
-}
-lean_ctor_set(x_149, 0, x_147);
-lean_ctor_set(x_149, 1, x_148);
-x_150 = l_Lean_MessageData_ofFormat(x_135);
-x_151 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_151, 0, x_149);
-lean_ctor_set(x_151, 1, x_150);
-x_152 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__4;
-lean_ctor_set_tag(x_50, 7);
-lean_ctor_set(x_50, 1, x_152);
-lean_ctor_set(x_50, 0, x_151);
-x_153 = l_Lean_MessageData_ofFormat(x_142);
-if (lean_is_scalar(x_46)) {
- x_154 = lean_alloc_ctor(7, 2, 0);
-} else {
- x_154 = x_46;
- lean_ctor_set_tag(x_154, 7);
+lean_ctor_set(x_235, 0, x_232);
+lean_ctor_set(x_235, 1, x_233);
+return x_235;
 }
-lean_ctor_set(x_154, 0, x_50);
-lean_ctor_set(x_154, 1, x_153);
-if (lean_is_scalar(x_39)) {
- x_155 = lean_alloc_ctor(7, 2, 0);
-} else {
- x_155 = x_39;
- lean_ctor_set_tag(x_155, 7);
 }
-lean_ctor_set(x_155, 0, x_154);
-lean_ctor_set(x_155, 1, x_146);
-x_156 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_8, x_155, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_143);
-x_157 = lean_ctor_get(x_156, 0);
-lean_inc(x_157);
-x_158 = lean_ctor_get(x_156, 1);
-lean_inc(x_158);
-lean_dec(x_156);
-x_159 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(x_37, x_31, x_9, x_24, x_33, x_32, x_40, x_41, x_10, x_35, x_34, x_157, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_158);
-lean_dec(x_157);
-lean_dec(x_40);
-lean_dec(x_33);
-lean_dec(x_24);
-return x_159;
 }
 else
 {
-lean_object* x_160; lean_object* x_161; lean_object* x_162; lean_object* x_163; 
-lean_dec(x_137);
-lean_dec(x_135);
-lean_dec(x_132);
-lean_free_object(x_50);
-lean_dec(x_46);
-lean_dec(x_40);
-lean_dec(x_39);
-lean_dec(x_37);
+lean_object* x_236; lean_object* x_237; lean_object* x_238; lean_object* x_239; 
+lean_dec(x_191);
+lean_dec(x_189);
+lean_dec(x_35);
+lean_dec(x_34);
 lean_dec(x_33);
-lean_dec(x_32);
-lean_dec(x_31);
+lean_free_object(x_29);
 lean_dec(x_24);
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_9);
 lean_dec(x_8);
-x_160 = lean_ctor_get(x_138, 0);
-lean_inc(x_160);
-x_161 = lean_ctor_get(x_138, 1);
-lean_inc(x_161);
-if (lean_is_exclusive(x_138)) {
- lean_ctor_release(x_138, 0);
- lean_ctor_release(x_138, 1);
- x_162 = x_138;
+lean_dec(x_1);
+x_236 = lean_ctor_get(x_192, 0);
+lean_inc(x_236);
+x_237 = lean_ctor_get(x_192, 1);
+lean_inc(x_237);
+if (lean_is_exclusive(x_192)) {
+ lean_ctor_release(x_192, 0);
+ lean_ctor_release(x_192, 1);
+ x_238 = x_192;
 } else {
- lean_dec_ref(x_138);
- x_162 = lean_box(0);
+ lean_dec_ref(x_192);
+ x_238 = lean_box(0);
 }
-if (lean_is_scalar(x_162)) {
- x_163 = lean_alloc_ctor(1, 2, 0);
+if (lean_is_scalar(x_238)) {
+ x_239 = lean_alloc_ctor(1, 2, 0);
 } else {
- x_163 = x_162;
+ x_239 = x_238;
 }
-lean_ctor_set(x_163, 0, x_160);
-lean_ctor_set(x_163, 1, x_161);
-return x_163;
+lean_ctor_set(x_239, 0, x_236);
+lean_ctor_set(x_239, 1, x_237);
+return x_239;
 }
 }
 }
 else
 {
-lean_object* x_164; lean_object* x_165; lean_object* x_166; lean_object* x_167; lean_object* x_168; lean_object* x_169; lean_object* x_170; lean_object* x_171; lean_object* x_172; lean_object* x_173; 
-x_164 = lean_ctor_get(x_50, 1);
-lean_inc(x_164);
-lean_dec(x_50);
-x_165 = l_Lean_Meta_Grind_ppENodeRef(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_164);
-x_166 = lean_ctor_get(x_165, 0);
-lean_inc(x_166);
-x_167 = lean_ctor_get(x_165, 1);
-lean_inc(x_167);
-if (lean_is_exclusive(x_165)) {
- lean_ctor_release(x_165, 0);
- lean_ctor_release(x_165, 1);
- x_168 = x_165;
-} else {
- lean_dec_ref(x_165);
- x_168 = lean_box(0);
-}
-x_169 = l_Lean_Meta_Grind_ppENodeRef(x_40, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_167);
-x_170 = lean_ctor_get(x_169, 0);
-lean_inc(x_170);
-x_171 = lean_ctor_get(x_169, 1);
-lean_inc(x_171);
-if (lean_is_exclusive(x_169)) {
- lean_ctor_release(x_169, 0);
- lean_ctor_release(x_169, 1);
- x_172 = x_169;
-} else {
- lean_dec_ref(x_169);
- x_172 = lean_box(0);
-}
-x_173 = l_Lean_Meta_Grind_getRoot(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_171);
-if (lean_obj_tag(x_173) == 0)
-{
-lean_object* x_174; lean_object* x_175; lean_object* x_176; lean_object* x_177; lean_object* x_178; lean_object* x_179; lean_object* x_180; lean_object* x_181; lean_object* x_182; lean_object* x_183; lean_object* x_184; lean_object* x_185; lean_object* x_186; lean_object* x_187; lean_object* x_188; lean_object* x_189; lean_object* x_190; lean_object* x_191; lean_object* x_192; lean_object* x_193; lean_object* x_194; lean_object* x_195; 
-x_174 = lean_ctor_get(x_173, 0);
-lean_inc(x_174);
-x_175 = lean_ctor_get(x_173, 1);
-lean_inc(x_175);
-lean_dec(x_173);
-x_176 = l_Lean_Meta_Grind_ppENodeRef(x_174, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_175);
-lean_dec(x_174);
-x_177 = lean_ctor_get(x_176, 0);
-lean_inc(x_177);
-x_178 = lean_ctor_get(x_176, 1);
-lean_inc(x_178);
-if (lean_is_exclusive(x_176)) {
- lean_ctor_release(x_176, 0);
- lean_ctor_release(x_176, 1);
- x_179 = x_176;
+lean_object* x_240; lean_object* x_241; lean_object* x_242; lean_object* x_243; uint8_t x_244; uint8_t x_245; lean_object* x_246; lean_object* x_247; lean_object* x_248; lean_object* x_249; lean_object* x_250; lean_object* x_251; 
+x_240 = lean_ctor_get(x_29, 1);
+lean_inc(x_240);
+lean_dec(x_29);
+x_241 = lean_ctor_get(x_6, 0);
+lean_inc(x_241);
+x_242 = lean_ctor_get(x_6, 1);
+lean_inc(x_242);
+x_243 = lean_ctor_get(x_6, 6);
+lean_inc(x_243);
+x_244 = lean_ctor_get_uint8(x_6, sizeof(void*)*10 + 3);
+x_245 = lean_ctor_get_uint8(x_6, sizeof(void*)*10 + 4);
+lean_dec(x_6);
+x_246 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents(x_241, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_240);
+x_247 = lean_ctor_get(x_246, 0);
+lean_inc(x_247);
+x_248 = lean_ctor_get(x_246, 1);
+lean_inc(x_248);
+if (lean_is_exclusive(x_246)) {
+ lean_ctor_release(x_246, 0);
+ lean_ctor_release(x_246, 1);
+ x_249 = x_246;
 } else {
- lean_dec_ref(x_176);
- x_179 = lean_box(0);
+ lean_dec_ref(x_246);
+ x_249 = lean_box(0);
+}
+x_250 = lean_ctor_get(x_7, 2);
+lean_inc(x_250);
+lean_dec(x_7);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_250);
+lean_inc(x_1);
+x_251 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(x_1, x_250, x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_248);
+if (lean_obj_tag(x_251) == 0)
+{
+lean_object* x_252; lean_object* x_253; lean_object* x_254; uint8_t x_255; 
+x_252 = lean_ctor_get(x_251, 1);
+lean_inc(x_252);
+lean_dec(x_251);
+lean_inc(x_8);
+x_253 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_8, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_252);
+x_254 = lean_ctor_get(x_253, 0);
+lean_inc(x_254);
+x_255 = lean_unbox(x_254);
+lean_dec(x_254);
+if (x_255 == 0)
+{
+lean_object* x_256; lean_object* x_257; lean_object* x_258; 
+lean_dec(x_249);
+lean_dec(x_8);
+lean_dec(x_1);
+x_256 = lean_ctor_get(x_253, 1);
+lean_inc(x_256);
+lean_dec(x_253);
+x_257 = lean_box(0);
+x_258 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_247, x_241, x_9, x_24, x_243, x_242, x_250, x_10, x_245, x_244, x_257, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_256);
+lean_dec(x_250);
+lean_dec(x_243);
+lean_dec(x_24);
+return x_258;
 }
-x_180 = l_Lean_MessageData_ofFormat(x_166);
-x_181 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-if (lean_is_scalar(x_179)) {
- x_182 = lean_alloc_ctor(7, 2, 0);
+else
+{
+lean_object* x_259; lean_object* x_260; lean_object* x_261; lean_object* x_262; lean_object* x_263; lean_object* x_264; lean_object* x_265; lean_object* x_266; lean_object* x_267; lean_object* x_268; lean_object* x_269; 
+x_259 = lean_ctor_get(x_253, 1);
+lean_inc(x_259);
+if (lean_is_exclusive(x_253)) {
+ lean_ctor_release(x_253, 0);
+ lean_ctor_release(x_253, 1);
+ x_260 = x_253;
 } else {
- x_182 = x_179;
- lean_ctor_set_tag(x_182, 7);
-}
-lean_ctor_set(x_182, 0, x_181);
-lean_ctor_set(x_182, 1, x_180);
-x_183 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__2;
-if (lean_is_scalar(x_172)) {
- x_184 = lean_alloc_ctor(7, 2, 0);
+ lean_dec_ref(x_253);
+ x_260 = lean_box(0);
+}
+x_261 = l_Lean_Meta_Grind_ppENodeRef(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_259);
+x_262 = lean_ctor_get(x_261, 0);
+lean_inc(x_262);
+x_263 = lean_ctor_get(x_261, 1);
+lean_inc(x_263);
+if (lean_is_exclusive(x_261)) {
+ lean_ctor_release(x_261, 0);
+ lean_ctor_release(x_261, 1);
+ x_264 = x_261;
 } else {
- x_184 = x_172;
- lean_ctor_set_tag(x_184, 7);
-}
-lean_ctor_set(x_184, 0, x_182);
-lean_ctor_set(x_184, 1, x_183);
-x_185 = l_Lean_MessageData_ofFormat(x_170);
-if (lean_is_scalar(x_168)) {
- x_186 = lean_alloc_ctor(7, 2, 0);
+ lean_dec_ref(x_261);
+ x_264 = lean_box(0);
+}
+x_265 = l_Lean_Meta_Grind_ppENodeRef(x_250, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_263);
+x_266 = lean_ctor_get(x_265, 0);
+lean_inc(x_266);
+x_267 = lean_ctor_get(x_265, 1);
+lean_inc(x_267);
+if (lean_is_exclusive(x_265)) {
+ lean_ctor_release(x_265, 0);
+ lean_ctor_release(x_265, 1);
+ x_268 = x_265;
 } else {
- x_186 = x_168;
- lean_ctor_set_tag(x_186, 7);
+ lean_dec_ref(x_265);
+ x_268 = lean_box(0);
 }
-lean_ctor_set(x_186, 0, x_184);
-lean_ctor_set(x_186, 1, x_185);
-x_187 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__4;
-x_188 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_188, 0, x_186);
-lean_ctor_set(x_188, 1, x_187);
-x_189 = l_Lean_MessageData_ofFormat(x_177);
-if (lean_is_scalar(x_46)) {
- x_190 = lean_alloc_ctor(7, 2, 0);
+x_269 = l_Lean_Meta_Grind_getRoot(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_267);
+if (lean_obj_tag(x_269) == 0)
+{
+lean_object* x_270; lean_object* x_271; lean_object* x_272; lean_object* x_273; lean_object* x_274; lean_object* x_275; lean_object* x_276; lean_object* x_277; lean_object* x_278; lean_object* x_279; lean_object* x_280; lean_object* x_281; lean_object* x_282; lean_object* x_283; lean_object* x_284; lean_object* x_285; lean_object* x_286; lean_object* x_287; lean_object* x_288; lean_object* x_289; lean_object* x_290; lean_object* x_291; 
+x_270 = lean_ctor_get(x_269, 0);
+lean_inc(x_270);
+x_271 = lean_ctor_get(x_269, 1);
+lean_inc(x_271);
+lean_dec(x_269);
+x_272 = l_Lean_Meta_Grind_ppENodeRef(x_270, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_271);
+lean_dec(x_270);
+x_273 = lean_ctor_get(x_272, 0);
+lean_inc(x_273);
+x_274 = lean_ctor_get(x_272, 1);
+lean_inc(x_274);
+if (lean_is_exclusive(x_272)) {
+ lean_ctor_release(x_272, 0);
+ lean_ctor_release(x_272, 1);
+ x_275 = x_272;
 } else {
- x_190 = x_46;
- lean_ctor_set_tag(x_190, 7);
+ lean_dec_ref(x_272);
+ x_275 = lean_box(0);
 }
-lean_ctor_set(x_190, 0, x_188);
-lean_ctor_set(x_190, 1, x_189);
-if (lean_is_scalar(x_39)) {
- x_191 = lean_alloc_ctor(7, 2, 0);
+x_276 = l_Lean_MessageData_ofFormat(x_262);
+x_277 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
+if (lean_is_scalar(x_275)) {
+ x_278 = lean_alloc_ctor(7, 2, 0);
 } else {
- x_191 = x_39;
- lean_ctor_set_tag(x_191, 7);
+ x_278 = x_275;
+ lean_ctor_set_tag(x_278, 7);
 }
-lean_ctor_set(x_191, 0, x_190);
-lean_ctor_set(x_191, 1, x_181);
-x_192 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_8, x_191, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_178);
-x_193 = lean_ctor_get(x_192, 0);
-lean_inc(x_193);
-x_194 = lean_ctor_get(x_192, 1);
-lean_inc(x_194);
-lean_dec(x_192);
-x_195 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(x_37, x_31, x_9, x_24, x_33, x_32, x_40, x_41, x_10, x_35, x_34, x_193, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_194);
-lean_dec(x_193);
-lean_dec(x_40);
-lean_dec(x_33);
+lean_ctor_set(x_278, 0, x_277);
+lean_ctor_set(x_278, 1, x_276);
+x_279 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__4;
+if (lean_is_scalar(x_268)) {
+ x_280 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_280 = x_268;
+ lean_ctor_set_tag(x_280, 7);
+}
+lean_ctor_set(x_280, 0, x_278);
+lean_ctor_set(x_280, 1, x_279);
+x_281 = l_Lean_MessageData_ofFormat(x_266);
+if (lean_is_scalar(x_264)) {
+ x_282 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_282 = x_264;
+ lean_ctor_set_tag(x_282, 7);
+}
+lean_ctor_set(x_282, 0, x_280);
+lean_ctor_set(x_282, 1, x_281);
+x_283 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6;
+if (lean_is_scalar(x_260)) {
+ x_284 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_284 = x_260;
+ lean_ctor_set_tag(x_284, 7);
+}
+lean_ctor_set(x_284, 0, x_282);
+lean_ctor_set(x_284, 1, x_283);
+x_285 = l_Lean_MessageData_ofFormat(x_273);
+if (lean_is_scalar(x_249)) {
+ x_286 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_286 = x_249;
+ lean_ctor_set_tag(x_286, 7);
+}
+lean_ctor_set(x_286, 0, x_284);
+lean_ctor_set(x_286, 1, x_285);
+x_287 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_287, 0, x_286);
+lean_ctor_set(x_287, 1, x_277);
+x_288 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_8, x_287, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_274);
+x_289 = lean_ctor_get(x_288, 0);
+lean_inc(x_289);
+x_290 = lean_ctor_get(x_288, 1);
+lean_inc(x_290);
+lean_dec(x_288);
+x_291 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_247, x_241, x_9, x_24, x_243, x_242, x_250, x_10, x_245, x_244, x_289, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_290);
+lean_dec(x_289);
+lean_dec(x_250);
+lean_dec(x_243);
 lean_dec(x_24);
-return x_195;
+return x_291;
 }
 else
 {
-lean_object* x_196; lean_object* x_197; lean_object* x_198; lean_object* x_199; 
-lean_dec(x_172);
-lean_dec(x_170);
-lean_dec(x_168);
-lean_dec(x_166);
-lean_dec(x_46);
-lean_dec(x_40);
-lean_dec(x_39);
-lean_dec(x_37);
-lean_dec(x_33);
-lean_dec(x_32);
-lean_dec(x_31);
+lean_object* x_292; lean_object* x_293; lean_object* x_294; lean_object* x_295; 
+lean_dec(x_268);
+lean_dec(x_266);
+lean_dec(x_264);
+lean_dec(x_262);
+lean_dec(x_260);
+lean_dec(x_250);
+lean_dec(x_249);
+lean_dec(x_247);
+lean_dec(x_243);
+lean_dec(x_242);
+lean_dec(x_241);
 lean_dec(x_24);
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_9);
 lean_dec(x_8);
-x_196 = lean_ctor_get(x_173, 0);
-lean_inc(x_196);
-x_197 = lean_ctor_get(x_173, 1);
-lean_inc(x_197);
-if (lean_is_exclusive(x_173)) {
- lean_ctor_release(x_173, 0);
- lean_ctor_release(x_173, 1);
- x_198 = x_173;
+x_292 = lean_ctor_get(x_269, 0);
+lean_inc(x_292);
+x_293 = lean_ctor_get(x_269, 1);
+lean_inc(x_293);
+if (lean_is_exclusive(x_269)) {
+ lean_ctor_release(x_269, 0);
+ lean_ctor_release(x_269, 1);
+ x_294 = x_269;
 } else {
- lean_dec_ref(x_173);
- x_198 = lean_box(0);
+ lean_dec_ref(x_269);
+ x_294 = lean_box(0);
 }
-if (lean_is_scalar(x_198)) {
- x_199 = lean_alloc_ctor(1, 2, 0);
+if (lean_is_scalar(x_294)) {
+ x_295 = lean_alloc_ctor(1, 2, 0);
 } else {
- x_199 = x_198;
-}
-lean_ctor_set(x_199, 0, x_196);
-lean_ctor_set(x_199, 1, x_197);
-return x_199;
+ x_295 = x_294;
 }
+lean_ctor_set(x_295, 0, x_292);
+lean_ctor_set(x_295, 1, x_293);
+return x_295;
 }
 }
 }
 else
 {
-uint8_t x_200; 
-lean_dec(x_46);
-lean_dec(x_40);
-lean_dec(x_39);
-lean_dec(x_37);
-lean_dec(x_33);
-lean_dec(x_32);
-lean_dec(x_31);
+lean_object* x_296; lean_object* x_297; lean_object* x_298; lean_object* x_299; 
+lean_dec(x_250);
+lean_dec(x_249);
+lean_dec(x_247);
+lean_dec(x_243);
+lean_dec(x_242);
+lean_dec(x_241);
 lean_dec(x_24);
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_1);
-x_200 = !lean_is_exclusive(x_48);
-if (x_200 == 0)
-{
-return x_48;
-}
-else
-{
-lean_object* x_201; lean_object* x_202; lean_object* x_203; 
-x_201 = lean_ctor_get(x_48, 0);
-x_202 = lean_ctor_get(x_48, 1);
-lean_inc(x_202);
-lean_inc(x_201);
-lean_dec(x_48);
-x_203 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_203, 0, x_201);
-lean_ctor_set(x_203, 1, x_202);
-return x_203;
+x_296 = lean_ctor_get(x_251, 0);
+lean_inc(x_296);
+x_297 = lean_ctor_get(x_251, 1);
+lean_inc(x_297);
+if (lean_is_exclusive(x_251)) {
+ lean_ctor_release(x_251, 0);
+ lean_ctor_release(x_251, 1);
+ x_298 = x_251;
+} else {
+ lean_dec_ref(x_251);
+ x_298 = lean_box(0);
 }
+if (lean_is_scalar(x_298)) {
+ x_299 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_299 = x_298;
 }
+lean_ctor_set(x_299, 0, x_296);
+lean_ctor_set(x_299, 1, x_297);
+return x_299;
 }
 }
 }
 else
 {
-lean_object* x_220; lean_object* x_221; lean_object* x_222; lean_object* x_223; lean_object* x_224; uint8_t x_225; uint8_t x_226; uint8_t x_227; uint8_t x_228; lean_object* x_229; lean_object* x_230; lean_object* x_231; lean_object* x_232; lean_object* x_233; lean_object* x_234; lean_object* x_235; lean_object* x_236; lean_object* x_237; lean_object* x_238; lean_object* x_239; uint8_t x_240; uint8_t x_241; lean_object* x_242; lean_object* x_243; lean_object* x_244; lean_object* x_245; lean_object* x_246; uint8_t x_247; lean_object* x_248; lean_object* x_309; lean_object* x_310; uint8_t x_311; 
-x_220 = lean_ctor_get(x_2, 0);
-x_221 = lean_ctor_get(x_2, 1);
-x_222 = lean_ctor_get(x_2, 2);
-x_223 = lean_ctor_get(x_2, 3);
-x_224 = lean_ctor_get(x_2, 6);
-x_225 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 1);
-x_226 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 2);
-x_227 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 3);
-x_228 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 4);
-x_229 = lean_ctor_get(x_2, 7);
-x_230 = lean_ctor_get(x_2, 8);
-x_231 = lean_ctor_get(x_2, 9);
-lean_inc(x_231);
-lean_inc(x_230);
-lean_inc(x_229);
-lean_inc(x_224);
-lean_inc(x_223);
-lean_inc(x_222);
-lean_inc(x_221);
-lean_inc(x_220);
+lean_object* x_300; lean_object* x_301; lean_object* x_302; lean_object* x_303; lean_object* x_304; uint8_t x_305; uint8_t x_306; uint8_t x_307; uint8_t x_308; lean_object* x_309; lean_object* x_310; lean_object* x_311; lean_object* x_312; lean_object* x_313; lean_object* x_314; lean_object* x_315; lean_object* x_316; lean_object* x_317; lean_object* x_318; lean_object* x_319; lean_object* x_320; uint8_t x_321; uint8_t x_322; lean_object* x_323; lean_object* x_324; lean_object* x_325; lean_object* x_326; lean_object* x_327; lean_object* x_328; 
+x_300 = lean_ctor_get(x_2, 0);
+x_301 = lean_ctor_get(x_2, 1);
+x_302 = lean_ctor_get(x_2, 2);
+x_303 = lean_ctor_get(x_2, 3);
+x_304 = lean_ctor_get(x_2, 6);
+x_305 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 1);
+x_306 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 2);
+x_307 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 3);
+x_308 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 4);
+x_309 = lean_ctor_get(x_2, 7);
+x_310 = lean_ctor_get(x_2, 8);
+x_311 = lean_ctor_get(x_2, 9);
+lean_inc(x_311);
+lean_inc(x_310);
+lean_inc(x_309);
+lean_inc(x_304);
+lean_inc(x_303);
+lean_inc(x_302);
+lean_inc(x_301);
+lean_inc(x_300);
 lean_dec(x_2);
-x_232 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_232, 0, x_3);
-x_233 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_233, 0, x_4);
-lean_inc(x_222);
-x_234 = lean_alloc_ctor(0, 10, 5);
-lean_ctor_set(x_234, 0, x_220);
-lean_ctor_set(x_234, 1, x_221);
-lean_ctor_set(x_234, 2, x_222);
-lean_ctor_set(x_234, 3, x_223);
-lean_ctor_set(x_234, 4, x_232);
-lean_ctor_set(x_234, 5, x_233);
-lean_ctor_set(x_234, 6, x_224);
-lean_ctor_set(x_234, 7, x_229);
-lean_ctor_set(x_234, 8, x_230);
-lean_ctor_set(x_234, 9, x_231);
-lean_ctor_set_uint8(x_234, sizeof(void*)*10, x_5);
-lean_ctor_set_uint8(x_234, sizeof(void*)*10 + 1, x_225);
-lean_ctor_set_uint8(x_234, sizeof(void*)*10 + 2, x_226);
-lean_ctor_set_uint8(x_234, sizeof(void*)*10 + 3, x_227);
-lean_ctor_set_uint8(x_234, sizeof(void*)*10 + 4, x_228);
-x_235 = l_Lean_Meta_Grind_setENode(x_1, x_234, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_22);
-x_236 = lean_ctor_get(x_235, 1);
-lean_inc(x_236);
-lean_dec(x_235);
-x_237 = lean_ctor_get(x_6, 0);
-lean_inc(x_237);
-x_238 = lean_ctor_get(x_6, 1);
-lean_inc(x_238);
-x_239 = lean_ctor_get(x_6, 6);
-lean_inc(x_239);
-x_240 = lean_ctor_get_uint8(x_6, sizeof(void*)*10 + 3);
-x_241 = lean_ctor_get_uint8(x_6, sizeof(void*)*10 + 4);
-lean_dec(x_6);
-x_242 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents(x_237, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_236);
-x_243 = lean_ctor_get(x_242, 0);
-lean_inc(x_243);
-x_244 = lean_ctor_get(x_242, 1);
-lean_inc(x_244);
-if (lean_is_exclusive(x_242)) {
- lean_ctor_release(x_242, 0);
- lean_ctor_release(x_242, 1);
- x_245 = x_242;
+x_312 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_312, 0, x_3);
+x_313 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_313, 0, x_4);
+lean_inc(x_302);
+x_314 = lean_alloc_ctor(0, 10, 5);
+lean_ctor_set(x_314, 0, x_300);
+lean_ctor_set(x_314, 1, x_301);
+lean_ctor_set(x_314, 2, x_302);
+lean_ctor_set(x_314, 3, x_303);
+lean_ctor_set(x_314, 4, x_312);
+lean_ctor_set(x_314, 5, x_313);
+lean_ctor_set(x_314, 6, x_304);
+lean_ctor_set(x_314, 7, x_309);
+lean_ctor_set(x_314, 8, x_310);
+lean_ctor_set(x_314, 9, x_311);
+lean_ctor_set_uint8(x_314, sizeof(void*)*10, x_5);
+lean_ctor_set_uint8(x_314, sizeof(void*)*10 + 1, x_305);
+lean_ctor_set_uint8(x_314, sizeof(void*)*10 + 2, x_306);
+lean_ctor_set_uint8(x_314, sizeof(void*)*10 + 3, x_307);
+lean_ctor_set_uint8(x_314, sizeof(void*)*10 + 4, x_308);
+x_315 = l_Lean_Meta_Grind_setENode(x_1, x_314, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_22);
+x_316 = lean_ctor_get(x_315, 1);
+lean_inc(x_316);
+if (lean_is_exclusive(x_315)) {
+ lean_ctor_release(x_315, 0);
+ lean_ctor_release(x_315, 1);
+ x_317 = x_315;
 } else {
- lean_dec_ref(x_242);
- x_245 = lean_box(0);
+ lean_dec_ref(x_315);
+ x_317 = lean_box(0);
 }
-x_246 = lean_ctor_get(x_7, 2);
-lean_inc(x_246);
-lean_dec(x_7);
-x_309 = l_Lean_Meta_Grind_isTrueExpr(x_246, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_244);
-x_310 = lean_ctor_get(x_309, 0);
-lean_inc(x_310);
-x_311 = lean_unbox(x_310);
-if (x_311 == 0)
-{
-lean_object* x_312; lean_object* x_313; lean_object* x_314; lean_object* x_315; uint8_t x_316; 
-lean_dec(x_310);
-x_312 = lean_ctor_get(x_309, 1);
-lean_inc(x_312);
-lean_dec(x_309);
-x_313 = l_Lean_Meta_Grind_isFalseExpr(x_246, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_312);
-x_314 = lean_ctor_get(x_313, 0);
-lean_inc(x_314);
-x_315 = lean_ctor_get(x_313, 1);
-lean_inc(x_315);
-lean_dec(x_313);
-x_316 = lean_unbox(x_314);
-lean_dec(x_314);
-x_247 = x_316;
-x_248 = x_315;
-goto block_308;
-}
-else
-{
-lean_object* x_317; uint8_t x_318; 
-x_317 = lean_ctor_get(x_309, 1);
-lean_inc(x_317);
-lean_dec(x_309);
-x_318 = lean_unbox(x_310);
-lean_dec(x_310);
-x_247 = x_318;
-x_248 = x_317;
-goto block_308;
-}
-block_308:
-{
-lean_object* x_249; lean_object* x_250; lean_object* x_251; lean_object* x_252; uint8_t x_253; 
-x_249 = l_Lean_Meta_Grind_isInconsistent(x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_248);
-x_250 = lean_ctor_get(x_249, 0);
-lean_inc(x_250);
-x_251 = lean_ctor_get(x_249, 1);
-lean_inc(x_251);
-if (lean_is_exclusive(x_249)) {
- lean_ctor_release(x_249, 0);
- lean_ctor_release(x_249, 1);
- x_252 = x_249;
+x_318 = lean_ctor_get(x_6, 0);
+lean_inc(x_318);
+x_319 = lean_ctor_get(x_6, 1);
+lean_inc(x_319);
+x_320 = lean_ctor_get(x_6, 6);
+lean_inc(x_320);
+x_321 = lean_ctor_get_uint8(x_6, sizeof(void*)*10 + 3);
+x_322 = lean_ctor_get_uint8(x_6, sizeof(void*)*10 + 4);
+lean_dec(x_6);
+x_323 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents(x_318, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_316);
+x_324 = lean_ctor_get(x_323, 0);
+lean_inc(x_324);
+x_325 = lean_ctor_get(x_323, 1);
+lean_inc(x_325);
+if (lean_is_exclusive(x_323)) {
+ lean_ctor_release(x_323, 0);
+ lean_ctor_release(x_323, 1);
+ x_326 = x_323;
 } else {
- lean_dec_ref(x_249);
- x_252 = lean_box(0);
-}
-if (x_247 == 0)
-{
-uint8_t x_304; 
-lean_dec(x_250);
-x_304 = 0;
-x_253 = x_304;
-goto block_303;
-}
-else
-{
-uint8_t x_305; 
-x_305 = lean_unbox(x_250);
-lean_dec(x_250);
-if (x_305 == 0)
-{
-uint8_t x_306; 
-x_306 = 1;
-x_253 = x_306;
-goto block_303;
-}
-else
-{
-uint8_t x_307; 
-x_307 = 0;
-x_253 = x_307;
-goto block_303;
-}
+ lean_dec_ref(x_323);
+ x_326 = lean_box(0);
 }
-block_303:
-{
-lean_object* x_254; 
+x_327 = lean_ctor_get(x_7, 2);
+lean_inc(x_327);
+lean_dec(x_7);
 lean_inc(x_19);
 lean_inc(x_18);
 lean_inc(x_17);
 lean_inc(x_16);
-lean_inc(x_246);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_327);
 lean_inc(x_1);
-x_254 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(x_1, x_246, x_253, x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_251);
-if (lean_obj_tag(x_254) == 0)
+x_328 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_updateRoots_loop(x_1, x_327, x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_325);
+if (lean_obj_tag(x_328) == 0)
 {
-lean_object* x_255; lean_object* x_256; lean_object* x_257; uint8_t x_258; 
-x_255 = lean_ctor_get(x_254, 1);
-lean_inc(x_255);
-lean_dec(x_254);
+lean_object* x_329; lean_object* x_330; lean_object* x_331; uint8_t x_332; 
+x_329 = lean_ctor_get(x_328, 1);
+lean_inc(x_329);
+lean_dec(x_328);
 lean_inc(x_8);
-x_256 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_8, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_255);
-x_257 = lean_ctor_get(x_256, 0);
-lean_inc(x_257);
-x_258 = lean_unbox(x_257);
-lean_dec(x_257);
-if (x_258 == 0)
-{
-lean_object* x_259; lean_object* x_260; lean_object* x_261; 
-lean_dec(x_252);
-lean_dec(x_245);
+x_330 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_8, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_329);
+x_331 = lean_ctor_get(x_330, 0);
+lean_inc(x_331);
+x_332 = lean_unbox(x_331);
+lean_dec(x_331);
+if (x_332 == 0)
+{
+lean_object* x_333; lean_object* x_334; lean_object* x_335; 
+lean_dec(x_326);
+lean_dec(x_317);
 lean_dec(x_8);
 lean_dec(x_1);
-x_259 = lean_ctor_get(x_256, 1);
-lean_inc(x_259);
-lean_dec(x_256);
-x_260 = lean_box(0);
-x_261 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(x_243, x_237, x_9, x_222, x_239, x_238, x_246, x_247, x_10, x_241, x_240, x_260, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_259);
-lean_dec(x_246);
-lean_dec(x_239);
-lean_dec(x_222);
-return x_261;
+x_333 = lean_ctor_get(x_330, 1);
+lean_inc(x_333);
+lean_dec(x_330);
+x_334 = lean_box(0);
+x_335 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_324, x_318, x_9, x_302, x_320, x_319, x_327, x_10, x_322, x_321, x_334, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_333);
+lean_dec(x_327);
+lean_dec(x_320);
+lean_dec(x_302);
+return x_335;
 }
 else
 {
-lean_object* x_262; lean_object* x_263; lean_object* x_264; lean_object* x_265; lean_object* x_266; lean_object* x_267; lean_object* x_268; lean_object* x_269; lean_object* x_270; lean_object* x_271; lean_object* x_272; 
-x_262 = lean_ctor_get(x_256, 1);
-lean_inc(x_262);
-if (lean_is_exclusive(x_256)) {
- lean_ctor_release(x_256, 0);
- lean_ctor_release(x_256, 1);
- x_263 = x_256;
+lean_object* x_336; lean_object* x_337; lean_object* x_338; lean_object* x_339; lean_object* x_340; lean_object* x_341; lean_object* x_342; lean_object* x_343; lean_object* x_344; lean_object* x_345; lean_object* x_346; 
+x_336 = lean_ctor_get(x_330, 1);
+lean_inc(x_336);
+if (lean_is_exclusive(x_330)) {
+ lean_ctor_release(x_330, 0);
+ lean_ctor_release(x_330, 1);
+ x_337 = x_330;
 } else {
- lean_dec_ref(x_256);
- x_263 = lean_box(0);
+ lean_dec_ref(x_330);
+ x_337 = lean_box(0);
 }
-x_264 = l_Lean_Meta_Grind_ppENodeRef(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_262);
-x_265 = lean_ctor_get(x_264, 0);
-lean_inc(x_265);
-x_266 = lean_ctor_get(x_264, 1);
-lean_inc(x_266);
-if (lean_is_exclusive(x_264)) {
- lean_ctor_release(x_264, 0);
- lean_ctor_release(x_264, 1);
- x_267 = x_264;
+x_338 = l_Lean_Meta_Grind_ppENodeRef(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_336);
+x_339 = lean_ctor_get(x_338, 0);
+lean_inc(x_339);
+x_340 = lean_ctor_get(x_338, 1);
+lean_inc(x_340);
+if (lean_is_exclusive(x_338)) {
+ lean_ctor_release(x_338, 0);
+ lean_ctor_release(x_338, 1);
+ x_341 = x_338;
 } else {
- lean_dec_ref(x_264);
- x_267 = lean_box(0);
+ lean_dec_ref(x_338);
+ x_341 = lean_box(0);
 }
-x_268 = l_Lean_Meta_Grind_ppENodeRef(x_246, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_266);
-x_269 = lean_ctor_get(x_268, 0);
-lean_inc(x_269);
-x_270 = lean_ctor_get(x_268, 1);
-lean_inc(x_270);
-if (lean_is_exclusive(x_268)) {
- lean_ctor_release(x_268, 0);
- lean_ctor_release(x_268, 1);
- x_271 = x_268;
+x_342 = l_Lean_Meta_Grind_ppENodeRef(x_327, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_340);
+x_343 = lean_ctor_get(x_342, 0);
+lean_inc(x_343);
+x_344 = lean_ctor_get(x_342, 1);
+lean_inc(x_344);
+if (lean_is_exclusive(x_342)) {
+ lean_ctor_release(x_342, 0);
+ lean_ctor_release(x_342, 1);
+ x_345 = x_342;
 } else {
- lean_dec_ref(x_268);
- x_271 = lean_box(0);
+ lean_dec_ref(x_342);
+ x_345 = lean_box(0);
 }
-x_272 = l_Lean_Meta_Grind_getRoot(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_270);
-if (lean_obj_tag(x_272) == 0)
+x_346 = l_Lean_Meta_Grind_getRoot(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_344);
+if (lean_obj_tag(x_346) == 0)
 {
-lean_object* x_273; lean_object* x_274; lean_object* x_275; lean_object* x_276; lean_object* x_277; lean_object* x_278; lean_object* x_279; lean_object* x_280; lean_object* x_281; lean_object* x_282; lean_object* x_283; lean_object* x_284; lean_object* x_285; lean_object* x_286; lean_object* x_287; lean_object* x_288; lean_object* x_289; lean_object* x_290; lean_object* x_291; lean_object* x_292; lean_object* x_293; lean_object* x_294; 
-x_273 = lean_ctor_get(x_272, 0);
-lean_inc(x_273);
-x_274 = lean_ctor_get(x_272, 1);
-lean_inc(x_274);
-lean_dec(x_272);
-x_275 = l_Lean_Meta_Grind_ppENodeRef(x_273, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_274);
-lean_dec(x_273);
-x_276 = lean_ctor_get(x_275, 0);
-lean_inc(x_276);
-x_277 = lean_ctor_get(x_275, 1);
-lean_inc(x_277);
-if (lean_is_exclusive(x_275)) {
- lean_ctor_release(x_275, 0);
- lean_ctor_release(x_275, 1);
- x_278 = x_275;
+lean_object* x_347; lean_object* x_348; lean_object* x_349; lean_object* x_350; lean_object* x_351; lean_object* x_352; lean_object* x_353; lean_object* x_354; lean_object* x_355; lean_object* x_356; lean_object* x_357; lean_object* x_358; lean_object* x_359; lean_object* x_360; lean_object* x_361; lean_object* x_362; lean_object* x_363; lean_object* x_364; lean_object* x_365; lean_object* x_366; lean_object* x_367; lean_object* x_368; 
+x_347 = lean_ctor_get(x_346, 0);
+lean_inc(x_347);
+x_348 = lean_ctor_get(x_346, 1);
+lean_inc(x_348);
+lean_dec(x_346);
+x_349 = l_Lean_Meta_Grind_ppENodeRef(x_347, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_348);
+lean_dec(x_347);
+x_350 = lean_ctor_get(x_349, 0);
+lean_inc(x_350);
+x_351 = lean_ctor_get(x_349, 1);
+lean_inc(x_351);
+if (lean_is_exclusive(x_349)) {
+ lean_ctor_release(x_349, 0);
+ lean_ctor_release(x_349, 1);
+ x_352 = x_349;
 } else {
- lean_dec_ref(x_275);
- x_278 = lean_box(0);
+ lean_dec_ref(x_349);
+ x_352 = lean_box(0);
 }
-x_279 = l_Lean_MessageData_ofFormat(x_265);
-x_280 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
-if (lean_is_scalar(x_278)) {
- x_281 = lean_alloc_ctor(7, 2, 0);
+x_353 = l_Lean_MessageData_ofFormat(x_339);
+x_354 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
+if (lean_is_scalar(x_352)) {
+ x_355 = lean_alloc_ctor(7, 2, 0);
 } else {
- x_281 = x_278;
- lean_ctor_set_tag(x_281, 7);
-}
-lean_ctor_set(x_281, 0, x_280);
-lean_ctor_set(x_281, 1, x_279);
-x_282 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__2;
-if (lean_is_scalar(x_271)) {
- x_283 = lean_alloc_ctor(7, 2, 0);
+ x_355 = x_352;
+ lean_ctor_set_tag(x_355, 7);
+}
+lean_ctor_set(x_355, 0, x_354);
+lean_ctor_set(x_355, 1, x_353);
+x_356 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__4;
+if (lean_is_scalar(x_345)) {
+ x_357 = lean_alloc_ctor(7, 2, 0);
 } else {
- x_283 = x_271;
- lean_ctor_set_tag(x_283, 7);
-}
-lean_ctor_set(x_283, 0, x_281);
-lean_ctor_set(x_283, 1, x_282);
-x_284 = l_Lean_MessageData_ofFormat(x_269);
-if (lean_is_scalar(x_267)) {
- x_285 = lean_alloc_ctor(7, 2, 0);
+ x_357 = x_345;
+ lean_ctor_set_tag(x_357, 7);
+}
+lean_ctor_set(x_357, 0, x_355);
+lean_ctor_set(x_357, 1, x_356);
+x_358 = l_Lean_MessageData_ofFormat(x_343);
+if (lean_is_scalar(x_341)) {
+ x_359 = lean_alloc_ctor(7, 2, 0);
 } else {
- x_285 = x_267;
- lean_ctor_set_tag(x_285, 7);
-}
-lean_ctor_set(x_285, 0, x_283);
-lean_ctor_set(x_285, 1, x_284);
-x_286 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__4;
-if (lean_is_scalar(x_263)) {
- x_287 = lean_alloc_ctor(7, 2, 0);
+ x_359 = x_341;
+ lean_ctor_set_tag(x_359, 7);
+}
+lean_ctor_set(x_359, 0, x_357);
+lean_ctor_set(x_359, 1, x_358);
+x_360 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6;
+if (lean_is_scalar(x_337)) {
+ x_361 = lean_alloc_ctor(7, 2, 0);
 } else {
- x_287 = x_263;
- lean_ctor_set_tag(x_287, 7);
-}
-lean_ctor_set(x_287, 0, x_285);
-lean_ctor_set(x_287, 1, x_286);
-x_288 = l_Lean_MessageData_ofFormat(x_276);
-if (lean_is_scalar(x_252)) {
- x_289 = lean_alloc_ctor(7, 2, 0);
+ x_361 = x_337;
+ lean_ctor_set_tag(x_361, 7);
+}
+lean_ctor_set(x_361, 0, x_359);
+lean_ctor_set(x_361, 1, x_360);
+x_362 = l_Lean_MessageData_ofFormat(x_350);
+if (lean_is_scalar(x_326)) {
+ x_363 = lean_alloc_ctor(7, 2, 0);
 } else {
- x_289 = x_252;
- lean_ctor_set_tag(x_289, 7);
+ x_363 = x_326;
+ lean_ctor_set_tag(x_363, 7);
 }
-lean_ctor_set(x_289, 0, x_287);
-lean_ctor_set(x_289, 1, x_288);
-if (lean_is_scalar(x_245)) {
- x_290 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_363, 0, x_361);
+lean_ctor_set(x_363, 1, x_362);
+if (lean_is_scalar(x_317)) {
+ x_364 = lean_alloc_ctor(7, 2, 0);
 } else {
- x_290 = x_245;
- lean_ctor_set_tag(x_290, 7);
-}
-lean_ctor_set(x_290, 0, x_289);
-lean_ctor_set(x_290, 1, x_280);
-x_291 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_8, x_290, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_277);
-x_292 = lean_ctor_get(x_291, 0);
-lean_inc(x_292);
-x_293 = lean_ctor_get(x_291, 1);
-lean_inc(x_293);
-lean_dec(x_291);
-x_294 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(x_243, x_237, x_9, x_222, x_239, x_238, x_246, x_247, x_10, x_241, x_240, x_292, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_293);
-lean_dec(x_292);
-lean_dec(x_246);
-lean_dec(x_239);
-lean_dec(x_222);
-return x_294;
+ x_364 = x_317;
+ lean_ctor_set_tag(x_364, 7);
+}
+lean_ctor_set(x_364, 0, x_363);
+lean_ctor_set(x_364, 1, x_354);
+x_365 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_8, x_364, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_351);
+x_366 = lean_ctor_get(x_365, 0);
+lean_inc(x_366);
+x_367 = lean_ctor_get(x_365, 1);
+lean_inc(x_367);
+lean_dec(x_365);
+x_368 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_324, x_318, x_9, x_302, x_320, x_319, x_327, x_10, x_322, x_321, x_366, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_367);
+lean_dec(x_366);
+lean_dec(x_327);
+lean_dec(x_320);
+lean_dec(x_302);
+return x_368;
 }
 else
 {
-lean_object* x_295; lean_object* x_296; lean_object* x_297; lean_object* x_298; 
-lean_dec(x_271);
-lean_dec(x_269);
-lean_dec(x_267);
-lean_dec(x_265);
-lean_dec(x_263);
-lean_dec(x_252);
-lean_dec(x_246);
-lean_dec(x_245);
-lean_dec(x_243);
-lean_dec(x_239);
-lean_dec(x_238);
-lean_dec(x_237);
-lean_dec(x_222);
+lean_object* x_369; lean_object* x_370; lean_object* x_371; lean_object* x_372; 
+lean_dec(x_345);
+lean_dec(x_343);
+lean_dec(x_341);
+lean_dec(x_339);
+lean_dec(x_337);
+lean_dec(x_327);
+lean_dec(x_326);
+lean_dec(x_324);
+lean_dec(x_320);
+lean_dec(x_319);
+lean_dec(x_318);
+lean_dec(x_317);
+lean_dec(x_302);
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_9);
 lean_dec(x_8);
-x_295 = lean_ctor_get(x_272, 0);
-lean_inc(x_295);
-x_296 = lean_ctor_get(x_272, 1);
-lean_inc(x_296);
-if (lean_is_exclusive(x_272)) {
- lean_ctor_release(x_272, 0);
- lean_ctor_release(x_272, 1);
- x_297 = x_272;
+x_369 = lean_ctor_get(x_346, 0);
+lean_inc(x_369);
+x_370 = lean_ctor_get(x_346, 1);
+lean_inc(x_370);
+if (lean_is_exclusive(x_346)) {
+ lean_ctor_release(x_346, 0);
+ lean_ctor_release(x_346, 1);
+ x_371 = x_346;
 } else {
- lean_dec_ref(x_272);
- x_297 = lean_box(0);
+ lean_dec_ref(x_346);
+ x_371 = lean_box(0);
 }
-if (lean_is_scalar(x_297)) {
- x_298 = lean_alloc_ctor(1, 2, 0);
+if (lean_is_scalar(x_371)) {
+ x_372 = lean_alloc_ctor(1, 2, 0);
 } else {
- x_298 = x_297;
+ x_372 = x_371;
 }
-lean_ctor_set(x_298, 0, x_295);
-lean_ctor_set(x_298, 1, x_296);
-return x_298;
+lean_ctor_set(x_372, 0, x_369);
+lean_ctor_set(x_372, 1, x_370);
+return x_372;
 }
 }
 }
 else
 {
-lean_object* x_299; lean_object* x_300; lean_object* x_301; lean_object* x_302; 
-lean_dec(x_252);
-lean_dec(x_246);
-lean_dec(x_245);
-lean_dec(x_243);
-lean_dec(x_239);
-lean_dec(x_238);
-lean_dec(x_237);
-lean_dec(x_222);
+lean_object* x_373; lean_object* x_374; lean_object* x_375; lean_object* x_376; 
+lean_dec(x_327);
+lean_dec(x_326);
+lean_dec(x_324);
+lean_dec(x_320);
+lean_dec(x_319);
+lean_dec(x_318);
+lean_dec(x_317);
+lean_dec(x_302);
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_1);
-x_299 = lean_ctor_get(x_254, 0);
-lean_inc(x_299);
-x_300 = lean_ctor_get(x_254, 1);
-lean_inc(x_300);
-if (lean_is_exclusive(x_254)) {
- lean_ctor_release(x_254, 0);
- lean_ctor_release(x_254, 1);
- x_301 = x_254;
+x_373 = lean_ctor_get(x_328, 0);
+lean_inc(x_373);
+x_374 = lean_ctor_get(x_328, 1);
+lean_inc(x_374);
+if (lean_is_exclusive(x_328)) {
+ lean_ctor_release(x_328, 0);
+ lean_ctor_release(x_328, 1);
+ x_375 = x_328;
 } else {
- lean_dec_ref(x_254);
- x_301 = lean_box(0);
+ lean_dec_ref(x_328);
+ x_375 = lean_box(0);
 }
-if (lean_is_scalar(x_301)) {
- x_302 = lean_alloc_ctor(1, 2, 0);
+if (lean_is_scalar(x_375)) {
+ x_376 = lean_alloc_ctor(1, 2, 0);
 } else {
- x_302 = x_301;
-}
-lean_ctor_set(x_302, 0, x_299);
-lean_ctor_set(x_302, 1, x_300);
-return x_302;
-}
+ x_376 = x_375;
 }
+lean_ctor_set(x_376, 0, x_373);
+lean_ctor_set(x_376, 1, x_374);
+return x_376;
 }
 }
 }
 else
 {
-uint8_t x_319; 
+uint8_t x_377; 
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
@@ -9942,23 +5258,23 @@ lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_319 = !lean_is_exclusive(x_21);
-if (x_319 == 0)
+x_377 = !lean_is_exclusive(x_21);
+if (x_377 == 0)
 {
 return x_21;
 }
 else
 {
-lean_object* x_320; lean_object* x_321; lean_object* x_322; 
-x_320 = lean_ctor_get(x_21, 0);
-x_321 = lean_ctor_get(x_21, 1);
-lean_inc(x_321);
-lean_inc(x_320);
+lean_object* x_378; lean_object* x_379; lean_object* x_380; 
+x_378 = lean_ctor_get(x_21, 0);
+x_379 = lean_ctor_get(x_21, 1);
+lean_inc(x_379);
+lean_inc(x_378);
 lean_dec(x_21);
-x_322 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_322, 0, x_320);
-lean_ctor_set(x_322, 1, x_321);
-return x_322;
+x_380 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_380, 0, x_378);
+lean_ctor_set(x_380, 1, x_379);
+return x_380;
 }
 }
 }
@@ -9967,21 +5283,29 @@ static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_G
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("debug", 5, 5);
+x_1 = lean_mk_string_unchecked("grind", 5, 5);
 return x_1;
 }
 }
 static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__2() {
 _start:
 {
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("debug", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__3() {
+_start:
+{
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__1;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__2;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__3() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__4() {
 _start:
 {
 lean_object* x_1; 
@@ -9989,16 +5313,16 @@ x_1 = lean_mk_string_unchecked("adding ", 7, 7);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__4() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__3;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__4;
 x_2 = l_Lean_stringToMessageData(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__5() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -10006,11 +5330,11 @@ x_1 = lean_mk_string_unchecked(" ↦ ", 5, 3);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__6() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__5;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__6;
 x_2 = l_Lean_stringToMessageData(x_1);
 return x_2;
 }
@@ -10019,8 +5343,8 @@ LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Gr
 _start:
 {
 lean_object* x_19; lean_object* x_20; lean_object* x_21; uint8_t x_22; 
-x_19 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__2;
-x_20 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_19, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18);
+x_19 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__3;
+x_20 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_19, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18);
 x_21 = lean_ctor_get(x_20, 0);
 lean_inc(x_21);
 x_22 = lean_unbox(x_21);
@@ -10032,7 +5356,7 @@ x_23 = lean_ctor_get(x_20, 1);
 lean_inc(x_23);
 lean_dec(x_20);
 x_24 = lean_box(0);
-x_25 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_3, x_5, x_4, x_1, x_9, x_7, x_6, x_19, x_8, x_2, x_24, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_23);
+x_25 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3(x_3, x_5, x_4, x_1, x_9, x_7, x_6, x_19, x_8, x_2, x_24, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_23);
 return x_25;
 }
 else
@@ -10060,11 +5384,11 @@ lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean
 x_35 = lean_ctor_get(x_33, 0);
 x_36 = lean_ctor_get(x_33, 1);
 x_37 = l_Lean_MessageData_ofFormat(x_31);
-x_38 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__4;
+x_38 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__5;
 lean_ctor_set_tag(x_33, 7);
 lean_ctor_set(x_33, 1, x_37);
 lean_ctor_set(x_33, 0, x_38);
-x_39 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__6;
+x_39 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__7;
 lean_ctor_set_tag(x_29, 7);
 lean_ctor_set(x_29, 1, x_39);
 lean_ctor_set(x_29, 0, x_33);
@@ -10072,17 +5396,17 @@ x_40 = l_Lean_MessageData_ofFormat(x_35);
 lean_ctor_set_tag(x_20, 7);
 lean_ctor_set(x_20, 1, x_40);
 lean_ctor_set(x_20, 0, x_29);
-x_41 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_41 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 x_42 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_42, 0, x_20);
 lean_ctor_set(x_42, 1, x_41);
-x_43 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_19, x_42, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_36);
+x_43 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_19, x_42, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_36);
 x_44 = lean_ctor_get(x_43, 0);
 lean_inc(x_44);
 x_45 = lean_ctor_get(x_43, 1);
 lean_inc(x_45);
 lean_dec(x_43);
-x_46 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_3, x_5, x_4, x_1, x_9, x_7, x_6, x_19, x_8, x_2, x_44, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_45);
+x_46 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3(x_3, x_5, x_4, x_1, x_9, x_7, x_6, x_19, x_8, x_2, x_44, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_45);
 lean_dec(x_44);
 return x_46;
 }
@@ -10095,11 +5419,11 @@ lean_inc(x_48);
 lean_inc(x_47);
 lean_dec(x_33);
 x_49 = l_Lean_MessageData_ofFormat(x_31);
-x_50 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__4;
+x_50 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__5;
 x_51 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_51, 0, x_50);
 lean_ctor_set(x_51, 1, x_49);
-x_52 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__6;
+x_52 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__7;
 lean_ctor_set_tag(x_29, 7);
 lean_ctor_set(x_29, 1, x_52);
 lean_ctor_set(x_29, 0, x_51);
@@ -10107,17 +5431,17 @@ x_53 = l_Lean_MessageData_ofFormat(x_47);
 lean_ctor_set_tag(x_20, 7);
 lean_ctor_set(x_20, 1, x_53);
 lean_ctor_set(x_20, 0, x_29);
-x_54 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_54 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 x_55 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_55, 0, x_20);
 lean_ctor_set(x_55, 1, x_54);
-x_56 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_19, x_55, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_48);
+x_56 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_19, x_55, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_48);
 x_57 = lean_ctor_get(x_56, 0);
 lean_inc(x_57);
 x_58 = lean_ctor_get(x_56, 1);
 lean_inc(x_58);
 lean_dec(x_56);
-x_59 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_3, x_5, x_4, x_1, x_9, x_7, x_6, x_19, x_8, x_2, x_57, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_58);
+x_59 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3(x_3, x_5, x_4, x_1, x_9, x_7, x_6, x_19, x_8, x_2, x_57, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_58);
 lean_dec(x_57);
 return x_59;
 }
@@ -10144,7 +5468,7 @@ if (lean_is_exclusive(x_62)) {
  x_65 = lean_box(0);
 }
 x_66 = l_Lean_MessageData_ofFormat(x_60);
-x_67 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__4;
+x_67 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__5;
 if (lean_is_scalar(x_65)) {
  x_68 = lean_alloc_ctor(7, 2, 0);
 } else {
@@ -10153,7 +5477,7 @@ if (lean_is_scalar(x_65)) {
 }
 lean_ctor_set(x_68, 0, x_67);
 lean_ctor_set(x_68, 1, x_66);
-x_69 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__6;
+x_69 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__7;
 x_70 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_70, 0, x_68);
 lean_ctor_set(x_70, 1, x_69);
@@ -10161,17 +5485,17 @@ x_71 = l_Lean_MessageData_ofFormat(x_63);
 lean_ctor_set_tag(x_20, 7);
 lean_ctor_set(x_20, 1, x_71);
 lean_ctor_set(x_20, 0, x_70);
-x_72 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_72 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 x_73 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_73, 0, x_20);
 lean_ctor_set(x_73, 1, x_72);
-x_74 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_19, x_73, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_64);
+x_74 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_19, x_73, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_64);
 x_75 = lean_ctor_get(x_74, 0);
 lean_inc(x_75);
 x_76 = lean_ctor_get(x_74, 1);
 lean_inc(x_76);
 lean_dec(x_74);
-x_77 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_3, x_5, x_4, x_1, x_9, x_7, x_6, x_19, x_8, x_2, x_75, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_76);
+x_77 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3(x_3, x_5, x_4, x_1, x_9, x_7, x_6, x_19, x_8, x_2, x_75, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_76);
 lean_dec(x_75);
 return x_77;
 }
@@ -10209,7 +5533,7 @@ if (lean_is_exclusive(x_83)) {
  x_86 = lean_box(0);
 }
 x_87 = l_Lean_MessageData_ofFormat(x_80);
-x_88 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__4;
+x_88 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__5;
 if (lean_is_scalar(x_86)) {
  x_89 = lean_alloc_ctor(7, 2, 0);
 } else {
@@ -10218,7 +5542,7 @@ if (lean_is_scalar(x_86)) {
 }
 lean_ctor_set(x_89, 0, x_88);
 lean_ctor_set(x_89, 1, x_87);
-x_90 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__6;
+x_90 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__7;
 if (lean_is_scalar(x_82)) {
  x_91 = lean_alloc_ctor(7, 2, 0);
 } else {
@@ -10231,36 +5555,42 @@ x_92 = l_Lean_MessageData_ofFormat(x_84);
 x_93 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_93, 0, x_91);
 lean_ctor_set(x_93, 1, x_92);
-x_94 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_94 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 x_95 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_95, 0, x_93);
 lean_ctor_set(x_95, 1, x_94);
-x_96 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_19, x_95, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_85);
+x_96 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_19, x_95, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_85);
 x_97 = lean_ctor_get(x_96, 0);
 lean_inc(x_97);
 x_98 = lean_ctor_get(x_96, 1);
 lean_inc(x_98);
 lean_dec(x_96);
-x_99 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_3, x_5, x_4, x_1, x_9, x_7, x_6, x_19, x_8, x_2, x_97, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_98);
+x_99 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3(x_3, x_5, x_4, x_1, x_9, x_7, x_6, x_19, x_8, x_2, x_97, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_98);
 lean_dec(x_97);
 return x_99;
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___spec__1___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, lean_object* x_10, lean_object* x_11) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1___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, lean_object* x_10, lean_object* x_11) {
 _start:
 {
 lean_object* x_12; 
-x_12 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+x_12 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_12;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1___boxed(lean_object** _args) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___boxed(lean_object** _args) {
 lean_object* x_1 = _args[0];
 lean_object* x_2 = _args[1];
 lean_object* x_3 = _args[2];
@@ -10281,31 +5611,24 @@ lean_object* x_17 = _args[16];
 lean_object* x_18 = _args[17];
 lean_object* x_19 = _args[18];
 lean_object* x_20 = _args[19];
-lean_object* x_21 = _args[20];
 _start:
 {
-uint8_t x_22; uint8_t x_23; uint8_t x_24; uint8_t x_25; lean_object* x_26; 
-x_22 = lean_unbox(x_8);
+uint8_t x_21; uint8_t x_22; uint8_t x_23; lean_object* x_24; 
+x_21 = lean_unbox(x_8);
 lean_dec(x_8);
-x_23 = lean_unbox(x_9);
-lean_dec(x_9);
-x_24 = lean_unbox(x_10);
-lean_dec(x_10);
-x_25 = lean_unbox(x_11);
-lean_dec(x_11);
-x_26 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_22, x_23, x_24, x_25, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_21);
-lean_dec(x_16);
-lean_dec(x_15);
-lean_dec(x_14);
-lean_dec(x_13);
-lean_dec(x_12);
+x_22 = lean_unbox(x_9);
+lean_dec(x_9);
+x_23 = lean_unbox(x_10);
+lean_dec(x_10);
+x_24 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_21, x_22, x_23, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
+lean_dec(x_11);
 lean_dec(x_7);
 lean_dec(x_5);
 lean_dec(x_4);
-return x_26;
+return x_24;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___boxed(lean_object** _args) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___boxed(lean_object** _args) {
 lean_object* x_1 = _args[0];
 lean_object* x_2 = _args[1];
 lean_object* x_3 = _args[2];
@@ -10333,11 +5656,7 @@ x_21 = lean_unbox(x_5);
 lean_dec(x_5);
 x_22 = lean_unbox(x_10);
 lean_dec(x_10);
-x_23 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2(x_1, x_2, x_3, x_4, x_21, x_6, x_7, x_8, x_9, x_22, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
-lean_dec(x_15);
-lean_dec(x_14);
-lean_dec(x_13);
-lean_dec(x_12);
+x_23 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3(x_1, x_2, x_3, x_4, x_21, x_6, x_7, x_8, x_9, x_22, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
 lean_dec(x_11);
 return x_23;
 }
@@ -10369,19 +5688,16 @@ lean_dec(x_2);
 x_20 = lean_unbox(x_9);
 lean_dec(x_9);
 x_21 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_1, x_19, x_3, x_4, x_5, x_6, x_7, x_8, x_20, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
 return x_21;
 }
 }
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___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:
 {
-lean_object* x_11; 
-x_11 = l_Lean_Meta_Grind_checkInvariants(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_11;
+uint8_t x_11; lean_object* x_12; 
+x_11 = 0;
+x_12 = l_Lean_Meta_Grind_checkInvariants(x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_12;
 }
 }
 static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__2___closed__1() {
@@ -10413,8 +5729,8 @@ LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Gr
 _start:
 {
 lean_object* x_11; lean_object* x_12; uint8_t x_13; 
-x_11 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__2;
-x_12 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+x_11 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__3;
+x_12 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 x_13 = !lean_is_exclusive(x_12);
 if (x_13 == 0)
 {
@@ -10457,11 +5773,11 @@ x_24 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___la
 lean_ctor_set_tag(x_12, 7);
 lean_ctor_set(x_12, 1, x_23);
 lean_ctor_set(x_12, 0, x_24);
-x_25 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_25 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 x_26 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_26, 0, x_12);
 lean_ctor_set(x_26, 1, x_25);
-x_27 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_11, x_26, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_22);
+x_27 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_11, x_26, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_22);
 x_28 = lean_ctor_get(x_27, 0);
 lean_inc(x_28);
 x_29 = lean_ctor_get(x_27, 1);
@@ -10546,11 +5862,11 @@ x_45 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___la
 x_46 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_46, 0, x_45);
 lean_ctor_set(x_46, 1, x_44);
-x_47 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_47 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 x_48 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_48, 0, x_46);
 lean_ctor_set(x_48, 1, x_47);
-x_49 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_11, x_48, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_43);
+x_49 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_11, x_48, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_43);
 x_50 = lean_ctor_get(x_49, 0);
 lean_inc(x_50);
 x_51 = lean_ctor_get(x_49, 1);
@@ -10603,16 +5919,295 @@ x_1 = lean_alloc_closure((void*)(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, uint8_t x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18, lean_object* x_19) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; 
+x_14 = l_Lean_Meta_Grind_isInconsistent(x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+x_15 = lean_ctor_get(x_14, 0);
+lean_inc(x_15);
+x_16 = lean_ctor_get(x_14, 1);
+lean_inc(x_16);
+lean_dec(x_14);
+x_17 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3___closed__1;
+x_18 = lean_unbox(x_15);
+lean_dec(x_15);
+if (x_18 == 0)
+{
+if (x_1 == 0)
+{
+lean_object* x_19; lean_object* x_20; 
+lean_dec(x_3);
+lean_dec(x_2);
+x_19 = lean_box(0);
+x_20 = lean_apply_10(x_17, x_19, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_16);
+return x_20;
+}
+else
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; 
+x_21 = lean_ctor_get(x_2, 0);
+lean_inc(x_21);
+lean_dec(x_2);
+x_22 = lean_ctor_get(x_3, 0);
+lean_inc(x_22);
+lean_dec(x_3);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+x_23 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq(x_21, x_22, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_16);
+if (lean_obj_tag(x_23) == 0)
+{
+lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+x_24 = lean_ctor_get(x_23, 0);
+lean_inc(x_24);
+x_25 = lean_ctor_get(x_23, 1);
+lean_inc(x_25);
+lean_dec(x_23);
+x_26 = lean_apply_10(x_17, x_24, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_25);
+return x_26;
+}
+else
+{
+uint8_t x_27; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+x_27 = !lean_is_exclusive(x_23);
+if (x_27 == 0)
+{
+return x_23;
+}
+else
+{
+lean_object* x_28; lean_object* x_29; lean_object* x_30; 
+x_28 = lean_ctor_get(x_23, 0);
+x_29 = lean_ctor_get(x_23, 1);
+lean_inc(x_29);
+lean_inc(x_28);
+lean_dec(x_23);
+x_30 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_30, 0, x_28);
+lean_ctor_set(x_30, 1, x_29);
+return x_30;
+}
+}
+}
+}
+else
+{
+lean_object* x_31; lean_object* x_32; 
+lean_dec(x_3);
+lean_dec(x_2);
+x_31 = lean_box(0);
+x_32 = lean_apply_10(x_17, x_31, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_16);
+return x_32;
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__4(uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; lean_object* x_15; uint8_t x_16; 
+x_14 = l_Lean_Meta_Grind_isInconsistent(x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+x_15 = lean_ctor_get(x_14, 0);
+lean_inc(x_15);
+x_16 = lean_unbox(x_15);
+lean_dec(x_15);
+if (x_16 == 0)
+{
+uint8_t x_17; 
+x_17 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 2);
+if (x_17 == 0)
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_18 = lean_ctor_get(x_14, 1);
+lean_inc(x_18);
+lean_dec(x_14);
+x_19 = lean_box(0);
+x_20 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(x_1, x_2, x_3, x_19, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_18);
+return x_20;
+}
+else
+{
+uint8_t x_21; 
+x_21 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 2);
+if (x_21 == 0)
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_22 = lean_ctor_get(x_14, 1);
+lean_inc(x_22);
+lean_dec(x_14);
+x_23 = lean_box(0);
+x_24 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(x_1, x_2, x_3, x_23, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_22);
+return x_24;
+}
+else
+{
+lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_25 = lean_ctor_get(x_14, 1);
+lean_inc(x_25);
+lean_dec(x_14);
+x_26 = lean_ctor_get(x_2, 0);
+lean_inc(x_26);
+x_27 = lean_ctor_get(x_3, 0);
+lean_inc(x_27);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+x_28 = l_Lean_Meta_Grind_propagateCtor(x_26, x_27, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_25);
+if (lean_obj_tag(x_28) == 0)
+{
+lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+x_29 = lean_ctor_get(x_28, 0);
+lean_inc(x_29);
+x_30 = lean_ctor_get(x_28, 1);
+lean_inc(x_30);
+lean_dec(x_28);
+x_31 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(x_1, x_2, x_3, x_29, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_30);
+lean_dec(x_29);
+return x_31;
+}
+else
+{
+uint8_t x_32; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+lean_dec(x_2);
+x_32 = !lean_is_exclusive(x_28);
+if (x_32 == 0)
+{
+return x_28;
+}
+else
+{
+lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_33 = lean_ctor_get(x_28, 0);
+x_34 = lean_ctor_get(x_28, 1);
+lean_inc(x_34);
+lean_inc(x_33);
+lean_dec(x_28);
+x_35 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_35, 0, x_33);
+lean_ctor_set(x_35, 1, x_34);
+return x_35;
+}
+}
+}
+}
+}
+else
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; 
+x_36 = lean_ctor_get(x_14, 1);
+lean_inc(x_36);
+lean_dec(x_14);
+x_37 = lean_box(0);
+x_38 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(x_1, x_2, x_3, x_37, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_36);
+return x_38;
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5(uint8_t x_1, lean_object* x_2, lean_object* x_3, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+if (x_4 == 0)
+{
+lean_object* x_15; lean_object* x_16; 
+x_15 = lean_box(0);
+x_16 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__4(x_1, x_2, x_3, x_15, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+return x_16;
+}
+else
+{
+lean_object* x_17; 
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+x_17 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse(x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_17) == 0)
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_18 = lean_ctor_get(x_17, 0);
+lean_inc(x_18);
+x_19 = lean_ctor_get(x_17, 1);
+lean_inc(x_19);
+lean_dec(x_17);
+x_20 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__4(x_1, x_2, x_3, x_18, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_19);
+lean_dec(x_18);
+return x_20;
+}
+else
+{
+uint8_t x_21; 
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_3);
+lean_dec(x_2);
+x_21 = !lean_is_exclusive(x_17);
+if (x_21 == 0)
+{
+return x_17;
+}
+else
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_22 = lean_ctor_get(x_17, 0);
+x_23 = lean_ctor_get(x_17, 1);
+lean_inc(x_23);
+lean_inc(x_22);
+lean_dec(x_17);
+x_24 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_24, 0, x_22);
+lean_ctor_set(x_24, 1, x_23);
+return x_24;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, uint8_t x_9, uint8_t x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18, lean_object* x_19, lean_object* x_20) {
 _start:
 {
-lean_object* x_20; lean_object* x_21; uint8_t x_64; 
-x_20 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3___closed__1;
-x_64 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 1);
+lean_object* x_21; uint8_t x_64; 
+x_64 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 1);
 if (x_64 == 0)
 {
 uint8_t x_65; 
-x_65 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 2);
+x_65 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 2);
 if (x_65 == 0)
 {
 lean_object* x_66; 
@@ -10623,16 +6218,22 @@ goto block_63;
 else
 {
 uint8_t x_67; 
-x_67 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 2);
+x_67 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 2);
 if (x_67 == 0)
 {
 uint8_t x_68; lean_object* x_69; 
 x_68 = 1;
+lean_inc(x_19);
 lean_inc(x_18);
 lean_inc(x_17);
 lean_inc(x_16);
 lean_inc(x_15);
-x_69 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_3, x_4, x_6, x_5, x_8, x_7, x_1, x_2, x_68, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_1);
+lean_inc(x_2);
+x_69 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_3, x_4, x_6, x_5, x_8, x_7, x_2, x_1, x_68, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
 if (lean_obj_tag(x_69) == 0)
 {
 lean_object* x_70; lean_object* x_71; lean_object* x_72; 
@@ -10641,12 +6242,14 @@ lean_inc(x_70);
 x_71 = lean_ctor_get(x_69, 1);
 lean_inc(x_71);
 lean_dec(x_69);
-x_72 = lean_apply_10(x_20, x_70, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_71);
+x_72 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5(x_10, x_1, x_2, x_9, x_70, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_71);
+lean_dec(x_70);
 return x_72;
 }
 else
 {
 uint8_t x_73; 
+lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
@@ -10654,7 +6257,8 @@ lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
-lean_dec(x_11);
+lean_dec(x_2);
+lean_dec(x_1);
 x_73 = !lean_is_exclusive(x_69);
 if (x_73 == 0)
 {
@@ -10687,16 +6291,22 @@ goto block_63;
 else
 {
 uint8_t x_78; 
-x_78 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 1);
+x_78 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 1);
 if (x_78 == 0)
 {
 uint8_t x_79; lean_object* x_80; 
 x_79 = 1;
+lean_inc(x_19);
 lean_inc(x_18);
 lean_inc(x_17);
 lean_inc(x_16);
 lean_inc(x_15);
-x_80 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_3, x_4, x_6, x_5, x_8, x_7, x_1, x_2, x_79, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_1);
+lean_inc(x_2);
+x_80 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_3, x_4, x_6, x_5, x_8, x_7, x_2, x_1, x_79, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
 if (lean_obj_tag(x_80) == 0)
 {
 lean_object* x_81; lean_object* x_82; lean_object* x_83; 
@@ -10705,12 +6315,14 @@ lean_inc(x_81);
 x_82 = lean_ctor_get(x_80, 1);
 lean_inc(x_82);
 lean_dec(x_80);
-x_83 = lean_apply_10(x_20, x_81, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_82);
+x_83 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5(x_10, x_1, x_2, x_9, x_81, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_82);
+lean_dec(x_81);
 return x_83;
 }
 else
 {
 uint8_t x_84; 
+lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
@@ -10718,7 +6330,8 @@ lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
-lean_dec(x_11);
+lean_dec(x_2);
+lean_dec(x_1);
 x_84 = !lean_is_exclusive(x_80);
 if (x_84 == 0)
 {
@@ -10742,7 +6355,7 @@ return x_87;
 else
 {
 uint8_t x_88; 
-x_88 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 2);
+x_88 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 2);
 if (x_88 == 0)
 {
 lean_object* x_89; 
@@ -10753,16 +6366,22 @@ goto block_63;
 else
 {
 uint8_t x_90; 
-x_90 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 2);
+x_90 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 2);
 if (x_90 == 0)
 {
 uint8_t x_91; lean_object* x_92; 
 x_91 = 1;
+lean_inc(x_19);
 lean_inc(x_18);
 lean_inc(x_17);
 lean_inc(x_16);
 lean_inc(x_15);
-x_92 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_3, x_4, x_6, x_5, x_8, x_7, x_1, x_2, x_91, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_1);
+lean_inc(x_2);
+x_92 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_3, x_4, x_6, x_5, x_8, x_7, x_2, x_1, x_91, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
 if (lean_obj_tag(x_92) == 0)
 {
 lean_object* x_93; lean_object* x_94; lean_object* x_95; 
@@ -10771,12 +6390,14 @@ lean_inc(x_93);
 x_94 = lean_ctor_get(x_92, 1);
 lean_inc(x_94);
 lean_dec(x_92);
-x_95 = lean_apply_10(x_20, x_93, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_94);
+x_95 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5(x_10, x_1, x_2, x_9, x_93, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_94);
+lean_dec(x_93);
 return x_95;
 }
 else
 {
 uint8_t x_96; 
+lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
@@ -10784,7 +6405,8 @@ lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
-lean_dec(x_11);
+lean_dec(x_2);
+lean_dec(x_1);
 x_96 = !lean_is_exclusive(x_92);
 if (x_96 == 0)
 {
@@ -10819,9 +6441,9 @@ goto block_63;
 {
 lean_object* x_22; lean_object* x_23; uint8_t x_24; 
 lean_dec(x_21);
-x_22 = lean_ctor_get(x_1, 6);
+x_22 = lean_ctor_get(x_2, 6);
 lean_inc(x_22);
-x_23 = lean_ctor_get(x_2, 6);
+x_23 = lean_ctor_get(x_1, 6);
 lean_inc(x_23);
 x_24 = lean_nat_dec_lt(x_22, x_23);
 lean_dec(x_23);
@@ -10830,11 +6452,17 @@ if (x_24 == 0)
 {
 uint8_t x_25; lean_object* x_26; 
 x_25 = 0;
+lean_inc(x_19);
 lean_inc(x_18);
 lean_inc(x_17);
 lean_inc(x_16);
 lean_inc(x_15);
-x_26 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_3, x_4, x_5, x_6, x_7, x_8, x_2, x_1, x_25, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_2);
+lean_inc(x_1);
+x_26 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_3, x_4, x_5, x_6, x_7, x_8, x_1, x_2, x_25, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
 if (lean_obj_tag(x_26) == 0)
 {
 lean_object* x_27; lean_object* x_28; lean_object* x_29; 
@@ -10843,12 +6471,14 @@ lean_inc(x_27);
 x_28 = lean_ctor_get(x_26, 1);
 lean_inc(x_28);
 lean_dec(x_26);
-x_29 = lean_apply_10(x_20, x_27, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_28);
+x_29 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5(x_10, x_1, x_2, x_9, x_27, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_28);
+lean_dec(x_27);
 return x_29;
 }
 else
 {
 uint8_t x_30; 
+lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
@@ -10856,7 +6486,8 @@ lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
-lean_dec(x_11);
+lean_dec(x_2);
+lean_dec(x_1);
 x_30 = !lean_is_exclusive(x_26);
 if (x_30 == 0)
 {
@@ -10880,20 +6511,26 @@ return x_33;
 else
 {
 uint8_t x_34; 
-x_34 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 1);
+x_34 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 1);
 if (x_34 == 0)
 {
 uint8_t x_35; 
-x_35 = lean_ctor_get_uint8(x_1, sizeof(void*)*10 + 2);
+x_35 = lean_ctor_get_uint8(x_2, sizeof(void*)*10 + 2);
 if (x_35 == 0)
 {
 uint8_t x_36; lean_object* x_37; 
 x_36 = 1;
+lean_inc(x_19);
 lean_inc(x_18);
 lean_inc(x_17);
 lean_inc(x_16);
 lean_inc(x_15);
-x_37 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_3, x_4, x_6, x_5, x_8, x_7, x_1, x_2, x_36, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_1);
+lean_inc(x_2);
+x_37 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_3, x_4, x_6, x_5, x_8, x_7, x_2, x_1, x_36, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
 if (lean_obj_tag(x_37) == 0)
 {
 lean_object* x_38; lean_object* x_39; lean_object* x_40; 
@@ -10902,12 +6539,14 @@ lean_inc(x_38);
 x_39 = lean_ctor_get(x_37, 1);
 lean_inc(x_39);
 lean_dec(x_37);
-x_40 = lean_apply_10(x_20, x_38, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_39);
+x_40 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5(x_10, x_1, x_2, x_9, x_38, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_39);
+lean_dec(x_38);
 return x_40;
 }
 else
 {
 uint8_t x_41; 
+lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
@@ -10915,7 +6554,8 @@ lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
-lean_dec(x_11);
+lean_dec(x_2);
+lean_dec(x_1);
 x_41 = !lean_is_exclusive(x_37);
 if (x_41 == 0)
 {
@@ -10940,11 +6580,17 @@ else
 {
 uint8_t x_45; lean_object* x_46; 
 x_45 = 0;
+lean_inc(x_19);
 lean_inc(x_18);
 lean_inc(x_17);
 lean_inc(x_16);
 lean_inc(x_15);
-x_46 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_3, x_4, x_5, x_6, x_7, x_8, x_2, x_1, x_45, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_2);
+lean_inc(x_1);
+x_46 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_3, x_4, x_5, x_6, x_7, x_8, x_1, x_2, x_45, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
 if (lean_obj_tag(x_46) == 0)
 {
 lean_object* x_47; lean_object* x_48; lean_object* x_49; 
@@ -10953,12 +6599,14 @@ lean_inc(x_47);
 x_48 = lean_ctor_get(x_46, 1);
 lean_inc(x_48);
 lean_dec(x_46);
-x_49 = lean_apply_10(x_20, x_47, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_48);
+x_49 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5(x_10, x_1, x_2, x_9, x_47, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_48);
+lean_dec(x_47);
 return x_49;
 }
 else
 {
 uint8_t x_50; 
+lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
@@ -10966,7 +6614,8 @@ lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
-lean_dec(x_11);
+lean_dec(x_2);
+lean_dec(x_1);
 x_50 = !lean_is_exclusive(x_46);
 if (x_50 == 0)
 {
@@ -10992,11 +6641,17 @@ else
 {
 uint8_t x_54; lean_object* x_55; 
 x_54 = 0;
+lean_inc(x_19);
 lean_inc(x_18);
 lean_inc(x_17);
 lean_inc(x_16);
 lean_inc(x_15);
-x_55 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_3, x_4, x_5, x_6, x_7, x_8, x_2, x_1, x_54, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_2);
+lean_inc(x_1);
+x_55 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go(x_3, x_4, x_5, x_6, x_7, x_8, x_1, x_2, x_54, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
 if (lean_obj_tag(x_55) == 0)
 {
 lean_object* x_56; lean_object* x_57; lean_object* x_58; 
@@ -11005,12 +6660,14 @@ lean_inc(x_56);
 x_57 = lean_ctor_get(x_55, 1);
 lean_inc(x_57);
 lean_dec(x_55);
-x_58 = lean_apply_10(x_20, x_56, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_57);
+x_58 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5(x_10, x_1, x_2, x_9, x_56, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_57);
+lean_dec(x_56);
 return x_58;
 }
 else
 {
 uint8_t x_59; 
+lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
@@ -11018,7 +6675,8 @@ lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
-lean_dec(x_11);
+lean_dec(x_2);
+lean_dec(x_1);
 x_59 = !lean_is_exclusive(x_55);
 if (x_59 == 0)
 {
@@ -11043,7 +6701,7 @@ return x_62;
 }
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__4(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__7(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
 _start:
 {
 lean_object* x_17; lean_object* x_18; 
@@ -11079,7 +6737,7 @@ lean_inc(x_25);
 lean_dec(x_22);
 x_26 = 0;
 x_27 = lean_box(0);
-x_28 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(x_24, x_19, x_3, x_4, x_5, x_6, x_1, x_2, x_26, x_27, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_25);
+x_28 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(x_19, x_24, x_3, x_4, x_5, x_6, x_1, x_2, x_26, x_26, x_27, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_25);
 return x_28;
 }
 else
@@ -11098,7 +6756,7 @@ lean_inc(x_31);
 lean_dec(x_22);
 x_32 = 0;
 x_33 = lean_box(0);
-x_34 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(x_29, x_19, x_3, x_4, x_5, x_6, x_1, x_2, x_32, x_33, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_31);
+x_34 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(x_19, x_29, x_3, x_4, x_5, x_6, x_1, x_2, x_32, x_32, x_33, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_31);
 return x_34;
 }
 else
@@ -11114,48 +6772,47 @@ uint8_t x_37;
 x_37 = l_Lean_Expr_isTrue(x_21);
 if (x_37 == 0)
 {
-uint8_t x_38; lean_object* x_39; lean_object* x_40; 
-x_38 = 1;
-x_39 = lean_box(0);
-x_40 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(x_29, x_19, x_3, x_4, x_5, x_6, x_1, x_2, x_38, x_39, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_35);
-return x_40;
+uint8_t x_38; uint8_t x_39; lean_object* x_40; lean_object* x_41; 
+x_38 = 0;
+x_39 = 1;
+x_40 = lean_box(0);
+x_41 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(x_19, x_29, x_3, x_4, x_5, x_6, x_1, x_2, x_38, x_39, x_40, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_35);
+return x_41;
 }
 else
 {
-lean_object* x_41; lean_object* x_42; lean_object* x_43; uint8_t x_44; lean_object* x_45; 
-x_41 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_markAsInconsistent(x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_35);
-x_42 = lean_ctor_get(x_41, 0);
-lean_inc(x_42);
-x_43 = lean_ctor_get(x_41, 1);
+lean_object* x_42; lean_object* x_43; uint8_t x_44; uint8_t x_45; lean_object* x_46; lean_object* x_47; 
+x_42 = l_Lean_Meta_Grind_markAsInconsistent(x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_35);
+x_43 = lean_ctor_get(x_42, 1);
 lean_inc(x_43);
-lean_dec(x_41);
-x_44 = 0;
-x_45 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(x_29, x_19, x_3, x_4, x_5, x_6, x_1, x_2, x_44, x_42, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_43);
 lean_dec(x_42);
-return x_45;
+x_44 = 1;
+x_45 = 0;
+x_46 = lean_box(0);
+x_47 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(x_19, x_29, x_3, x_4, x_5, x_6, x_1, x_2, x_44, x_45, x_46, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_43);
+return x_47;
 }
 }
 else
 {
-lean_object* x_46; lean_object* x_47; lean_object* x_48; uint8_t x_49; lean_object* x_50; 
+lean_object* x_48; lean_object* x_49; uint8_t x_50; uint8_t x_51; lean_object* x_52; lean_object* x_53; 
 lean_dec(x_21);
-x_46 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_markAsInconsistent(x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_35);
-x_47 = lean_ctor_get(x_46, 0);
-lean_inc(x_47);
-x_48 = lean_ctor_get(x_46, 1);
-lean_inc(x_48);
-lean_dec(x_46);
-x_49 = 0;
-x_50 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(x_29, x_19, x_3, x_4, x_5, x_6, x_1, x_2, x_49, x_47, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_48);
-lean_dec(x_47);
-return x_50;
+x_48 = l_Lean_Meta_Grind_markAsInconsistent(x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_35);
+x_49 = lean_ctor_get(x_48, 1);
+lean_inc(x_49);
+lean_dec(x_48);
+x_50 = 1;
+x_51 = 0;
+x_52 = lean_box(0);
+x_53 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(x_19, x_29, x_3, x_4, x_5, x_6, x_1, x_2, x_50, x_51, x_52, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_49);
+return x_53;
 }
 }
 }
 }
 else
 {
-uint8_t x_51; 
+uint8_t x_54; 
 lean_dec(x_21);
 lean_dec(x_19);
 lean_dec(x_17);
@@ -11172,29 +6829,29 @@ lean_dec(x_5);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_51 = !lean_is_exclusive(x_22);
-if (x_51 == 0)
+x_54 = !lean_is_exclusive(x_22);
+if (x_54 == 0)
 {
 return x_22;
 }
 else
 {
-lean_object* x_52; lean_object* x_53; lean_object* x_54; 
-x_52 = lean_ctor_get(x_22, 0);
-x_53 = lean_ctor_get(x_22, 1);
-lean_inc(x_53);
-lean_inc(x_52);
+lean_object* x_55; lean_object* x_56; lean_object* x_57; 
+x_55 = lean_ctor_get(x_22, 0);
+x_56 = lean_ctor_get(x_22, 1);
+lean_inc(x_56);
+lean_inc(x_55);
 lean_dec(x_22);
-x_54 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_54, 0, x_52);
-lean_ctor_set(x_54, 1, x_53);
-return x_54;
+x_57 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_57, 0, x_55);
+lean_ctor_set(x_57, 1, x_56);
+return x_57;
 }
 }
 }
 else
 {
-uint8_t x_55; 
+uint8_t x_58; 
 lean_dec(x_17);
 lean_dec(x_15);
 lean_dec(x_14);
@@ -11209,28 +6866,28 @@ lean_dec(x_5);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_55 = !lean_is_exclusive(x_18);
-if (x_55 == 0)
+x_58 = !lean_is_exclusive(x_18);
+if (x_58 == 0)
 {
 return x_18;
 }
 else
 {
-lean_object* x_56; lean_object* x_57; lean_object* x_58; 
-x_56 = lean_ctor_get(x_18, 0);
-x_57 = lean_ctor_get(x_18, 1);
-lean_inc(x_57);
-lean_inc(x_56);
+lean_object* x_59; lean_object* x_60; lean_object* x_61; 
+x_59 = lean_ctor_get(x_18, 0);
+x_60 = lean_ctor_get(x_18, 1);
+lean_inc(x_60);
+lean_inc(x_59);
 lean_dec(x_18);
-x_58 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_58, 0, x_56);
-lean_ctor_set(x_58, 1, x_57);
-return x_58;
+x_61 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_61, 0, x_59);
+lean_ctor_set(x_61, 1, x_60);
+return x_61;
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5(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) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__8(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:
 {
 lean_object* x_11; lean_object* x_12; 
@@ -11241,15 +6898,15 @@ lean_ctor_set(x_12, 1, x_10);
 return x_12;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__1() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__1() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5___boxed), 10, 0);
+x_1 = lean_alloc_closure((void*)(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__8___boxed), 10, 0);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__2() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__2() {
 _start:
 {
 lean_object* x_1; 
@@ -11257,16 +6914,16 @@ x_1 = lean_mk_string_unchecked(" and ", 5, 5);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__3() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__2;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__2;
 x_2 = l_Lean_stringToMessageData(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__4() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__4() {
 _start:
 {
 lean_object* x_1; 
@@ -11274,16 +6931,16 @@ x_1 = lean_mk_string_unchecked(" are already in the same equivalence class", 42,
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__5() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__4;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__4;
 x_2 = l_Lean_stringToMessageData(x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
 _start:
 {
 lean_object* x_15; 
@@ -11318,7 +6975,7 @@ if (x_23 == 0)
 {
 lean_object* x_24; lean_object* x_25; 
 x_24 = lean_box(0);
-x_25 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__4(x_16, x_19, x_3, x_4, x_1, x_2, x_24, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_20);
+x_25 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__7(x_16, x_19, x_3, x_4, x_1, x_2, x_24, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_20);
 return x_25;
 }
 else
@@ -11327,15 +6984,15 @@ lean_object* x_26; lean_object* x_27; uint8_t x_28;
 lean_dec(x_19);
 lean_dec(x_16);
 lean_dec(x_3);
-x_26 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__2;
-x_27 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_26, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_20);
+x_26 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__3;
+x_27 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_26, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_20);
 x_28 = !lean_is_exclusive(x_27);
 if (x_28 == 0)
 {
 lean_object* x_29; lean_object* x_30; lean_object* x_31; uint8_t x_32; 
 x_29 = lean_ctor_get(x_27, 0);
 x_30 = lean_ctor_get(x_27, 1);
-x_31 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__1;
+x_31 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__1;
 x_32 = lean_unbox(x_29);
 lean_dec(x_29);
 if (x_32 == 0)
@@ -11368,11 +7025,11 @@ lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean
 x_41 = lean_ctor_get(x_39, 0);
 x_42 = lean_ctor_get(x_39, 1);
 x_43 = l_Lean_MessageData_ofFormat(x_37);
-x_44 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_44 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 lean_ctor_set_tag(x_39, 7);
 lean_ctor_set(x_39, 1, x_43);
 lean_ctor_set(x_39, 0, x_44);
-x_45 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__3;
+x_45 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__3;
 lean_ctor_set_tag(x_35, 7);
 lean_ctor_set(x_35, 1, x_45);
 lean_ctor_set(x_35, 0, x_39);
@@ -11380,11 +7037,11 @@ x_46 = l_Lean_MessageData_ofFormat(x_41);
 lean_ctor_set_tag(x_27, 7);
 lean_ctor_set(x_27, 1, x_46);
 lean_ctor_set(x_27, 0, x_35);
-x_47 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__5;
+x_47 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__5;
 x_48 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_48, 0, x_27);
 lean_ctor_set(x_48, 1, x_47);
-x_49 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_26, x_48, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_42);
+x_49 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_26, x_48, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_42);
 x_50 = lean_ctor_get(x_49, 0);
 lean_inc(x_50);
 x_51 = lean_ctor_get(x_49, 1);
@@ -11402,11 +7059,11 @@ lean_inc(x_54);
 lean_inc(x_53);
 lean_dec(x_39);
 x_55 = l_Lean_MessageData_ofFormat(x_37);
-x_56 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_56 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 x_57 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_57, 0, x_56);
 lean_ctor_set(x_57, 1, x_55);
-x_58 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__3;
+x_58 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__3;
 lean_ctor_set_tag(x_35, 7);
 lean_ctor_set(x_35, 1, x_58);
 lean_ctor_set(x_35, 0, x_57);
@@ -11414,11 +7071,11 @@ x_59 = l_Lean_MessageData_ofFormat(x_53);
 lean_ctor_set_tag(x_27, 7);
 lean_ctor_set(x_27, 1, x_59);
 lean_ctor_set(x_27, 0, x_35);
-x_60 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__5;
+x_60 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__5;
 x_61 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_61, 0, x_27);
 lean_ctor_set(x_61, 1, x_60);
-x_62 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_26, x_61, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_54);
+x_62 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_26, x_61, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_54);
 x_63 = lean_ctor_get(x_62, 0);
 lean_inc(x_63);
 x_64 = lean_ctor_get(x_62, 1);
@@ -11451,7 +7108,7 @@ if (lean_is_exclusive(x_68)) {
  x_71 = lean_box(0);
 }
 x_72 = l_Lean_MessageData_ofFormat(x_66);
-x_73 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_73 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 if (lean_is_scalar(x_71)) {
  x_74 = lean_alloc_ctor(7, 2, 0);
 } else {
@@ -11460,7 +7117,7 @@ if (lean_is_scalar(x_71)) {
 }
 lean_ctor_set(x_74, 0, x_73);
 lean_ctor_set(x_74, 1, x_72);
-x_75 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__3;
+x_75 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__3;
 x_76 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_76, 0, x_74);
 lean_ctor_set(x_76, 1, x_75);
@@ -11468,11 +7125,11 @@ x_77 = l_Lean_MessageData_ofFormat(x_69);
 lean_ctor_set_tag(x_27, 7);
 lean_ctor_set(x_27, 1, x_77);
 lean_ctor_set(x_27, 0, x_76);
-x_78 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__5;
+x_78 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__5;
 x_79 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_79, 0, x_27);
 lean_ctor_set(x_79, 1, x_78);
-x_80 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_26, x_79, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_70);
+x_80 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_26, x_79, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_70);
 x_81 = lean_ctor_get(x_80, 0);
 lean_inc(x_81);
 x_82 = lean_ctor_get(x_80, 1);
@@ -11491,7 +7148,7 @@ x_85 = lean_ctor_get(x_27, 1);
 lean_inc(x_85);
 lean_inc(x_84);
 lean_dec(x_27);
-x_86 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__1;
+x_86 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__1;
 x_87 = lean_unbox(x_84);
 lean_dec(x_84);
 if (x_87 == 0)
@@ -11535,7 +7192,7 @@ if (lean_is_exclusive(x_94)) {
  x_97 = lean_box(0);
 }
 x_98 = l_Lean_MessageData_ofFormat(x_91);
-x_99 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_99 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 if (lean_is_scalar(x_97)) {
  x_100 = lean_alloc_ctor(7, 2, 0);
 } else {
@@ -11544,7 +7201,7 @@ if (lean_is_scalar(x_97)) {
 }
 lean_ctor_set(x_100, 0, x_99);
 lean_ctor_set(x_100, 1, x_98);
-x_101 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__3;
+x_101 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__3;
 if (lean_is_scalar(x_93)) {
  x_102 = lean_alloc_ctor(7, 2, 0);
 } else {
@@ -11557,11 +7214,11 @@ x_103 = l_Lean_MessageData_ofFormat(x_95);
 x_104 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_104, 0, x_102);
 lean_ctor_set(x_104, 1, x_103);
-x_105 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__5;
+x_105 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__5;
 x_106 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_106, 0, x_104);
 lean_ctor_set(x_106, 1, x_105);
-x_107 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_26, x_106, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_96);
+x_107 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_26, x_106, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_96);
 x_108 = lean_ctor_get(x_107, 0);
 lean_inc(x_108);
 x_109 = lean_ctor_get(x_107, 1);
@@ -11655,7 +7312,7 @@ static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_G
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__1;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__1;
 x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
@@ -11717,7 +7374,7 @@ LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Gr
 {
 lean_object* x_14; lean_object* x_15; lean_object* x_16; uint8_t x_17; 
 x_14 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__2;
-x_15 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_14, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+x_15 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_14, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
 x_16 = lean_ctor_get(x_15, 0);
 lean_inc(x_16);
 x_17 = lean_unbox(x_16);
@@ -11729,7 +7386,7 @@ x_18 = lean_ctor_get(x_15, 1);
 lean_inc(x_18);
 lean_dec(x_15);
 x_19 = lean_box(0);
-x_20 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(x_1, x_2, x_3, x_4, x_19, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_18);
+x_20 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9(x_1, x_2, x_3, x_4, x_19, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_18);
 return x_20;
 }
 else
@@ -11744,7 +7401,7 @@ x_23 = lean_ctor_get(x_15, 0);
 lean_dec(x_23);
 lean_inc(x_1);
 x_24 = l_Lean_MessageData_ofExpr(x_1);
-x_25 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_25 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 lean_ctor_set_tag(x_15, 7);
 lean_ctor_set(x_15, 1, x_24);
 lean_ctor_set(x_15, 0, x_25);
@@ -11770,13 +7427,13 @@ lean_ctor_set(x_32, 1, x_28);
 x_33 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_33, 0, x_32);
 lean_ctor_set(x_33, 1, x_25);
-x_34 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_33, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_22);
+x_34 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_33, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_22);
 x_35 = lean_ctor_get(x_34, 0);
 lean_inc(x_35);
 x_36 = lean_ctor_get(x_34, 1);
 lean_inc(x_36);
 lean_dec(x_34);
-x_37 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(x_1, x_2, x_3, x_4, x_35, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_36);
+x_37 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9(x_1, x_2, x_3, x_4, x_35, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_36);
 lean_dec(x_35);
 return x_37;
 }
@@ -11796,13 +7453,13 @@ lean_ctor_set(x_41, 1, x_28);
 x_42 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_42, 0, x_41);
 lean_ctor_set(x_42, 1, x_25);
-x_43 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_42, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_22);
+x_43 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_42, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_22);
 x_44 = lean_ctor_get(x_43, 0);
 lean_inc(x_44);
 x_45 = lean_ctor_get(x_43, 1);
 lean_inc(x_45);
 lean_dec(x_43);
-x_46 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(x_1, x_2, x_3, x_4, x_44, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_45);
+x_46 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9(x_1, x_2, x_3, x_4, x_44, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_45);
 lean_dec(x_44);
 return x_46;
 }
@@ -11815,7 +7472,7 @@ lean_inc(x_47);
 lean_dec(x_15);
 lean_inc(x_1);
 x_48 = l_Lean_MessageData_ofExpr(x_1);
-x_49 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_49 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 x_50 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_50, 0, x_49);
 lean_ctor_set(x_50, 1, x_48);
@@ -11841,13 +7498,13 @@ lean_ctor_set(x_57, 1, x_53);
 x_58 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_58, 0, x_57);
 lean_ctor_set(x_58, 1, x_49);
-x_59 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_58, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_47);
+x_59 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_58, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_47);
 x_60 = lean_ctor_get(x_59, 0);
 lean_inc(x_60);
 x_61 = lean_ctor_get(x_59, 1);
 lean_inc(x_61);
 lean_dec(x_59);
-x_62 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(x_1, x_2, x_3, x_4, x_60, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_61);
+x_62 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9(x_1, x_2, x_3, x_4, x_60, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_61);
 lean_dec(x_60);
 return x_62;
 }
@@ -11867,13 +7524,13 @@ lean_ctor_set(x_66, 1, x_53);
 x_67 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_67, 0, x_66);
 lean_ctor_set(x_67, 1, x_49);
-x_68 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_67, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_47);
+x_68 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_67, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_47);
 x_69 = lean_ctor_get(x_68, 0);
 lean_inc(x_69);
 x_70 = lean_ctor_get(x_68, 1);
 lean_inc(x_70);
 lean_dec(x_68);
-x_71 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(x_1, x_2, x_3, x_4, x_69, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_70);
+x_71 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9(x_1, x_2, x_3, x_4, x_69, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_70);
 lean_dec(x_69);
 return x_71;
 }
@@ -11899,7 +7556,42 @@ lean_dec(x_1);
 return x_11;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3___boxed(lean_object** _args) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+uint8_t x_14; lean_object* x_15; 
+x_14 = lean_unbox(x_1);
+lean_dec(x_1);
+x_15 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_4);
+return x_15;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__4___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+uint8_t x_14; lean_object* x_15; 
+x_14 = lean_unbox(x_1);
+lean_dec(x_1);
+x_15 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__4(x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_4);
+return x_15;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+uint8_t x_15; uint8_t x_16; lean_object* x_17; 
+x_15 = lean_unbox(x_1);
+lean_dec(x_1);
+x_16 = lean_unbox(x_4);
+lean_dec(x_4);
+x_17 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5(x_15, x_2, x_3, x_16, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_5);
+return x_17;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___boxed(lean_object** _args) {
 lean_object* x_1 = _args[0];
 lean_object* x_2 = _args[1];
 lean_object* x_3 = _args[2];
@@ -11919,34 +7611,37 @@ lean_object* x_16 = _args[15];
 lean_object* x_17 = _args[16];
 lean_object* x_18 = _args[17];
 lean_object* x_19 = _args[18];
+lean_object* x_20 = _args[19];
 _start:
 {
-uint8_t x_20; uint8_t x_21; lean_object* x_22; 
-x_20 = lean_unbox(x_4);
+uint8_t x_21; uint8_t x_22; uint8_t x_23; lean_object* x_24; 
+x_21 = lean_unbox(x_4);
 lean_dec(x_4);
-x_21 = lean_unbox(x_9);
+x_22 = lean_unbox(x_9);
 lean_dec(x_9);
-x_22 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3(x_1, x_2, x_3, x_20, x_5, x_6, x_7, x_8, x_21, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19);
+x_23 = lean_unbox(x_10);
 lean_dec(x_10);
-return x_22;
+x_24 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(x_1, x_2, x_3, x_21, x_5, x_6, x_7, x_8, x_22, x_23, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
+lean_dec(x_11);
+return x_24;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__4___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__7___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
 _start:
 {
 uint8_t x_17; lean_object* x_18; 
 x_17 = lean_unbox(x_4);
 lean_dec(x_4);
-x_18 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__4(x_1, x_2, x_3, x_17, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+x_18 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__7(x_1, x_2, x_3, x_17, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
 lean_dec(x_7);
 return x_18;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5___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, lean_object* x_10) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__8___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, lean_object* x_10) {
 _start:
 {
 lean_object* x_11; 
-x_11 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__5(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+x_11 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__8(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
@@ -11959,13 +7654,13 @@ lean_dec(x_1);
 return x_11;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
 _start:
 {
 uint8_t x_15; lean_object* x_16; 
 x_15 = lean_unbox(x_4);
 lean_dec(x_4);
-x_16 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6(x_1, x_2, x_3, x_15, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+x_16 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9(x_1, x_2, x_3, x_15, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
 lean_dec(x_5);
 return x_16;
 }
@@ -11980,6 +7675,15 @@ x_15 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep(x_1,
 return x_15;
 }
 }
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_resetNewEqs___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = lean_box(0);
+x_2 = lean_array_mk(x_1);
+return x_2;
+}
+}
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_resetNewEqs(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:
 {
@@ -11994,10 +7698,10 @@ x_13 = !lean_is_exclusive(x_11);
 if (x_13 == 0)
 {
 lean_object* x_14; lean_object* x_15; lean_object* x_16; uint8_t x_17; 
-x_14 = lean_ctor_get(x_11, 4);
+x_14 = lean_ctor_get(x_11, 5);
 lean_dec(x_14);
-x_15 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__3;
-lean_ctor_set(x_11, 4, x_15);
+x_15 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_resetNewEqs___closed__1;
+lean_ctor_set(x_11, 5, x_15);
 x_16 = lean_st_ref_set(x_1, x_11, x_12);
 x_17 = !lean_is_exclusive(x_16);
 if (x_17 == 0)
@@ -12024,51 +7728,54 @@ return x_22;
 }
 else
 {
-lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; uint8_t x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; uint8_t x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; 
 x_23 = lean_ctor_get(x_11, 0);
 x_24 = lean_ctor_get(x_11, 1);
 x_25 = lean_ctor_get(x_11, 2);
 x_26 = lean_ctor_get(x_11, 3);
-x_27 = lean_ctor_get_uint8(x_11, sizeof(void*)*7);
-x_28 = lean_ctor_get(x_11, 5);
+x_27 = lean_ctor_get(x_11, 4);
+x_28 = lean_ctor_get_uint8(x_11, sizeof(void*)*8);
 x_29 = lean_ctor_get(x_11, 6);
+x_30 = lean_ctor_get(x_11, 7);
+lean_inc(x_30);
 lean_inc(x_29);
-lean_inc(x_28);
+lean_inc(x_27);
 lean_inc(x_26);
 lean_inc(x_25);
 lean_inc(x_24);
 lean_inc(x_23);
 lean_dec(x_11);
-x_30 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__3;
-x_31 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_31, 0, x_23);
-lean_ctor_set(x_31, 1, x_24);
-lean_ctor_set(x_31, 2, x_25);
-lean_ctor_set(x_31, 3, x_26);
-lean_ctor_set(x_31, 4, x_30);
-lean_ctor_set(x_31, 5, x_28);
-lean_ctor_set(x_31, 6, x_29);
-lean_ctor_set_uint8(x_31, sizeof(void*)*7, x_27);
-x_32 = lean_st_ref_set(x_1, x_31, x_12);
-x_33 = lean_ctor_get(x_32, 1);
-lean_inc(x_33);
-if (lean_is_exclusive(x_32)) {
- lean_ctor_release(x_32, 0);
- lean_ctor_release(x_32, 1);
- x_34 = x_32;
+x_31 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_resetNewEqs___closed__1;
+x_32 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_32, 0, x_23);
+lean_ctor_set(x_32, 1, x_24);
+lean_ctor_set(x_32, 2, x_25);
+lean_ctor_set(x_32, 3, x_26);
+lean_ctor_set(x_32, 4, x_27);
+lean_ctor_set(x_32, 5, x_31);
+lean_ctor_set(x_32, 6, x_29);
+lean_ctor_set(x_32, 7, x_30);
+lean_ctor_set_uint8(x_32, sizeof(void*)*8, x_28);
+x_33 = lean_st_ref_set(x_1, x_32, x_12);
+x_34 = lean_ctor_get(x_33, 1);
+lean_inc(x_34);
+if (lean_is_exclusive(x_33)) {
+ lean_ctor_release(x_33, 0);
+ lean_ctor_release(x_33, 1);
+ x_35 = x_33;
 } else {
- lean_dec_ref(x_32);
- x_34 = lean_box(0);
+ lean_dec_ref(x_33);
+ x_35 = lean_box(0);
 }
-x_35 = lean_box(0);
-if (lean_is_scalar(x_34)) {
- x_36 = lean_alloc_ctor(0, 2, 0);
+x_36 = lean_box(0);
+if (lean_is_scalar(x_35)) {
+ x_37 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_36 = x_34;
+ x_37 = x_35;
 }
-lean_ctor_set(x_36, 0, x_35);
-lean_ctor_set(x_36, 1, x_33);
-return x_36;
+lean_ctor_set(x_37, 0, x_36);
+lean_ctor_set(x_37, 1, x_34);
+return x_37;
 }
 }
 }
@@ -12109,7 +7816,7 @@ if (x_11 == 0)
 lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
 x_12 = lean_ctor_get(x_10, 0);
 x_13 = lean_ctor_get(x_10, 1);
-x_14 = lean_ctor_get(x_12, 4);
+x_14 = lean_ctor_get(x_12, 5);
 lean_inc(x_14);
 lean_dec(x_12);
 x_15 = l_Array_back_x3f___rarg(x_14);
@@ -12133,9 +7840,9 @@ x_19 = !lean_is_exclusive(x_17);
 if (x_19 == 0)
 {
 lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; 
-x_20 = lean_ctor_get(x_17, 4);
+x_20 = lean_ctor_get(x_17, 5);
 x_21 = lean_array_pop(x_20);
-lean_ctor_set(x_17, 4, x_21);
+lean_ctor_set(x_17, 5, x_21);
 x_22 = lean_st_ref_set(x_1, x_17, x_18);
 x_23 = !lean_is_exclusive(x_22);
 if (x_23 == 0)
@@ -12160,146 +7867,153 @@ return x_26;
 }
 else
 {
-lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; uint8_t x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; uint8_t x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; 
 x_27 = lean_ctor_get(x_17, 0);
 x_28 = lean_ctor_get(x_17, 1);
 x_29 = lean_ctor_get(x_17, 2);
 x_30 = lean_ctor_get(x_17, 3);
 x_31 = lean_ctor_get(x_17, 4);
-x_32 = lean_ctor_get_uint8(x_17, sizeof(void*)*7);
-x_33 = lean_ctor_get(x_17, 5);
+x_32 = lean_ctor_get(x_17, 5);
+x_33 = lean_ctor_get_uint8(x_17, sizeof(void*)*8);
 x_34 = lean_ctor_get(x_17, 6);
+x_35 = lean_ctor_get(x_17, 7);
+lean_inc(x_35);
 lean_inc(x_34);
-lean_inc(x_33);
+lean_inc(x_32);
 lean_inc(x_31);
 lean_inc(x_30);
 lean_inc(x_29);
 lean_inc(x_28);
 lean_inc(x_27);
 lean_dec(x_17);
-x_35 = lean_array_pop(x_31);
-x_36 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_36, 0, x_27);
-lean_ctor_set(x_36, 1, x_28);
-lean_ctor_set(x_36, 2, x_29);
-lean_ctor_set(x_36, 3, x_30);
-lean_ctor_set(x_36, 4, x_35);
-lean_ctor_set(x_36, 5, x_33);
-lean_ctor_set(x_36, 6, x_34);
-lean_ctor_set_uint8(x_36, sizeof(void*)*7, x_32);
-x_37 = lean_st_ref_set(x_1, x_36, x_18);
-x_38 = lean_ctor_get(x_37, 1);
-lean_inc(x_38);
-if (lean_is_exclusive(x_37)) {
- lean_ctor_release(x_37, 0);
- lean_ctor_release(x_37, 1);
- x_39 = x_37;
+x_36 = lean_array_pop(x_32);
+x_37 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_37, 0, x_27);
+lean_ctor_set(x_37, 1, x_28);
+lean_ctor_set(x_37, 2, x_29);
+lean_ctor_set(x_37, 3, x_30);
+lean_ctor_set(x_37, 4, x_31);
+lean_ctor_set(x_37, 5, x_36);
+lean_ctor_set(x_37, 6, x_34);
+lean_ctor_set(x_37, 7, x_35);
+lean_ctor_set_uint8(x_37, sizeof(void*)*8, x_33);
+x_38 = lean_st_ref_set(x_1, x_37, x_18);
+x_39 = lean_ctor_get(x_38, 1);
+lean_inc(x_39);
+if (lean_is_exclusive(x_38)) {
+ lean_ctor_release(x_38, 0);
+ lean_ctor_release(x_38, 1);
+ x_40 = x_38;
 } else {
- lean_dec_ref(x_37);
- x_39 = lean_box(0);
+ lean_dec_ref(x_38);
+ x_40 = lean_box(0);
 }
-if (lean_is_scalar(x_39)) {
- x_40 = lean_alloc_ctor(0, 2, 0);
+if (lean_is_scalar(x_40)) {
+ x_41 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_40 = x_39;
+ x_41 = x_40;
 }
-lean_ctor_set(x_40, 0, x_15);
-lean_ctor_set(x_40, 1, x_38);
-return x_40;
+lean_ctor_set(x_41, 0, x_15);
+lean_ctor_set(x_41, 1, x_39);
+return x_41;
 }
 }
 }
 else
 {
-lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; 
-x_41 = lean_ctor_get(x_10, 0);
-x_42 = lean_ctor_get(x_10, 1);
+lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; 
+x_42 = lean_ctor_get(x_10, 0);
+x_43 = lean_ctor_get(x_10, 1);
+lean_inc(x_43);
 lean_inc(x_42);
-lean_inc(x_41);
 lean_dec(x_10);
-x_43 = lean_ctor_get(x_41, 4);
-lean_inc(x_43);
-lean_dec(x_41);
-x_44 = l_Array_back_x3f___rarg(x_43);
-lean_dec(x_43);
-if (lean_obj_tag(x_44) == 0)
+x_44 = lean_ctor_get(x_42, 5);
+lean_inc(x_44);
+lean_dec(x_42);
+x_45 = l_Array_back_x3f___rarg(x_44);
+lean_dec(x_44);
+if (lean_obj_tag(x_45) == 0)
 {
-lean_object* x_45; 
-x_45 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_45, 0, x_44);
-lean_ctor_set(x_45, 1, x_42);
-return x_45;
+lean_object* x_46; 
+x_46 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_46, 0, x_45);
+lean_ctor_set(x_46, 1, x_43);
+return x_46;
 }
 else
 {
-lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; uint8_t x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; 
-x_46 = lean_st_ref_take(x_1, x_42);
-x_47 = lean_ctor_get(x_46, 0);
-lean_inc(x_47);
-x_48 = lean_ctor_get(x_46, 1);
+lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; uint8_t x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; 
+x_47 = lean_st_ref_take(x_1, x_43);
+x_48 = lean_ctor_get(x_47, 0);
 lean_inc(x_48);
-lean_dec(x_46);
-x_49 = lean_ctor_get(x_47, 0);
+x_49 = lean_ctor_get(x_47, 1);
 lean_inc(x_49);
-x_50 = lean_ctor_get(x_47, 1);
+lean_dec(x_47);
+x_50 = lean_ctor_get(x_48, 0);
 lean_inc(x_50);
-x_51 = lean_ctor_get(x_47, 2);
+x_51 = lean_ctor_get(x_48, 1);
 lean_inc(x_51);
-x_52 = lean_ctor_get(x_47, 3);
+x_52 = lean_ctor_get(x_48, 2);
 lean_inc(x_52);
-x_53 = lean_ctor_get(x_47, 4);
+x_53 = lean_ctor_get(x_48, 3);
 lean_inc(x_53);
-x_54 = lean_ctor_get_uint8(x_47, sizeof(void*)*7);
-x_55 = lean_ctor_get(x_47, 5);
+x_54 = lean_ctor_get(x_48, 4);
+lean_inc(x_54);
+x_55 = lean_ctor_get(x_48, 5);
 lean_inc(x_55);
-x_56 = lean_ctor_get(x_47, 6);
-lean_inc(x_56);
-if (lean_is_exclusive(x_47)) {
- lean_ctor_release(x_47, 0);
- lean_ctor_release(x_47, 1);
- lean_ctor_release(x_47, 2);
- lean_ctor_release(x_47, 3);
- lean_ctor_release(x_47, 4);
- lean_ctor_release(x_47, 5);
- lean_ctor_release(x_47, 6);
- x_57 = x_47;
+x_56 = lean_ctor_get_uint8(x_48, sizeof(void*)*8);
+x_57 = lean_ctor_get(x_48, 6);
+lean_inc(x_57);
+x_58 = lean_ctor_get(x_48, 7);
+lean_inc(x_58);
+if (lean_is_exclusive(x_48)) {
+ lean_ctor_release(x_48, 0);
+ lean_ctor_release(x_48, 1);
+ lean_ctor_release(x_48, 2);
+ lean_ctor_release(x_48, 3);
+ lean_ctor_release(x_48, 4);
+ lean_ctor_release(x_48, 5);
+ lean_ctor_release(x_48, 6);
+ lean_ctor_release(x_48, 7);
+ x_59 = x_48;
 } else {
- lean_dec_ref(x_47);
- x_57 = lean_box(0);
+ lean_dec_ref(x_48);
+ x_59 = lean_box(0);
 }
-x_58 = lean_array_pop(x_53);
-if (lean_is_scalar(x_57)) {
- x_59 = lean_alloc_ctor(0, 7, 1);
+x_60 = lean_array_pop(x_55);
+if (lean_is_scalar(x_59)) {
+ x_61 = lean_alloc_ctor(0, 8, 1);
 } else {
- x_59 = x_57;
-}
-lean_ctor_set(x_59, 0, x_49);
-lean_ctor_set(x_59, 1, x_50);
-lean_ctor_set(x_59, 2, x_51);
-lean_ctor_set(x_59, 3, x_52);
-lean_ctor_set(x_59, 4, x_58);
-lean_ctor_set(x_59, 5, x_55);
-lean_ctor_set(x_59, 6, x_56);
-lean_ctor_set_uint8(x_59, sizeof(void*)*7, x_54);
-x_60 = lean_st_ref_set(x_1, x_59, x_48);
-x_61 = lean_ctor_get(x_60, 1);
-lean_inc(x_61);
-if (lean_is_exclusive(x_60)) {
- lean_ctor_release(x_60, 0);
- lean_ctor_release(x_60, 1);
- x_62 = x_60;
+ x_61 = x_59;
+}
+lean_ctor_set(x_61, 0, x_50);
+lean_ctor_set(x_61, 1, x_51);
+lean_ctor_set(x_61, 2, x_52);
+lean_ctor_set(x_61, 3, x_53);
+lean_ctor_set(x_61, 4, x_54);
+lean_ctor_set(x_61, 5, x_60);
+lean_ctor_set(x_61, 6, x_57);
+lean_ctor_set(x_61, 7, x_58);
+lean_ctor_set_uint8(x_61, sizeof(void*)*8, x_56);
+x_62 = lean_st_ref_set(x_1, x_61, x_49);
+x_63 = lean_ctor_get(x_62, 1);
+lean_inc(x_63);
+if (lean_is_exclusive(x_62)) {
+ lean_ctor_release(x_62, 0);
+ lean_ctor_release(x_62, 1);
+ x_64 = x_62;
 } else {
- lean_dec_ref(x_60);
- x_62 = lean_box(0);
+ lean_dec_ref(x_62);
+ x_64 = lean_box(0);
 }
-if (lean_is_scalar(x_62)) {
- x_63 = lean_alloc_ctor(0, 2, 0);
+if (lean_is_scalar(x_64)) {
+ x_65 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_63 = x_62;
+ x_65 = x_64;
 }
-lean_ctor_set(x_63, 0, x_44);
-lean_ctor_set(x_63, 1, x_61);
-return x_63;
+lean_ctor_set(x_65, 0, x_45);
+lean_ctor_set(x_65, 1, x_63);
+return x_65;
 }
 }
 }
@@ -13037,22 +8751,14 @@ return x_45;
 static lean_object* _init_l_Lean_Meta_Grind_add_go___lambda__4___closed__1() {
 _start:
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Eq", 2, 2);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_add_go___lambda__4___closed__2() {
-_start:
-{
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_add_go___lambda__4___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__4;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_add_go___lambda__4___closed__3() {
+static lean_object* _init_l_Lean_Meta_Grind_add_go___lambda__4___closed__2() {
 _start:
 {
 lean_object* x_1; 
@@ -13060,12 +8766,12 @@ x_1 = lean_mk_string_unchecked("HEq", 3, 3);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_add_go___lambda__4___closed__4() {
+static lean_object* _init_l_Lean_Meta_Grind_add_go___lambda__4___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_add_go___lambda__4___closed__3;
+x_2 = l_Lean_Meta_Grind_add_go___lambda__4___closed__2;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
@@ -13127,7 +8833,7 @@ else
 lean_object* x_32; lean_object* x_33; lean_object* x_34; uint8_t x_35; 
 x_32 = l_Lean_Expr_appArg(x_28, lean_box(0));
 x_33 = l_Lean_Expr_appFnCleanup(x_28, lean_box(0));
-x_34 = l_Lean_Meta_Grind_add_go___lambda__4___closed__2;
+x_34 = l_Lean_Meta_Grind_add_go___lambda__4___closed__1;
 x_35 = l_Lean_Expr_isConstOf(x_33, x_34);
 if (x_35 == 0)
 {
@@ -13148,7 +8854,7 @@ else
 {
 lean_object* x_39; lean_object* x_40; uint8_t x_41; 
 x_39 = l_Lean_Expr_appFnCleanup(x_33, lean_box(0));
-x_40 = l_Lean_Meta_Grind_add_go___lambda__4___closed__4;
+x_40 = l_Lean_Meta_Grind_add_go___lambda__4___closed__3;
 x_41 = l_Lean_Expr_isConstOf(x_39, x_40);
 lean_dec(x_39);
 if (x_41 == 0)
@@ -13195,7 +8901,7 @@ static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__1;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__1;
 x_2 = l_Lean_Meta_Grind_add_go___closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
@@ -13221,55 +8927,47 @@ return x_2;
 static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__5() {
 _start:
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("false", 5, 5);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__6() {
-_start:
-{
 lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_Meta_Grind_add_go___closed__5;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__13;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__7() {
+static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_Meta_Grind_add_go___closed__6;
+x_1 = l_Lean_Meta_Grind_add_go___closed__5;
 x_2 = l_Lean_MessageData_ofFormat(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__8() {
+static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Lean_Meta_Grind_add_go___closed__4;
-x_2 = l_Lean_Meta_Grind_add_go___closed__7;
+x_2 = l_Lean_Meta_Grind_add_go___closed__6;
 x_3 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__9() {
+static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__8() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_add_go___closed__8;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__4;
+x_1 = l_Lean_Meta_Grind_add_go___closed__7;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6;
 x_3 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__10() {
+static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__9() {
 _start:
 {
 lean_object* x_1; 
@@ -13277,43 +8975,43 @@ x_1 = lean_mk_string_unchecked("true", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__11() {
+static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__10() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_Meta_Grind_add_go___closed__10;
+x_1 = l_Lean_Meta_Grind_add_go___closed__9;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__12() {
+static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__11() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_Meta_Grind_add_go___closed__11;
+x_1 = l_Lean_Meta_Grind_add_go___closed__10;
 x_2 = l_Lean_MessageData_ofFormat(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__13() {
+static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__12() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Lean_Meta_Grind_add_go___closed__4;
-x_2 = l_Lean_Meta_Grind_add_go___closed__12;
+x_2 = l_Lean_Meta_Grind_add_go___closed__11;
 x_3 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__14() {
+static lean_object* _init_l_Lean_Meta_Grind_add_go___closed__13() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_add_go___closed__13;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__4;
+x_1 = l_Lean_Meta_Grind_add_go___closed__12;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6;
 x_3 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
@@ -13325,7 +9023,7 @@ LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add_go(lean_object* x_1, lean_object*
 {
 lean_object* x_14; lean_object* x_15; lean_object* x_16; uint8_t x_17; 
 x_14 = l_Lean_Meta_Grind_add_go___closed__2;
-x_15 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_14, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+x_15 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_14, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
 x_16 = lean_ctor_get(x_15, 0);
 lean_inc(x_16);
 x_17 = lean_unbox(x_16);
@@ -13355,15 +9053,15 @@ x_24 = l_Lean_MessageData_ofExpr(x_3);
 if (x_4 == 0)
 {
 lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; 
-x_25 = l_Lean_Meta_Grind_add_go___closed__9;
+x_25 = l_Lean_Meta_Grind_add_go___closed__8;
 lean_ctor_set_tag(x_15, 7);
 lean_ctor_set(x_15, 1, x_24);
 lean_ctor_set(x_15, 0, x_25);
-x_26 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_26 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 x_27 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_27, 0, x_15);
 lean_ctor_set(x_27, 1, x_26);
-x_28 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_27, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_22);
+x_28 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_27, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_22);
 x_29 = lean_ctor_get(x_28, 0);
 lean_inc(x_29);
 x_30 = lean_ctor_get(x_28, 1);
@@ -13376,15 +9074,15 @@ return x_31;
 else
 {
 lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; 
-x_32 = l_Lean_Meta_Grind_add_go___closed__14;
+x_32 = l_Lean_Meta_Grind_add_go___closed__13;
 lean_ctor_set_tag(x_15, 7);
 lean_ctor_set(x_15, 1, x_24);
 lean_ctor_set(x_15, 0, x_32);
-x_33 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_33 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 x_34 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_34, 0, x_15);
 lean_ctor_set(x_34, 1, x_33);
-x_35 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_34, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_22);
+x_35 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_34, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_22);
 x_36 = lean_ctor_get(x_35, 0);
 lean_inc(x_36);
 x_37 = lean_ctor_get(x_35, 1);
@@ -13406,15 +9104,15 @@ x_40 = l_Lean_MessageData_ofExpr(x_3);
 if (x_4 == 0)
 {
 lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; 
-x_41 = l_Lean_Meta_Grind_add_go___closed__9;
+x_41 = l_Lean_Meta_Grind_add_go___closed__8;
 x_42 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_42, 0, x_41);
 lean_ctor_set(x_42, 1, x_40);
-x_43 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_43 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 x_44 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_44, 0, x_42);
 lean_ctor_set(x_44, 1, x_43);
-x_45 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_44, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_39);
+x_45 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_44, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_39);
 x_46 = lean_ctor_get(x_45, 0);
 lean_inc(x_46);
 x_47 = lean_ctor_get(x_45, 1);
@@ -13427,15 +9125,15 @@ return x_48;
 else
 {
 lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; 
-x_49 = l_Lean_Meta_Grind_add_go___closed__14;
+x_49 = l_Lean_Meta_Grind_add_go___closed__13;
 x_50 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_50, 0, x_49);
 lean_ctor_set(x_50, 1, x_40);
-x_51 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_51 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 x_52 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_52, 0, x_50);
 lean_ctor_set(x_52, 1, x_51);
-x_53 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_52, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_39);
+x_53 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_14, x_52, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_39);
 x_54 = lean_ctor_get(x_53, 0);
 lean_inc(x_54);
 x_55 = lean_ctor_get(x_53, 1);
@@ -13663,7 +9361,7 @@ LEAN_EXPORT lean_object* l_Lean_Meta_Grind_add(lean_object* x_1, lean_object* x_
 {
 lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; 
 x_13 = l_Lean_Meta_Grind_add_go___closed__2;
-x_14 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__8(x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+x_14 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
 x_15 = lean_ctor_get(x_14, 0);
 lean_inc(x_15);
 x_16 = lean_unbox(x_15);
@@ -13690,7 +9388,7 @@ x_22 = lean_ctor_get(x_14, 0);
 lean_dec(x_22);
 lean_inc(x_2);
 x_23 = l_Lean_MessageData_ofExpr(x_2);
-x_24 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_24 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 lean_ctor_set_tag(x_14, 7);
 lean_ctor_set(x_14, 1, x_23);
 lean_ctor_set(x_14, 0, x_24);
@@ -13706,7 +9404,7 @@ lean_ctor_set(x_28, 1, x_27);
 x_29 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_29, 0, x_28);
 lean_ctor_set(x_29, 1, x_24);
-x_30 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_13, x_29, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_21);
+x_30 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_13, x_29, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_21);
 x_31 = lean_ctor_get(x_30, 0);
 lean_inc(x_31);
 x_32 = lean_ctor_get(x_30, 1);
@@ -13724,7 +9422,7 @@ lean_inc(x_34);
 lean_dec(x_14);
 lean_inc(x_2);
 x_35 = l_Lean_MessageData_ofExpr(x_2);
-x_36 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4;
+x_36 = l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2;
 x_37 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_37, 0, x_36);
 lean_ctor_set(x_37, 1, x_35);
@@ -13740,7 +9438,7 @@ lean_ctor_set(x_41, 1, x_40);
 x_42 = lean_alloc_ctor(7, 2, 0);
 lean_ctor_set(x_42, 0, x_41);
 lean_ctor_set(x_42, 1, x_36);
-x_43 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9(x_13, x_42, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_34);
+x_43 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_13, x_42, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_34);
 x_44 = lean_ctor_get(x_43, 0);
 lean_inc(x_44);
 x_45 = lean_ctor_get(x_43, 1);
@@ -13837,8 +9535,9 @@ lean_object* initialize_Init_Grind_Util(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Meta_LitValues(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Meta_Tactic_Grind_Types(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Meta_Tactic_Grind_Inv(uint8_t builtin, lean_object*);
-lean_object* initialize_Lean_Meta_Tactic_Grind_Propagate(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Meta_Tactic_Grind_PP(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind_Ctor(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind_Internalize(uint8_t builtin, lean_object*);
 static bool _G_initialized = false;
 LEAN_EXPORT lean_object* initialize_Lean_Meta_Tactic_Grind_Core(uint8_t builtin, lean_object* w) {
 lean_object * res;
@@ -13856,75 +9555,69 @@ lean_dec_ref(res);
 res = initialize_Lean_Meta_Tactic_Grind_Inv(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-res = initialize_Lean_Meta_Tactic_Grind_Propagate(builtin, lean_io_mk_world());
+res = initialize_Lean_Meta_Tactic_Grind_PP(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-res = initialize_Lean_Meta_Tactic_Grind_PP(builtin, lean_io_mk_world());
+res = initialize_Lean_Meta_Tactic_Grind_Ctor(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+res = initialize_Lean_Meta_Tactic_Grind_Internalize(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__2();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__2);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__3();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof___closed__3);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_congrPlaceholderProof);
-l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___closed__1 = _init_l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___closed__1();
-l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___closed__2 = _init_l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__2___closed__2();
-l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5___closed__1 = _init_l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5___closed__1();
-lean_mark_persistent(l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__5___closed__1);
-l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__1 = _init_l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__1();
-l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__2 = _init_l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__2();
-lean_mark_persistent(l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__2);
-l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__3 = _init_l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__3();
-lean_mark_persistent(l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___spec__9___closed__3);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__2();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__2);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__3();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__3);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__4);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__5();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__5);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__6();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addCongrTable___closed__6);
-l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__1 = _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__1();
-lean_mark_persistent(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__1);
-l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__2 = _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__2();
-lean_mark_persistent(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__2);
-l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__3 = _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__3();
-lean_mark_persistent(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__3);
-l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4 = _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4();
-lean_mark_persistent(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__2___closed__4);
-l_Lean_Meta_Grind_internalize___lambda__2___closed__1 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__1();
-lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__1);
-l_Lean_Meta_Grind_internalize___lambda__2___closed__2 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__2();
-lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__2);
-l_Lean_Meta_Grind_internalize___lambda__2___closed__3 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__3();
-lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__3);
-l_Lean_Meta_Grind_internalize___lambda__2___closed__4 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__4();
-lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__4);
-l_Lean_Meta_Grind_internalize___lambda__2___closed__5 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__5();
-lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__5);
-l_Lean_Meta_Grind_internalize___lambda__2___closed__6 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__6();
-lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__6);
-l_Lean_Meta_Grind_internalize___lambda__2___closed__7 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__7();
-lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__7);
-l_Lean_Meta_Grind_internalize___lambda__2___closed__8 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__8();
-lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__8);
-l_Lean_Meta_Grind_internalize___lambda__2___closed__9 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__9();
-lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__9);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__2();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__2);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__3();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__3);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__4();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__2___closed__4);
+l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2___closed__1 = _init_l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2___closed__1();
+l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2___closed__2 = _init_l_Lean_PersistentHashMap_eraseAux___at___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_removeParents___spec__2___closed__2();
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__2);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__3);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__4();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithTrueEqFalse___closed__4);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__2);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__3);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__4();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__4);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__5();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__5);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__6();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__6);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__7 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__7();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__7);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__8 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__8();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__8);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__9 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__9();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__9);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__10 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__10();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__10);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__11 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__11();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__11);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__12 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__12();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__12);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__13 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__13();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__13);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__14 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__14();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__14);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__15 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__15();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__15);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__16 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__16();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_closeGoalWithValuesEq___closed__16);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__2);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__3);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__4();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__4);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__5();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__5);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___lambda__3___closed__6);
 l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__1();
 lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__1);
 l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__2();
@@ -13937,6 +9630,8 @@ l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed
 lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__5);
 l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__6();
 lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__6);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__7 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__7();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep_go___closed__7);
 l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__2___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__2___closed__1();
 lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__2___closed__1);
 l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__2___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__2___closed__2();
@@ -13945,16 +9640,16 @@ l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__2
 lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__2___closed__3);
 l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3___closed__1();
 lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__3___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__2();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__2);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__3();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__3);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__4();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__4);
-l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__5();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__6___closed__5);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__2);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__3);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__4();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__4);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__5();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___lambda__9___closed__5);
 l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__1();
 lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__1);
 l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__2();
@@ -13971,6 +9666,8 @@ l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__7
 lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__7);
 l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__8 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__8();
 lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqStep___closed__8);
+l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_resetNewEqs___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_resetNewEqs___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_resetNewEqs___closed__1);
 l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqCore_processTodo___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqCore_processTodo___closed__1();
 lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Core_0__Lean_Meta_Grind_addEqCore_processTodo___closed__1);
 l_Lean_Meta_Grind_add_go___lambda__4___closed__1 = _init_l_Lean_Meta_Grind_add_go___lambda__4___closed__1();
@@ -13979,8 +9676,6 @@ l_Lean_Meta_Grind_add_go___lambda__4___closed__2 = _init_l_Lean_Meta_Grind_add_g
 lean_mark_persistent(l_Lean_Meta_Grind_add_go___lambda__4___closed__2);
 l_Lean_Meta_Grind_add_go___lambda__4___closed__3 = _init_l_Lean_Meta_Grind_add_go___lambda__4___closed__3();
 lean_mark_persistent(l_Lean_Meta_Grind_add_go___lambda__4___closed__3);
-l_Lean_Meta_Grind_add_go___lambda__4___closed__4 = _init_l_Lean_Meta_Grind_add_go___lambda__4___closed__4();
-lean_mark_persistent(l_Lean_Meta_Grind_add_go___lambda__4___closed__4);
 l_Lean_Meta_Grind_add_go___closed__1 = _init_l_Lean_Meta_Grind_add_go___closed__1();
 lean_mark_persistent(l_Lean_Meta_Grind_add_go___closed__1);
 l_Lean_Meta_Grind_add_go___closed__2 = _init_l_Lean_Meta_Grind_add_go___closed__2();
@@ -14007,8 +9702,6 @@ l_Lean_Meta_Grind_add_go___closed__12 = _init_l_Lean_Meta_Grind_add_go___closed_
 lean_mark_persistent(l_Lean_Meta_Grind_add_go___closed__12);
 l_Lean_Meta_Grind_add_go___closed__13 = _init_l_Lean_Meta_Grind_add_go___closed__13();
 lean_mark_persistent(l_Lean_Meta_Grind_add_go___closed__13);
-l_Lean_Meta_Grind_add_go___closed__14 = _init_l_Lean_Meta_Grind_add_go___closed__14();
-lean_mark_persistent(l_Lean_Meta_Grind_add_go___closed__14);
 l_Lean_Meta_Grind_add___lambda__3___closed__1 = _init_l_Lean_Meta_Grind_add___lambda__3___closed__1();
 lean_mark_persistent(l_Lean_Meta_Grind_add___lambda__3___closed__1);
 l_Lean_Meta_Grind_add___lambda__3___closed__2 = _init_l_Lean_Meta_Grind_add___lambda__3___closed__2();
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Grind/Ctor.c b/stage0/stdlib/Lean/Meta/Tactic/Grind/Ctor.c
new file mode 100644
index 000000000000..45be339f7150
--- /dev/null
+++ b/stage0/stdlib/Lean/Meta/Tactic/Grind/Ctor.c
@@ -0,0 +1,2345 @@
+// Lean compiler output
+// Module: Lean.Meta.Tactic.Grind.Ctor
+// Imports: Lean.Meta.Tactic.Grind.Types
+#include <lean/lean.h>
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Wunused-parameter"
+#pragma clang diagnostic ignored "-Wunused-label"
+#elif defined(__GNUC__) && !defined(__CLANG__)
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#pragma GCC diagnostic ignored "-Wunused-label"
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+LEAN_EXPORT lean_object* l_Lean_throwError___at_Lean_Meta_Grind_propagateCtor___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_mkAppOptM(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_mkNoConfusion(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__3;
+lean_object* l_Lean_ConstantInfo_type(lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_isExprDefEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint64_t lean_uint64_lor(uint64_t, uint64_t);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___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_EXPORT lean_object* l_Lean_Meta_Grind_propagateCtor(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint8_t l_Lean_Expr_isApp(lean_object*);
+lean_object* l_Lean_PersistentArray_push___rarg(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__3;
+static lean_object* l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__2;
+lean_object* lean_mk_array(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__6;
+static lean_object* l_Lean_Meta_Grind_propagateCtor___lambda__3___closed__2;
+lean_object* l_Lean_Expr_proj___override(lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_pushEqCore(lean_object*, 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_environment_find(lean_object*, lean_object*);
+lean_object* l_Lean_Expr_cleanupAnnotations(lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__5;
+lean_object* l_Lean_stringToMessageData(lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___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_EXPORT lean_object* l_Lean_Meta_Grind_propagateCtor___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___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3(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_Meta_Grind_getFalseExpr___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__1;
+lean_object* lean_st_ref_take(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateCtor___lambda__3(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*);
+uint8_t lean_expr_eqv(lean_object*, lean_object*);
+uint64_t lean_uint64_shift_right(uint64_t, uint64_t);
+static lean_object* l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__4;
+lean_object* l_Lean_Meta_Grind_closeGoal(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_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___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_object*);
+lean_object* l_Lean_Expr_appArg(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___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_object*);
+lean_object* lean_st_ref_get(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateCtor___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_object*);
+static double l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__1;
+lean_object* l_Lean_Expr_appFnCleanup(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___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___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__7;
+lean_object* l_Lean_Meta_whnfD(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___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_Name_str___override(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___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_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__1;
+static lean_object* l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__3;
+lean_object* l_Lean_MessageData_ofConstName(lean_object*, uint8_t);
+uint8_t l_Lean_Environment_contains(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__1;
+double l_Float_ofScientific(lean_object*, uint8_t, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_throwError___at_Lean_Meta_Grind_propagateCtor___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* lean_grind_mk_eq_proof(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___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3___closed__2;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs(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_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___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_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateCtor___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*, lean_object*);
+lean_object* l_Lean_Name_mkStr2(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateCtor___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_object*, lean_object*);
+lean_object* l_Lean_indentExpr(lean_object*);
+lean_object* l_Lean_Expr_getForallArity(lean_object*);
+uint8_t l_Lean_Expr_isConstOf(lean_object*, lean_object*);
+lean_object* lean_array_set(lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__4;
+lean_object* lean_nat_sub(lean_object*, lean_object*);
+lean_object* l_Lean_Expr_getAppFn(lean_object*);
+uint64_t lean_uint64_shift_left(uint64_t, uint64_t);
+static lean_object* l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__3;
+lean_object* l_Lean_Meta_instantiateMVarsIfMVarApp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3___closed__1;
+lean_object* lean_array_mk(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_isTracingEnabledForCore(lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___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*);
+static lean_object* l_Lean_Meta_Grind_propagateCtor___lambda__3___closed__1;
+lean_object* lean_st_ref_set(lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateCtor___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_object*);
+static lean_object* l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__2;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__2;
+lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint64_t l_Lean_Meta_TransparencyMode_toUInt64(uint8_t);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__4;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__2;
+static uint64_t l_Lean_Meta_Grind_propagateCtor___closed__1;
+LEAN_EXPORT lean_object* l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__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_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__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:
+{
+lean_object* x_11; lean_object* x_12; uint8_t x_13; 
+x_11 = lean_ctor_get(x_8, 2);
+x_12 = l_Lean_isTracingEnabledForCore(x_1, x_11, x_10);
+x_13 = !lean_is_exclusive(x_12);
+if (x_13 == 0)
+{
+return x_12;
+}
+else
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_14 = lean_ctor_get(x_12, 0);
+x_15 = lean_ctor_get(x_12, 1);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_dec(x_12);
+x_16 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_16, 0, x_14);
+lean_ctor_set(x_16, 1, x_15);
+return x_16;
+}
+}
+}
+static double _init_l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__1() {
+_start:
+{
+lean_object* x_1; uint8_t x_2; double x_3; 
+x_1 = lean_unsigned_to_nat(0u);
+x_2 = 0;
+x_3 = l_Float_ofScientific(x_1, x_2, x_1);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("", 0, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = lean_box(0);
+x_2 = lean_array_mk(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2(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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; 
+x_12 = lean_ctor_get(x_9, 5);
+x_13 = l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(x_2, x_7, x_8, x_9, x_10, x_11);
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_ctor_get(x_13, 1);
+lean_inc(x_15);
+lean_dec(x_13);
+x_16 = lean_st_ref_take(x_10, x_15);
+x_17 = lean_ctor_get(x_16, 0);
+lean_inc(x_17);
+x_18 = lean_ctor_get(x_17, 3);
+lean_inc(x_18);
+x_19 = !lean_is_exclusive(x_16);
+if (x_19 == 0)
+{
+lean_object* x_20; lean_object* x_21; uint8_t x_22; 
+x_20 = lean_ctor_get(x_16, 1);
+x_21 = lean_ctor_get(x_16, 0);
+lean_dec(x_21);
+x_22 = !lean_is_exclusive(x_17);
+if (x_22 == 0)
+{
+lean_object* x_23; uint8_t x_24; 
+x_23 = lean_ctor_get(x_17, 3);
+lean_dec(x_23);
+x_24 = !lean_is_exclusive(x_18);
+if (x_24 == 0)
+{
+lean_object* x_25; double x_26; uint8_t x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; uint8_t x_34; 
+x_25 = lean_ctor_get(x_18, 0);
+x_26 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__1;
+x_27 = 0;
+x_28 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__2;
+x_29 = lean_alloc_ctor(0, 2, 17);
+lean_ctor_set(x_29, 0, x_1);
+lean_ctor_set(x_29, 1, x_28);
+lean_ctor_set_float(x_29, sizeof(void*)*2, x_26);
+lean_ctor_set_float(x_29, sizeof(void*)*2 + 8, x_26);
+lean_ctor_set_uint8(x_29, sizeof(void*)*2 + 16, x_27);
+x_30 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__3;
+x_31 = lean_alloc_ctor(9, 3, 0);
+lean_ctor_set(x_31, 0, x_29);
+lean_ctor_set(x_31, 1, x_14);
+lean_ctor_set(x_31, 2, x_30);
+lean_inc(x_12);
+lean_ctor_set(x_16, 1, x_31);
+lean_ctor_set(x_16, 0, x_12);
+x_32 = l_Lean_PersistentArray_push___rarg(x_25, x_16);
+lean_ctor_set(x_18, 0, x_32);
+x_33 = lean_st_ref_set(x_10, x_17, x_20);
+x_34 = !lean_is_exclusive(x_33);
+if (x_34 == 0)
+{
+lean_object* x_35; lean_object* x_36; 
+x_35 = lean_ctor_get(x_33, 0);
+lean_dec(x_35);
+x_36 = lean_box(0);
+lean_ctor_set(x_33, 0, x_36);
+return x_33;
+}
+else
+{
+lean_object* x_37; lean_object* x_38; lean_object* x_39; 
+x_37 = lean_ctor_get(x_33, 1);
+lean_inc(x_37);
+lean_dec(x_33);
+x_38 = lean_box(0);
+x_39 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_39, 0, x_38);
+lean_ctor_set(x_39, 1, x_37);
+return x_39;
+}
+}
+else
+{
+uint64_t x_40; lean_object* x_41; double x_42; uint8_t x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_40 = lean_ctor_get_uint64(x_18, sizeof(void*)*1);
+x_41 = lean_ctor_get(x_18, 0);
+lean_inc(x_41);
+lean_dec(x_18);
+x_42 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__1;
+x_43 = 0;
+x_44 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__2;
+x_45 = lean_alloc_ctor(0, 2, 17);
+lean_ctor_set(x_45, 0, x_1);
+lean_ctor_set(x_45, 1, x_44);
+lean_ctor_set_float(x_45, sizeof(void*)*2, x_42);
+lean_ctor_set_float(x_45, sizeof(void*)*2 + 8, x_42);
+lean_ctor_set_uint8(x_45, sizeof(void*)*2 + 16, x_43);
+x_46 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__3;
+x_47 = lean_alloc_ctor(9, 3, 0);
+lean_ctor_set(x_47, 0, x_45);
+lean_ctor_set(x_47, 1, x_14);
+lean_ctor_set(x_47, 2, x_46);
+lean_inc(x_12);
+lean_ctor_set(x_16, 1, x_47);
+lean_ctor_set(x_16, 0, x_12);
+x_48 = l_Lean_PersistentArray_push___rarg(x_41, x_16);
+x_49 = lean_alloc_ctor(0, 1, 8);
+lean_ctor_set(x_49, 0, x_48);
+lean_ctor_set_uint64(x_49, sizeof(void*)*1, x_40);
+lean_ctor_set(x_17, 3, x_49);
+x_50 = lean_st_ref_set(x_10, x_17, x_20);
+x_51 = lean_ctor_get(x_50, 1);
+lean_inc(x_51);
+if (lean_is_exclusive(x_50)) {
+ lean_ctor_release(x_50, 0);
+ lean_ctor_release(x_50, 1);
+ x_52 = x_50;
+} else {
+ lean_dec_ref(x_50);
+ x_52 = lean_box(0);
+}
+x_53 = lean_box(0);
+if (lean_is_scalar(x_52)) {
+ x_54 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_54 = x_52;
+}
+lean_ctor_set(x_54, 0, x_53);
+lean_ctor_set(x_54, 1, x_51);
+return x_54;
+}
+}
+else
+{
+lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; uint64_t x_62; lean_object* x_63; lean_object* x_64; double x_65; uint8_t x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; 
+x_55 = lean_ctor_get(x_17, 0);
+x_56 = lean_ctor_get(x_17, 1);
+x_57 = lean_ctor_get(x_17, 2);
+x_58 = lean_ctor_get(x_17, 4);
+x_59 = lean_ctor_get(x_17, 5);
+x_60 = lean_ctor_get(x_17, 6);
+x_61 = lean_ctor_get(x_17, 7);
+lean_inc(x_61);
+lean_inc(x_60);
+lean_inc(x_59);
+lean_inc(x_58);
+lean_inc(x_57);
+lean_inc(x_56);
+lean_inc(x_55);
+lean_dec(x_17);
+x_62 = lean_ctor_get_uint64(x_18, sizeof(void*)*1);
+x_63 = lean_ctor_get(x_18, 0);
+lean_inc(x_63);
+if (lean_is_exclusive(x_18)) {
+ lean_ctor_release(x_18, 0);
+ x_64 = x_18;
+} else {
+ lean_dec_ref(x_18);
+ x_64 = lean_box(0);
+}
+x_65 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__1;
+x_66 = 0;
+x_67 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__2;
+x_68 = lean_alloc_ctor(0, 2, 17);
+lean_ctor_set(x_68, 0, x_1);
+lean_ctor_set(x_68, 1, x_67);
+lean_ctor_set_float(x_68, sizeof(void*)*2, x_65);
+lean_ctor_set_float(x_68, sizeof(void*)*2 + 8, x_65);
+lean_ctor_set_uint8(x_68, sizeof(void*)*2 + 16, x_66);
+x_69 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__3;
+x_70 = lean_alloc_ctor(9, 3, 0);
+lean_ctor_set(x_70, 0, x_68);
+lean_ctor_set(x_70, 1, x_14);
+lean_ctor_set(x_70, 2, x_69);
+lean_inc(x_12);
+lean_ctor_set(x_16, 1, x_70);
+lean_ctor_set(x_16, 0, x_12);
+x_71 = l_Lean_PersistentArray_push___rarg(x_63, x_16);
+if (lean_is_scalar(x_64)) {
+ x_72 = lean_alloc_ctor(0, 1, 8);
+} else {
+ x_72 = x_64;
+}
+lean_ctor_set(x_72, 0, x_71);
+lean_ctor_set_uint64(x_72, sizeof(void*)*1, x_62);
+x_73 = lean_alloc_ctor(0, 8, 0);
+lean_ctor_set(x_73, 0, x_55);
+lean_ctor_set(x_73, 1, x_56);
+lean_ctor_set(x_73, 2, x_57);
+lean_ctor_set(x_73, 3, x_72);
+lean_ctor_set(x_73, 4, x_58);
+lean_ctor_set(x_73, 5, x_59);
+lean_ctor_set(x_73, 6, x_60);
+lean_ctor_set(x_73, 7, x_61);
+x_74 = lean_st_ref_set(x_10, x_73, x_20);
+x_75 = lean_ctor_get(x_74, 1);
+lean_inc(x_75);
+if (lean_is_exclusive(x_74)) {
+ lean_ctor_release(x_74, 0);
+ lean_ctor_release(x_74, 1);
+ x_76 = x_74;
+} else {
+ lean_dec_ref(x_74);
+ x_76 = lean_box(0);
+}
+x_77 = lean_box(0);
+if (lean_is_scalar(x_76)) {
+ x_78 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_78 = x_76;
+}
+lean_ctor_set(x_78, 0, x_77);
+lean_ctor_set(x_78, 1, x_75);
+return x_78;
+}
+}
+else
+{
+lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; uint64_t x_88; lean_object* x_89; lean_object* x_90; double x_91; uint8_t x_92; lean_object* x_93; lean_object* x_94; 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_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; 
+x_79 = lean_ctor_get(x_16, 1);
+lean_inc(x_79);
+lean_dec(x_16);
+x_80 = lean_ctor_get(x_17, 0);
+lean_inc(x_80);
+x_81 = lean_ctor_get(x_17, 1);
+lean_inc(x_81);
+x_82 = lean_ctor_get(x_17, 2);
+lean_inc(x_82);
+x_83 = lean_ctor_get(x_17, 4);
+lean_inc(x_83);
+x_84 = lean_ctor_get(x_17, 5);
+lean_inc(x_84);
+x_85 = lean_ctor_get(x_17, 6);
+lean_inc(x_85);
+x_86 = lean_ctor_get(x_17, 7);
+lean_inc(x_86);
+if (lean_is_exclusive(x_17)) {
+ lean_ctor_release(x_17, 0);
+ lean_ctor_release(x_17, 1);
+ lean_ctor_release(x_17, 2);
+ lean_ctor_release(x_17, 3);
+ lean_ctor_release(x_17, 4);
+ lean_ctor_release(x_17, 5);
+ lean_ctor_release(x_17, 6);
+ lean_ctor_release(x_17, 7);
+ x_87 = x_17;
+} else {
+ lean_dec_ref(x_17);
+ x_87 = lean_box(0);
+}
+x_88 = lean_ctor_get_uint64(x_18, sizeof(void*)*1);
+x_89 = lean_ctor_get(x_18, 0);
+lean_inc(x_89);
+if (lean_is_exclusive(x_18)) {
+ lean_ctor_release(x_18, 0);
+ x_90 = x_18;
+} else {
+ lean_dec_ref(x_18);
+ x_90 = lean_box(0);
+}
+x_91 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__1;
+x_92 = 0;
+x_93 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__2;
+x_94 = lean_alloc_ctor(0, 2, 17);
+lean_ctor_set(x_94, 0, x_1);
+lean_ctor_set(x_94, 1, x_93);
+lean_ctor_set_float(x_94, sizeof(void*)*2, x_91);
+lean_ctor_set_float(x_94, sizeof(void*)*2 + 8, x_91);
+lean_ctor_set_uint8(x_94, sizeof(void*)*2 + 16, x_92);
+x_95 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__3;
+x_96 = lean_alloc_ctor(9, 3, 0);
+lean_ctor_set(x_96, 0, x_94);
+lean_ctor_set(x_96, 1, x_14);
+lean_ctor_set(x_96, 2, x_95);
+lean_inc(x_12);
+x_97 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_97, 0, x_12);
+lean_ctor_set(x_97, 1, x_96);
+x_98 = l_Lean_PersistentArray_push___rarg(x_89, x_97);
+if (lean_is_scalar(x_90)) {
+ x_99 = lean_alloc_ctor(0, 1, 8);
+} else {
+ x_99 = x_90;
+}
+lean_ctor_set(x_99, 0, x_98);
+lean_ctor_set_uint64(x_99, sizeof(void*)*1, x_88);
+if (lean_is_scalar(x_87)) {
+ x_100 = lean_alloc_ctor(0, 8, 0);
+} else {
+ x_100 = x_87;
+}
+lean_ctor_set(x_100, 0, x_80);
+lean_ctor_set(x_100, 1, x_81);
+lean_ctor_set(x_100, 2, x_82);
+lean_ctor_set(x_100, 3, x_99);
+lean_ctor_set(x_100, 4, x_83);
+lean_ctor_set(x_100, 5, x_84);
+lean_ctor_set(x_100, 6, x_85);
+lean_ctor_set(x_100, 7, x_86);
+x_101 = lean_st_ref_set(x_10, x_100, x_79);
+x_102 = lean_ctor_get(x_101, 1);
+lean_inc(x_102);
+if (lean_is_exclusive(x_101)) {
+ lean_ctor_release(x_101, 0);
+ lean_ctor_release(x_101, 1);
+ x_103 = x_101;
+} else {
+ lean_dec_ref(x_101);
+ x_103 = lean_box(0);
+}
+x_104 = lean_box(0);
+if (lean_is_scalar(x_103)) {
+ x_105 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_105 = x_103;
+}
+lean_ctor_set(x_105, 0, x_104);
+lean_ctor_set(x_105, 1, x_102);
+return x_105;
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+uint8_t x_13; lean_object* x_14; 
+x_13 = 1;
+x_14 = l_Lean_Meta_Grind_pushEqCore(x_2, x_3, x_1, x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__2(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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+uint8_t x_13; lean_object* x_14; 
+x_13 = 0;
+x_14 = l_Lean_Meta_Grind_pushEqCore(x_2, x_3, x_1, x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+return x_14;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("And", 3, 3);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3(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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_13 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3___closed__2;
+x_14 = lean_unsigned_to_nat(0u);
+lean_inc(x_1);
+x_15 = l_Lean_Expr_proj___override(x_13, x_14, x_1);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_16 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs(x_2, x_15, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_16) == 0)
+{
+lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_17 = lean_ctor_get(x_16, 1);
+lean_inc(x_17);
+lean_dec(x_16);
+x_18 = lean_unsigned_to_nat(1u);
+x_19 = l_Lean_Expr_proj___override(x_13, x_18, x_1);
+x_20 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs(x_3, x_19, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_17);
+return x_20;
+}
+else
+{
+uint8_t x_21; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_21 = !lean_is_exclusive(x_16);
+if (x_21 == 0)
+{
+return x_16;
+}
+else
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_22 = lean_ctor_get(x_16, 0);
+x_23 = lean_ctor_get(x_16, 1);
+lean_inc(x_23);
+lean_inc(x_22);
+lean_dec(x_16);
+x_24 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_24, 0, x_22);
+lean_ctor_set(x_24, 1, x_23);
+return x_24;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__4(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:
+{
+lean_object* x_11; lean_object* x_12; 
+x_11 = lean_box(0);
+x_12 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_12, 0, x_11);
+lean_ctor_set(x_12, 1, x_10);
+return x_12;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("grind", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("issues", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__2;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__4___boxed), 10, 0);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__5() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("unexpected injectivity theorem result type", 42, 42);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__6() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__5;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__7() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__2;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5(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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; lean_object* x_13; uint8_t x_14; 
+x_12 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__3;
+x_13 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__1(x_12, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+x_14 = !lean_is_exclusive(x_13);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; 
+x_15 = lean_ctor_get(x_13, 0);
+x_16 = lean_ctor_get(x_13, 1);
+x_17 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__4;
+x_18 = lean_unbox(x_15);
+lean_dec(x_15);
+if (x_18 == 0)
+{
+lean_object* x_19; lean_object* x_20; 
+lean_free_object(x_13);
+lean_dec(x_1);
+x_19 = lean_box(0);
+x_20 = lean_apply_10(x_17, x_19, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_16);
+return x_20;
+}
+else
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_21 = l_Lean_indentExpr(x_1);
+x_22 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__6;
+lean_ctor_set_tag(x_13, 7);
+lean_ctor_set(x_13, 1, x_21);
+lean_ctor_set(x_13, 0, x_22);
+x_23 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__7;
+x_24 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_24, 0, x_13);
+lean_ctor_set(x_24, 1, x_23);
+x_25 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2(x_12, x_24, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_16);
+x_26 = lean_ctor_get(x_25, 0);
+lean_inc(x_26);
+x_27 = lean_ctor_get(x_25, 1);
+lean_inc(x_27);
+lean_dec(x_25);
+x_28 = lean_apply_10(x_17, x_26, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_27);
+return x_28;
+}
+}
+else
+{
+lean_object* x_29; lean_object* x_30; lean_object* x_31; uint8_t x_32; 
+x_29 = lean_ctor_get(x_13, 0);
+x_30 = lean_ctor_get(x_13, 1);
+lean_inc(x_30);
+lean_inc(x_29);
+lean_dec(x_13);
+x_31 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__4;
+x_32 = lean_unbox(x_29);
+lean_dec(x_29);
+if (x_32 == 0)
+{
+lean_object* x_33; lean_object* x_34; 
+lean_dec(x_1);
+x_33 = lean_box(0);
+x_34 = lean_apply_10(x_31, x_33, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_30);
+return x_34;
+}
+else
+{
+lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; 
+x_35 = l_Lean_indentExpr(x_1);
+x_36 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__6;
+x_37 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_37, 0, x_36);
+lean_ctor_set(x_37, 1, x_35);
+x_38 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__7;
+x_39 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_39, 0, x_37);
+lean_ctor_set(x_39, 1, x_38);
+x_40 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2(x_12, x_39, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_30);
+x_41 = lean_ctor_get(x_40, 0);
+lean_inc(x_41);
+x_42 = lean_ctor_get(x_40, 1);
+lean_inc(x_42);
+lean_dec(x_40);
+x_43 = lean_apply_10(x_31, x_41, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_42);
+return x_43;
+}
+}
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Eq", 2, 2);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("HEq", 3, 3);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__3;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs(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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; 
+lean_inc(x_1);
+x_12 = l_Lean_Meta_instantiateMVarsIfMVarApp(x_1, x_7, x_8, x_9, x_10, x_11);
+x_13 = lean_ctor_get(x_12, 0);
+lean_inc(x_13);
+x_14 = lean_ctor_get(x_12, 1);
+lean_inc(x_14);
+lean_dec(x_12);
+x_15 = l_Lean_Expr_cleanupAnnotations(x_13);
+x_16 = l_Lean_Expr_isApp(x_15);
+if (x_16 == 0)
+{
+lean_object* x_17; lean_object* x_18; 
+lean_dec(x_15);
+lean_dec(x_2);
+x_17 = lean_box(0);
+x_18 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5(x_1, x_17, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_14);
+return x_18;
+}
+else
+{
+lean_object* x_19; lean_object* x_20; uint8_t x_21; 
+x_19 = l_Lean_Expr_appArg(x_15, lean_box(0));
+x_20 = l_Lean_Expr_appFnCleanup(x_15, lean_box(0));
+x_21 = l_Lean_Expr_isApp(x_20);
+if (x_21 == 0)
+{
+lean_object* x_22; lean_object* x_23; 
+lean_dec(x_20);
+lean_dec(x_19);
+lean_dec(x_2);
+x_22 = lean_box(0);
+x_23 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5(x_1, x_22, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_14);
+return x_23;
+}
+else
+{
+lean_object* x_24; lean_object* x_25; lean_object* x_26; uint8_t x_27; 
+x_24 = l_Lean_Expr_appArg(x_20, lean_box(0));
+x_25 = l_Lean_Expr_appFnCleanup(x_20, lean_box(0));
+x_26 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3___closed__2;
+x_27 = l_Lean_Expr_isConstOf(x_25, x_26);
+if (x_27 == 0)
+{
+uint8_t x_28; 
+x_28 = l_Lean_Expr_isApp(x_25);
+if (x_28 == 0)
+{
+lean_object* x_29; lean_object* x_30; 
+lean_dec(x_25);
+lean_dec(x_24);
+lean_dec(x_19);
+lean_dec(x_2);
+x_29 = lean_box(0);
+x_30 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5(x_1, x_29, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_14);
+return x_30;
+}
+else
+{
+lean_object* x_31; lean_object* x_32; lean_object* x_33; uint8_t x_34; 
+x_31 = l_Lean_Expr_appArg(x_25, lean_box(0));
+x_32 = l_Lean_Expr_appFnCleanup(x_25, lean_box(0));
+x_33 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__2;
+x_34 = l_Lean_Expr_isConstOf(x_32, x_33);
+if (x_34 == 0)
+{
+uint8_t x_35; 
+lean_dec(x_24);
+x_35 = l_Lean_Expr_isApp(x_32);
+if (x_35 == 0)
+{
+lean_object* x_36; lean_object* x_37; 
+lean_dec(x_32);
+lean_dec(x_31);
+lean_dec(x_19);
+lean_dec(x_2);
+x_36 = lean_box(0);
+x_37 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5(x_1, x_36, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_14);
+return x_37;
+}
+else
+{
+lean_object* x_38; lean_object* x_39; uint8_t x_40; 
+x_38 = l_Lean_Expr_appFnCleanup(x_32, lean_box(0));
+x_39 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__4;
+x_40 = l_Lean_Expr_isConstOf(x_38, x_39);
+lean_dec(x_38);
+if (x_40 == 0)
+{
+lean_object* x_41; lean_object* x_42; 
+lean_dec(x_31);
+lean_dec(x_19);
+lean_dec(x_2);
+x_41 = lean_box(0);
+x_42 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5(x_1, x_41, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_14);
+return x_42;
+}
+else
+{
+uint8_t x_43; lean_object* x_44; 
+lean_dec(x_1);
+x_43 = 1;
+x_44 = l_Lean_Meta_Grind_pushEqCore(x_31, x_19, x_2, x_43, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_14);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_44;
+}
+}
+}
+else
+{
+uint8_t x_45; lean_object* x_46; 
+lean_dec(x_32);
+lean_dec(x_31);
+lean_dec(x_1);
+x_45 = 0;
+x_46 = l_Lean_Meta_Grind_pushEqCore(x_24, x_19, x_2, x_45, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_14);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_46;
+}
+}
+}
+else
+{
+lean_object* x_47; 
+lean_dec(x_25);
+lean_dec(x_1);
+x_47 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3(x_2, x_24, x_19, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_14);
+return x_47;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__1___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l_Lean_isTracingEnabledFor___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_11;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___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, lean_object* x_10, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_12;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__4___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__4(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_11;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___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, lean_object* x_10, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_2);
+return x_12;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_throwError___at_Lean_Meta_Grind_propagateCtor___spec__2(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:
+{
+lean_object* x_11; lean_object* x_12; uint8_t x_13; 
+x_11 = lean_ctor_get(x_8, 5);
+x_12 = l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(x_1, x_6, x_7, x_8, x_9, x_10);
+x_13 = !lean_is_exclusive(x_12);
+if (x_13 == 0)
+{
+lean_object* x_14; lean_object* x_15; 
+x_14 = lean_ctor_get(x_12, 0);
+lean_inc(x_11);
+x_15 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_15, 0, x_11);
+lean_ctor_set(x_15, 1, x_14);
+lean_ctor_set_tag(x_12, 1);
+lean_ctor_set(x_12, 0, x_15);
+return x_12;
+}
+else
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_16 = lean_ctor_get(x_12, 0);
+x_17 = lean_ctor_get(x_12, 1);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_dec(x_12);
+lean_inc(x_11);
+x_18 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_18, 0, x_11);
+lean_ctor_set(x_18, 1, x_16);
+x_19 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_19, 0, x_18);
+lean_ctor_set(x_19, 1, x_17);
+return x_19;
+}
+}
+}
+static lean_object* _init_l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("unknown constant '", 18, 18);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__1;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("'", 1, 1);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__3;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__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:
+{
+lean_object* x_11; uint8_t x_12; 
+x_11 = lean_st_ref_get(x_9, x_10);
+x_12 = !lean_is_exclusive(x_11);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_13 = lean_ctor_get(x_11, 0);
+x_14 = lean_ctor_get(x_11, 1);
+x_15 = lean_ctor_get(x_13, 0);
+lean_inc(x_15);
+lean_dec(x_13);
+lean_inc(x_1);
+x_16 = lean_environment_find(x_15, x_1);
+if (lean_obj_tag(x_16) == 0)
+{
+uint8_t x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; 
+lean_free_object(x_11);
+x_17 = 0;
+x_18 = l_Lean_MessageData_ofConstName(x_1, x_17);
+x_19 = l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__2;
+x_20 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_20, 0, x_19);
+lean_ctor_set(x_20, 1, x_18);
+x_21 = l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__4;
+x_22 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_22, 0, x_20);
+lean_ctor_set(x_22, 1, x_21);
+x_23 = l_Lean_throwError___at_Lean_Meta_Grind_propagateCtor___spec__2(x_22, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_14);
+return x_23;
+}
+else
+{
+lean_object* x_24; 
+lean_dec(x_1);
+x_24 = lean_ctor_get(x_16, 0);
+lean_inc(x_24);
+lean_dec(x_16);
+lean_ctor_set(x_11, 0, x_24);
+return x_11;
+}
+}
+else
+{
+lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_25 = lean_ctor_get(x_11, 0);
+x_26 = lean_ctor_get(x_11, 1);
+lean_inc(x_26);
+lean_inc(x_25);
+lean_dec(x_11);
+x_27 = lean_ctor_get(x_25, 0);
+lean_inc(x_27);
+lean_dec(x_25);
+lean_inc(x_1);
+x_28 = lean_environment_find(x_27, x_1);
+if (lean_obj_tag(x_28) == 0)
+{
+uint8_t x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_29 = 0;
+x_30 = l_Lean_MessageData_ofConstName(x_1, x_29);
+x_31 = l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__2;
+x_32 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_32, 0, x_31);
+lean_ctor_set(x_32, 1, x_30);
+x_33 = l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__4;
+x_34 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_34, 0, x_32);
+lean_ctor_set(x_34, 1, x_33);
+x_35 = l_Lean_throwError___at_Lean_Meta_Grind_propagateCtor___spec__2(x_34, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_26);
+return x_35;
+}
+else
+{
+lean_object* x_36; lean_object* x_37; 
+lean_dec(x_1);
+x_36 = lean_ctor_get(x_28, 0);
+lean_inc(x_36);
+lean_dec(x_28);
+x_37 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_37, 0, x_36);
+lean_ctor_set(x_37, 1, x_26);
+return x_37;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateCtor___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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_13 = l_Lean_Meta_Grind_getFalseExpr___rarg(x_7, x_8, x_9, x_10, x_11, x_12);
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_ctor_get(x_13, 1);
+lean_inc(x_15);
+lean_dec(x_13);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_16 = lean_grind_mk_eq_proof(x_1, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_15);
+if (lean_obj_tag(x_16) == 0)
+{
+lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_17 = lean_ctor_get(x_16, 0);
+lean_inc(x_17);
+x_18 = lean_ctor_get(x_16, 1);
+lean_inc(x_18);
+lean_dec(x_16);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+x_19 = l_Lean_Meta_mkNoConfusion(x_14, x_17, x_8, x_9, x_10, x_11, x_18);
+if (lean_obj_tag(x_19) == 0)
+{
+lean_object* x_20; lean_object* x_21; lean_object* x_22; 
+x_20 = lean_ctor_get(x_19, 0);
+lean_inc(x_20);
+x_21 = lean_ctor_get(x_19, 1);
+lean_inc(x_21);
+lean_dec(x_19);
+x_22 = l_Lean_Meta_Grind_closeGoal(x_20, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_21);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_22;
+}
+else
+{
+uint8_t x_23; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_23 = !lean_is_exclusive(x_19);
+if (x_23 == 0)
+{
+return x_19;
+}
+else
+{
+lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+x_24 = lean_ctor_get(x_19, 0);
+x_25 = lean_ctor_get(x_19, 1);
+lean_inc(x_25);
+lean_inc(x_24);
+lean_dec(x_19);
+x_26 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_26, 0, x_24);
+lean_ctor_set(x_26, 1, x_25);
+return x_26;
+}
+}
+}
+else
+{
+uint8_t x_27; 
+lean_dec(x_14);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_27 = !lean_is_exclusive(x_16);
+if (x_27 == 0)
+{
+return x_16;
+}
+else
+{
+lean_object* x_28; lean_object* x_29; lean_object* x_30; 
+x_28 = lean_ctor_get(x_16, 0);
+x_29 = lean_ctor_get(x_16, 1);
+lean_inc(x_29);
+lean_inc(x_28);
+lean_dec(x_16);
+x_30 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_30, 0, x_28);
+lean_ctor_set(x_30, 1, x_29);
+return x_30;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateCtor___lambda__2(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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; 
+lean_inc(x_1);
+x_14 = l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1(x_1, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+if (lean_obj_tag(x_14) == 0)
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_15 = lean_ctor_get(x_14, 0);
+lean_inc(x_15);
+x_16 = lean_ctor_get(x_14, 1);
+lean_inc(x_16);
+lean_dec(x_14);
+x_17 = l_Lean_ConstantInfo_type(x_15);
+lean_dec(x_15);
+x_18 = l_Lean_Expr_getForallArity(x_17);
+x_19 = lean_box(0);
+lean_inc(x_18);
+x_20 = lean_mk_array(x_18, x_19);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+x_21 = lean_grind_mk_eq_proof(x_2, x_3, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_16);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_22 = lean_ctor_get(x_21, 0);
+lean_inc(x_22);
+x_23 = lean_ctor_get(x_21, 1);
+lean_inc(x_23);
+lean_dec(x_21);
+x_24 = lean_unsigned_to_nat(1u);
+x_25 = lean_nat_sub(x_18, x_24);
+lean_dec(x_18);
+x_26 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_26, 0, x_22);
+x_27 = lean_array_set(x_20, x_25, x_26);
+lean_dec(x_25);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+x_28 = l_Lean_Meta_mkAppOptM(x_1, x_27, x_9, x_10, x_11, x_12, x_23);
+if (lean_obj_tag(x_28) == 0)
+{
+lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+x_29 = lean_ctor_get(x_28, 0);
+lean_inc(x_29);
+x_30 = lean_ctor_get(x_28, 1);
+lean_inc(x_30);
+lean_dec(x_28);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_29);
+x_31 = lean_infer_type(x_29, x_9, x_10, x_11, x_12, x_30);
+if (lean_obj_tag(x_31) == 0)
+{
+lean_object* x_32; lean_object* x_33; lean_object* x_34; 
+x_32 = lean_ctor_get(x_31, 0);
+lean_inc(x_32);
+x_33 = lean_ctor_get(x_31, 1);
+lean_inc(x_33);
+lean_dec(x_31);
+x_34 = l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs(x_32, x_29, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_33);
+return x_34;
+}
+else
+{
+uint8_t x_35; 
+lean_dec(x_29);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+x_35 = !lean_is_exclusive(x_31);
+if (x_35 == 0)
+{
+return x_31;
+}
+else
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; 
+x_36 = lean_ctor_get(x_31, 0);
+x_37 = lean_ctor_get(x_31, 1);
+lean_inc(x_37);
+lean_inc(x_36);
+lean_dec(x_31);
+x_38 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_38, 0, x_36);
+lean_ctor_set(x_38, 1, x_37);
+return x_38;
+}
+}
+}
+else
+{
+uint8_t x_39; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+x_39 = !lean_is_exclusive(x_28);
+if (x_39 == 0)
+{
+return x_28;
+}
+else
+{
+lean_object* x_40; lean_object* x_41; lean_object* x_42; 
+x_40 = lean_ctor_get(x_28, 0);
+x_41 = lean_ctor_get(x_28, 1);
+lean_inc(x_41);
+lean_inc(x_40);
+lean_dec(x_28);
+x_42 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_42, 0, x_40);
+lean_ctor_set(x_42, 1, x_41);
+return x_42;
+}
+}
+}
+else
+{
+uint8_t x_43; 
+lean_dec(x_20);
+lean_dec(x_18);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_1);
+x_43 = !lean_is_exclusive(x_21);
+if (x_43 == 0)
+{
+return x_21;
+}
+else
+{
+lean_object* x_44; lean_object* x_45; lean_object* x_46; 
+x_44 = lean_ctor_get(x_21, 0);
+x_45 = lean_ctor_get(x_21, 1);
+lean_inc(x_45);
+lean_inc(x_44);
+lean_dec(x_21);
+x_46 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_46, 0, x_44);
+lean_ctor_set(x_46, 1, x_45);
+return x_46;
+}
+}
+}
+else
+{
+uint8_t x_47; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_47 = !lean_is_exclusive(x_14);
+if (x_47 == 0)
+{
+return x_14;
+}
+else
+{
+lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_48 = lean_ctor_get(x_14, 0);
+x_49 = lean_ctor_get(x_14, 1);
+lean_inc(x_49);
+lean_inc(x_48);
+lean_dec(x_14);
+x_50 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_50, 0, x_48);
+lean_ctor_set(x_50, 1, x_49);
+return x_50;
+}
+}
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateCtor___lambda__3___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("noConfusion", 11, 11);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateCtor___lambda__3___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("inj", 3, 3);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateCtor___lambda__3(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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; lean_object* x_15; uint8_t x_16; 
+x_14 = l_Lean_Expr_getAppFn(x_1);
+x_15 = l_Lean_Expr_getAppFn(x_2);
+x_16 = lean_expr_eqv(x_14, x_15);
+lean_dec(x_15);
+if (x_16 == 0)
+{
+lean_object* x_17; 
+lean_dec(x_14);
+x_17 = l_Lean_Expr_getAppFn(x_3);
+if (lean_obj_tag(x_17) == 4)
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; uint8_t x_22; 
+x_18 = lean_ctor_get(x_17, 0);
+lean_inc(x_18);
+lean_dec(x_17);
+x_19 = l_Lean_Meta_Grind_propagateCtor___lambda__3___closed__1;
+x_20 = l_Lean_Name_str___override(x_18, x_19);
+x_21 = lean_st_ref_get(x_12, x_13);
+x_22 = !lean_is_exclusive(x_21);
+if (x_22 == 0)
+{
+lean_object* x_23; lean_object* x_24; lean_object* x_25; uint8_t x_26; 
+x_23 = lean_ctor_get(x_21, 0);
+x_24 = lean_ctor_get(x_21, 1);
+x_25 = lean_ctor_get(x_23, 0);
+lean_inc(x_25);
+lean_dec(x_23);
+x_26 = l_Lean_Environment_contains(x_25, x_20);
+lean_dec(x_20);
+if (x_26 == 0)
+{
+lean_object* x_27; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_2);
+lean_dec(x_1);
+x_27 = lean_box(0);
+lean_ctor_set(x_21, 0, x_27);
+return x_21;
+}
+else
+{
+lean_object* x_28; lean_object* x_29; 
+lean_free_object(x_21);
+x_28 = lean_box(0);
+x_29 = l_Lean_Meta_Grind_propagateCtor___lambda__1(x_1, x_2, x_28, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_24);
+return x_29;
+}
+}
+else
+{
+lean_object* x_30; lean_object* x_31; lean_object* x_32; uint8_t x_33; 
+x_30 = lean_ctor_get(x_21, 0);
+x_31 = lean_ctor_get(x_21, 1);
+lean_inc(x_31);
+lean_inc(x_30);
+lean_dec(x_21);
+x_32 = lean_ctor_get(x_30, 0);
+lean_inc(x_32);
+lean_dec(x_30);
+x_33 = l_Lean_Environment_contains(x_32, x_20);
+lean_dec(x_20);
+if (x_33 == 0)
+{
+lean_object* x_34; lean_object* x_35; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_2);
+lean_dec(x_1);
+x_34 = lean_box(0);
+x_35 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_35, 0, x_34);
+lean_ctor_set(x_35, 1, x_31);
+return x_35;
+}
+else
+{
+lean_object* x_36; lean_object* x_37; 
+x_36 = lean_box(0);
+x_37 = l_Lean_Meta_Grind_propagateCtor___lambda__1(x_1, x_2, x_36, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_31);
+return x_37;
+}
+}
+}
+else
+{
+lean_object* x_38; lean_object* x_39; 
+lean_dec(x_17);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_2);
+lean_dec(x_1);
+x_38 = lean_box(0);
+x_39 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_39, 0, x_38);
+lean_ctor_set(x_39, 1, x_13);
+return x_39;
+}
+}
+else
+{
+if (lean_obj_tag(x_14) == 4)
+{
+lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; uint8_t x_44; 
+x_40 = lean_ctor_get(x_14, 0);
+lean_inc(x_40);
+lean_dec(x_14);
+x_41 = l_Lean_Meta_Grind_propagateCtor___lambda__3___closed__2;
+x_42 = l_Lean_Name_str___override(x_40, x_41);
+x_43 = lean_st_ref_get(x_12, x_13);
+x_44 = !lean_is_exclusive(x_43);
+if (x_44 == 0)
+{
+lean_object* x_45; lean_object* x_46; lean_object* x_47; uint8_t x_48; 
+x_45 = lean_ctor_get(x_43, 0);
+x_46 = lean_ctor_get(x_43, 1);
+x_47 = lean_ctor_get(x_45, 0);
+lean_inc(x_47);
+lean_dec(x_45);
+x_48 = l_Lean_Environment_contains(x_47, x_42);
+if (x_48 == 0)
+{
+lean_object* x_49; 
+lean_dec(x_42);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_2);
+lean_dec(x_1);
+x_49 = lean_box(0);
+lean_ctor_set(x_43, 0, x_49);
+return x_43;
+}
+else
+{
+lean_object* x_50; lean_object* x_51; 
+lean_free_object(x_43);
+x_50 = lean_box(0);
+x_51 = l_Lean_Meta_Grind_propagateCtor___lambda__2(x_42, x_1, x_2, x_50, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_46);
+return x_51;
+}
+}
+else
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; uint8_t x_55; 
+x_52 = lean_ctor_get(x_43, 0);
+x_53 = lean_ctor_get(x_43, 1);
+lean_inc(x_53);
+lean_inc(x_52);
+lean_dec(x_43);
+x_54 = lean_ctor_get(x_52, 0);
+lean_inc(x_54);
+lean_dec(x_52);
+x_55 = l_Lean_Environment_contains(x_54, x_42);
+if (x_55 == 0)
+{
+lean_object* x_56; lean_object* x_57; 
+lean_dec(x_42);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_2);
+lean_dec(x_1);
+x_56 = lean_box(0);
+x_57 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_57, 0, x_56);
+lean_ctor_set(x_57, 1, x_53);
+return x_57;
+}
+else
+{
+lean_object* x_58; lean_object* x_59; 
+x_58 = lean_box(0);
+x_59 = l_Lean_Meta_Grind_propagateCtor___lambda__2(x_42, x_1, x_2, x_58, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_53);
+return x_59;
+}
+}
+}
+else
+{
+lean_object* x_60; lean_object* x_61; 
+lean_dec(x_14);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_2);
+lean_dec(x_1);
+x_60 = lean_box(0);
+x_61 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_61, 0, x_60);
+lean_ctor_set(x_61, 1, x_13);
+return x_61;
+}
+}
+}
+}
+static uint64_t _init_l_Lean_Meta_Grind_propagateCtor___closed__1() {
+_start:
+{
+uint8_t x_1; uint64_t x_2; 
+x_1 = 1;
+x_2 = l_Lean_Meta_TransparencyMode_toUInt64(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateCtor(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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_1);
+x_12 = lean_infer_type(x_1, x_7, x_8, x_9, x_10, x_11);
+if (lean_obj_tag(x_12) == 0)
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; 
+x_13 = lean_ctor_get(x_12, 0);
+lean_inc(x_13);
+x_14 = lean_ctor_get(x_12, 1);
+lean_inc(x_14);
+lean_dec(x_12);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+x_15 = l_Lean_Meta_whnfD(x_13, x_7, x_8, x_9, x_10, x_14);
+if (lean_obj_tag(x_15) == 0)
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+x_16 = lean_ctor_get(x_15, 0);
+lean_inc(x_16);
+x_17 = lean_ctor_get(x_15, 1);
+lean_inc(x_17);
+lean_dec(x_15);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_2);
+x_18 = lean_infer_type(x_2, x_7, x_8, x_9, x_10, x_17);
+if (lean_obj_tag(x_18) == 0)
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_19 = lean_ctor_get(x_18, 0);
+lean_inc(x_19);
+x_20 = lean_ctor_get(x_18, 1);
+lean_inc(x_20);
+lean_dec(x_18);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+x_21 = l_Lean_Meta_whnfD(x_19, x_7, x_8, x_9, x_10, x_20);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; uint64_t x_25; uint8_t x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; uint8_t x_33; 
+x_22 = lean_ctor_get(x_7, 0);
+lean_inc(x_22);
+x_23 = lean_ctor_get(x_21, 0);
+lean_inc(x_23);
+x_24 = lean_ctor_get(x_21, 1);
+lean_inc(x_24);
+lean_dec(x_21);
+x_25 = lean_ctor_get_uint64(x_7, sizeof(void*)*7);
+x_26 = lean_ctor_get_uint8(x_7, sizeof(void*)*7 + 8);
+x_27 = lean_ctor_get(x_7, 1);
+lean_inc(x_27);
+x_28 = lean_ctor_get(x_7, 2);
+lean_inc(x_28);
+x_29 = lean_ctor_get(x_7, 3);
+lean_inc(x_29);
+x_30 = lean_ctor_get(x_7, 4);
+lean_inc(x_30);
+x_31 = lean_ctor_get(x_7, 5);
+lean_inc(x_31);
+x_32 = lean_ctor_get(x_7, 6);
+lean_inc(x_32);
+x_33 = !lean_is_exclusive(x_22);
+if (x_33 == 0)
+{
+uint8_t x_34; uint8_t x_35; uint8_t x_36; uint64_t x_37; uint64_t x_38; uint64_t x_39; uint64_t x_40; uint64_t x_41; lean_object* x_42; lean_object* x_43; 
+x_34 = lean_ctor_get_uint8(x_7, sizeof(void*)*7 + 9);
+x_35 = lean_ctor_get_uint8(x_7, sizeof(void*)*7 + 10);
+x_36 = 1;
+lean_ctor_set_uint8(x_22, 9, x_36);
+x_37 = 2;
+x_38 = lean_uint64_shift_right(x_25, x_37);
+x_39 = lean_uint64_shift_left(x_38, x_37);
+x_40 = l_Lean_Meta_Grind_propagateCtor___closed__1;
+x_41 = lean_uint64_lor(x_39, x_40);
+x_42 = lean_alloc_ctor(0, 7, 11);
+lean_ctor_set(x_42, 0, x_22);
+lean_ctor_set(x_42, 1, x_27);
+lean_ctor_set(x_42, 2, x_28);
+lean_ctor_set(x_42, 3, x_29);
+lean_ctor_set(x_42, 4, x_30);
+lean_ctor_set(x_42, 5, x_31);
+lean_ctor_set(x_42, 6, x_32);
+lean_ctor_set_uint64(x_42, sizeof(void*)*7, x_41);
+lean_ctor_set_uint8(x_42, sizeof(void*)*7 + 8, x_26);
+lean_ctor_set_uint8(x_42, sizeof(void*)*7 + 9, x_34);
+lean_ctor_set_uint8(x_42, sizeof(void*)*7 + 10, x_35);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_16);
+x_43 = l_Lean_Meta_isExprDefEq(x_16, x_23, x_42, x_8, x_9, x_10, x_24);
+if (lean_obj_tag(x_43) == 0)
+{
+lean_object* x_44; uint8_t x_45; 
+x_44 = lean_ctor_get(x_43, 0);
+lean_inc(x_44);
+x_45 = lean_unbox(x_44);
+lean_dec(x_44);
+if (x_45 == 0)
+{
+uint8_t x_46; 
+lean_dec(x_16);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_46 = !lean_is_exclusive(x_43);
+if (x_46 == 0)
+{
+lean_object* x_47; lean_object* x_48; 
+x_47 = lean_ctor_get(x_43, 0);
+lean_dec(x_47);
+x_48 = lean_box(0);
+lean_ctor_set(x_43, 0, x_48);
+return x_43;
+}
+else
+{
+lean_object* x_49; lean_object* x_50; lean_object* x_51; 
+x_49 = lean_ctor_get(x_43, 1);
+lean_inc(x_49);
+lean_dec(x_43);
+x_50 = lean_box(0);
+x_51 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_51, 0, x_50);
+lean_ctor_set(x_51, 1, x_49);
+return x_51;
+}
+}
+else
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_52 = lean_ctor_get(x_43, 1);
+lean_inc(x_52);
+lean_dec(x_43);
+x_53 = lean_box(0);
+x_54 = l_Lean_Meta_Grind_propagateCtor___lambda__3(x_1, x_2, x_16, x_53, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_52);
+lean_dec(x_16);
+return x_54;
+}
+}
+else
+{
+uint8_t x_55; 
+lean_dec(x_16);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_55 = !lean_is_exclusive(x_43);
+if (x_55 == 0)
+{
+return x_43;
+}
+else
+{
+lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+x_56 = lean_ctor_get(x_43, 0);
+x_57 = lean_ctor_get(x_43, 1);
+lean_inc(x_57);
+lean_inc(x_56);
+lean_dec(x_43);
+x_58 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_58, 0, x_56);
+lean_ctor_set(x_58, 1, x_57);
+return x_58;
+}
+}
+}
+else
+{
+uint8_t x_59; uint8_t x_60; uint8_t x_61; uint8_t x_62; uint8_t x_63; uint8_t x_64; uint8_t x_65; uint8_t x_66; uint8_t x_67; uint8_t x_68; uint8_t x_69; uint8_t x_70; uint8_t x_71; uint8_t x_72; uint8_t x_73; uint8_t x_74; uint8_t x_75; uint8_t x_76; uint8_t x_77; lean_object* x_78; uint64_t x_79; uint64_t x_80; uint64_t x_81; uint64_t x_82; uint64_t x_83; lean_object* x_84; lean_object* x_85; 
+x_59 = lean_ctor_get_uint8(x_7, sizeof(void*)*7 + 9);
+x_60 = lean_ctor_get_uint8(x_7, sizeof(void*)*7 + 10);
+x_61 = lean_ctor_get_uint8(x_22, 0);
+x_62 = lean_ctor_get_uint8(x_22, 1);
+x_63 = lean_ctor_get_uint8(x_22, 2);
+x_64 = lean_ctor_get_uint8(x_22, 3);
+x_65 = lean_ctor_get_uint8(x_22, 4);
+x_66 = lean_ctor_get_uint8(x_22, 5);
+x_67 = lean_ctor_get_uint8(x_22, 6);
+x_68 = lean_ctor_get_uint8(x_22, 7);
+x_69 = lean_ctor_get_uint8(x_22, 8);
+x_70 = lean_ctor_get_uint8(x_22, 10);
+x_71 = lean_ctor_get_uint8(x_22, 11);
+x_72 = lean_ctor_get_uint8(x_22, 12);
+x_73 = lean_ctor_get_uint8(x_22, 13);
+x_74 = lean_ctor_get_uint8(x_22, 14);
+x_75 = lean_ctor_get_uint8(x_22, 15);
+x_76 = lean_ctor_get_uint8(x_22, 16);
+lean_dec(x_22);
+x_77 = 1;
+x_78 = lean_alloc_ctor(0, 0, 17);
+lean_ctor_set_uint8(x_78, 0, x_61);
+lean_ctor_set_uint8(x_78, 1, x_62);
+lean_ctor_set_uint8(x_78, 2, x_63);
+lean_ctor_set_uint8(x_78, 3, x_64);
+lean_ctor_set_uint8(x_78, 4, x_65);
+lean_ctor_set_uint8(x_78, 5, x_66);
+lean_ctor_set_uint8(x_78, 6, x_67);
+lean_ctor_set_uint8(x_78, 7, x_68);
+lean_ctor_set_uint8(x_78, 8, x_69);
+lean_ctor_set_uint8(x_78, 9, x_77);
+lean_ctor_set_uint8(x_78, 10, x_70);
+lean_ctor_set_uint8(x_78, 11, x_71);
+lean_ctor_set_uint8(x_78, 12, x_72);
+lean_ctor_set_uint8(x_78, 13, x_73);
+lean_ctor_set_uint8(x_78, 14, x_74);
+lean_ctor_set_uint8(x_78, 15, x_75);
+lean_ctor_set_uint8(x_78, 16, x_76);
+x_79 = 2;
+x_80 = lean_uint64_shift_right(x_25, x_79);
+x_81 = lean_uint64_shift_left(x_80, x_79);
+x_82 = l_Lean_Meta_Grind_propagateCtor___closed__1;
+x_83 = lean_uint64_lor(x_81, x_82);
+x_84 = lean_alloc_ctor(0, 7, 11);
+lean_ctor_set(x_84, 0, x_78);
+lean_ctor_set(x_84, 1, x_27);
+lean_ctor_set(x_84, 2, x_28);
+lean_ctor_set(x_84, 3, x_29);
+lean_ctor_set(x_84, 4, x_30);
+lean_ctor_set(x_84, 5, x_31);
+lean_ctor_set(x_84, 6, x_32);
+lean_ctor_set_uint64(x_84, sizeof(void*)*7, x_83);
+lean_ctor_set_uint8(x_84, sizeof(void*)*7 + 8, x_26);
+lean_ctor_set_uint8(x_84, sizeof(void*)*7 + 9, x_59);
+lean_ctor_set_uint8(x_84, sizeof(void*)*7 + 10, x_60);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_16);
+x_85 = l_Lean_Meta_isExprDefEq(x_16, x_23, x_84, x_8, x_9, x_10, x_24);
+if (lean_obj_tag(x_85) == 0)
+{
+lean_object* x_86; uint8_t x_87; 
+x_86 = lean_ctor_get(x_85, 0);
+lean_inc(x_86);
+x_87 = lean_unbox(x_86);
+lean_dec(x_86);
+if (x_87 == 0)
+{
+lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; 
+lean_dec(x_16);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_88 = lean_ctor_get(x_85, 1);
+lean_inc(x_88);
+if (lean_is_exclusive(x_85)) {
+ lean_ctor_release(x_85, 0);
+ lean_ctor_release(x_85, 1);
+ x_89 = x_85;
+} else {
+ lean_dec_ref(x_85);
+ x_89 = lean_box(0);
+}
+x_90 = lean_box(0);
+if (lean_is_scalar(x_89)) {
+ x_91 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_91 = x_89;
+}
+lean_ctor_set(x_91, 0, x_90);
+lean_ctor_set(x_91, 1, x_88);
+return x_91;
+}
+else
+{
+lean_object* x_92; lean_object* x_93; lean_object* x_94; 
+x_92 = lean_ctor_get(x_85, 1);
+lean_inc(x_92);
+lean_dec(x_85);
+x_93 = lean_box(0);
+x_94 = l_Lean_Meta_Grind_propagateCtor___lambda__3(x_1, x_2, x_16, x_93, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_92);
+lean_dec(x_16);
+return x_94;
+}
+}
+else
+{
+lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; 
+lean_dec(x_16);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_95 = lean_ctor_get(x_85, 0);
+lean_inc(x_95);
+x_96 = lean_ctor_get(x_85, 1);
+lean_inc(x_96);
+if (lean_is_exclusive(x_85)) {
+ lean_ctor_release(x_85, 0);
+ lean_ctor_release(x_85, 1);
+ x_97 = x_85;
+} else {
+ lean_dec_ref(x_85);
+ x_97 = lean_box(0);
+}
+if (lean_is_scalar(x_97)) {
+ x_98 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_98 = x_97;
+}
+lean_ctor_set(x_98, 0, x_95);
+lean_ctor_set(x_98, 1, x_96);
+return x_98;
+}
+}
+}
+else
+{
+uint8_t x_99; 
+lean_dec(x_16);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_99 = !lean_is_exclusive(x_21);
+if (x_99 == 0)
+{
+return x_21;
+}
+else
+{
+lean_object* x_100; lean_object* x_101; lean_object* x_102; 
+x_100 = lean_ctor_get(x_21, 0);
+x_101 = lean_ctor_get(x_21, 1);
+lean_inc(x_101);
+lean_inc(x_100);
+lean_dec(x_21);
+x_102 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_102, 0, x_100);
+lean_ctor_set(x_102, 1, x_101);
+return x_102;
+}
+}
+}
+else
+{
+uint8_t x_103; 
+lean_dec(x_16);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_103 = !lean_is_exclusive(x_18);
+if (x_103 == 0)
+{
+return x_18;
+}
+else
+{
+lean_object* x_104; lean_object* x_105; lean_object* x_106; 
+x_104 = lean_ctor_get(x_18, 0);
+x_105 = lean_ctor_get(x_18, 1);
+lean_inc(x_105);
+lean_inc(x_104);
+lean_dec(x_18);
+x_106 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_106, 0, x_104);
+lean_ctor_set(x_106, 1, x_105);
+return x_106;
+}
+}
+}
+else
+{
+uint8_t x_107; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_107 = !lean_is_exclusive(x_15);
+if (x_107 == 0)
+{
+return x_15;
+}
+else
+{
+lean_object* x_108; lean_object* x_109; lean_object* x_110; 
+x_108 = lean_ctor_get(x_15, 0);
+x_109 = lean_ctor_get(x_15, 1);
+lean_inc(x_109);
+lean_inc(x_108);
+lean_dec(x_15);
+x_110 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_110, 0, x_108);
+lean_ctor_set(x_110, 1, x_109);
+return x_110;
+}
+}
+}
+else
+{
+uint8_t x_111; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_111 = !lean_is_exclusive(x_12);
+if (x_111 == 0)
+{
+return x_12;
+}
+else
+{
+lean_object* x_112; lean_object* x_113; lean_object* x_114; 
+x_112 = lean_ctor_get(x_12, 0);
+x_113 = lean_ctor_get(x_12, 1);
+lean_inc(x_113);
+lean_inc(x_112);
+lean_dec(x_12);
+x_114 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_114, 0, x_112);
+lean_ctor_set(x_114, 1, x_113);
+return x_114;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_throwError___at_Lean_Meta_Grind_propagateCtor___spec__2___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l_Lean_throwError___at_Lean_Meta_Grind_propagateCtor___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_11;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_11;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateCtor___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l_Lean_Meta_Grind_propagateCtor___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_3);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateCtor___lambda__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; 
+x_14 = l_Lean_Meta_Grind_propagateCtor___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_4);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateCtor___lambda__3___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; 
+x_14 = l_Lean_Meta_Grind_propagateCtor___lambda__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_14;
+}
+}
+lean_object* initialize_Lean_Meta_Tactic_Grind_Types(uint8_t builtin, lean_object*);
+static bool _G_initialized = false;
+LEAN_EXPORT lean_object* initialize_Lean_Meta_Tactic_Grind_Ctor(uint8_t builtin, lean_object* w) {
+lean_object * res;
+if (_G_initialized) return lean_io_result_mk_ok(lean_box(0));
+_G_initialized = true;
+res = initialize_Lean_Meta_Tactic_Grind_Types(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__1 = _init_l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__1();
+l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__2 = _init_l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__2();
+lean_mark_persistent(l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__2);
+l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__3 = _init_l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__3();
+lean_mark_persistent(l_Lean_addTrace___at___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___spec__2___closed__3);
+l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__3___closed__2);
+l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__2);
+l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__3);
+l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__4();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__4);
+l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__5();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__5);
+l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__6();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__6);
+l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__7 = _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__7();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___lambda__5___closed__7);
+l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__2);
+l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__3);
+l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__4();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Ctor_0__Lean_Meta_Grind_propagateInjEqs___closed__4);
+l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__1 = _init_l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__1();
+lean_mark_persistent(l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__1);
+l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__2 = _init_l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__2();
+lean_mark_persistent(l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__2);
+l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__3 = _init_l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__3();
+lean_mark_persistent(l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__3);
+l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__4 = _init_l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__4();
+lean_mark_persistent(l_Lean_getConstInfo___at_Lean_Meta_Grind_propagateCtor___spec__1___closed__4);
+l_Lean_Meta_Grind_propagateCtor___lambda__3___closed__1 = _init_l_Lean_Meta_Grind_propagateCtor___lambda__3___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateCtor___lambda__3___closed__1);
+l_Lean_Meta_Grind_propagateCtor___lambda__3___closed__2 = _init_l_Lean_Meta_Grind_propagateCtor___lambda__3___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateCtor___lambda__3___closed__2);
+l_Lean_Meta_Grind_propagateCtor___closed__1 = _init_l_Lean_Meta_Grind_propagateCtor___closed__1();
+return lean_io_result_mk_ok(lean_box(0));
+}
+#ifdef __cplusplus
+}
+#endif
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Grind/Internalize.c b/stage0/stdlib/Lean/Meta/Tactic/Grind/Internalize.c
new file mode 100644
index 000000000000..a07cb790a064
--- /dev/null
+++ b/stage0/stdlib/Lean/Meta/Tactic/Grind/Internalize.c
@@ -0,0 +1,7828 @@
+// Lean compiler output
+// Module: Lean.Meta.Tactic.Grind.Internalize
+// Imports: Init.Grind.Util Lean.Meta.LitValues Lean.Meta.Tactic.Grind.Types
+#include <lean/lean.h>
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Wunused-parameter"
+#pragma clang diagnostic ignored "-Wunused-label"
+#elif defined(__GNUC__) && !defined(__CLANG__)
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#pragma GCC diagnostic ignored "-Wunused-label"
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+static lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5___closed__1;
+static lean_object* l_Lean_Meta_Grind_addCongrTable___closed__1;
+static lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__3;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_internalize___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_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_find_x3f___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__1___boxed(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+size_t lean_usize_shift_right(size_t, size_t);
+static lean_object* l_Lean_Meta_Grind_addCongrTable___closed__9;
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__5(lean_object*, size_t, size_t, lean_object*, lean_object*);
+lean_object* l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__2___boxed(lean_object*, lean_object*, lean_object*);
+uint8_t lean_usize_dec_le(size_t, size_t);
+static lean_object* l_Lean_Meta_Grind_addCongrTable___closed__4;
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Meta_Grind_addCongrTable___spec__6(lean_object*, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__2;
+size_t lean_uint64_to_usize(uint64_t);
+lean_object* l_Lean_Meta_Grind_mkENode(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_PersistentHashMap_findEntry_x3f___at_Lean_Meta_Grind_addCongrTable___spec__1(lean_object*, lean_object*, lean_object*);
+uint8_t l_Lean_Meta_Grind_isCongruent(lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__6(size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__7;
+lean_object* l_Lean_Expr_sort___override(lean_object*);
+lean_object* l_Lean_PersistentArray_push___rarg(lean_object*, lean_object*);
+lean_object* lean_array_push(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__4;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addCongrTable___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*);
+size_t lean_usize_mul(size_t, size_t);
+static lean_object* l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__3;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addCongrTable___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_object*);
+LEAN_EXPORT lean_object* l_panic___at_Lean_Meta_Grind_internalize___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* lean_mk_array(lean_object*, lean_object*);
+uint64_t l_Lean_Meta_Grind_congrHash(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addCongrTable___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_object*);
+lean_object* lean_array_fget(lean_object*, lean_object*);
+lean_object* lean_array_fset(lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_pushEqCore(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__2;
+lean_object* l_Lean_Meta_Grind_setENode(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_stringToMessageData(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAtAux___at_Lean_Meta_Grind_addCongrTable___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__3;
+lean_object* l_Lean_Meta_Grind_propagateUp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+extern lean_object* l_instInhabitedPUnit;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addCongrTable___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_object*);
+static lean_object* l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__4;
+static lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__2;
+lean_object* l_Lean_Name_mkStr3(lean_object*, lean_object*, lean_object*);
+static size_t l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5(lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__2;
+lean_object* lean_st_ref_take(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Meta_Grind_addCongrTable___spec__6___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAtAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addCongrTable___lambda__3___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_Meta_Grind_addCongrTable___closed__5;
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAtAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_outOfBounds___rarg(lean_object*);
+static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__1;
+lean_object* lean_st_ref_get(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___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_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(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_PersistentHashMap_insert___at_Lean_Meta_Grind_addCongrTable___spec__4(lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addCongrTable(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_toHeadIndex(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2(lean_object*, lean_object*, size_t, lean_object*);
+static lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4;
+static size_t l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__1;
+LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___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*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__5___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+extern lean_object* l_Lean_levelZero;
+extern lean_object* l_Lean_instInhabitedExpr;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_internalize___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_object*);
+static lean_object* l_Lean_Meta_Grind_addCongrTable___closed__7;
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__6___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Meta_Grind_addCongrTable___spec__7(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insert___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__4(lean_object*, lean_object*, lean_object*);
+uint8_t l_Lean_Meta_Grind_isSameExpr_unsafe__1(lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_alreadyInternalized(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_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l___private_Init_Util_0__mkPanicMessageWithDecl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___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_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__2(lean_object*, size_t, lean_object*);
+static lean_object* l_Lean_Meta_Grind_addCongrTable___closed__6;
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+extern lean_object* l_Lean_Meta_instMonadMetaM;
+lean_object* l_Lean_Meta_Grind_hasSameType(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* lean_usize_to_nat(size_t);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_MessageData_ofExpr(lean_object*);
+static lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__1;
+double l_Float_ofScientific(lean_object*, uint8_t, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___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_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_find_x3f___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__1(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAtAux___at_Lean_Meta_Grind_addCongrTable___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at_Lean_Meta_Grind_internalize___spec__2(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_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__5;
+LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___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_object*, lean_object*, lean_object*);
+uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
+uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
+lean_object* l_Lean_Name_mkStr2(lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_registerParent(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_indentExpr(lean_object*);
+lean_object* l_Lean_PersistentHashMap_mkEmptyEntries(lean_object*, lean_object*);
+uint8_t l_Lean_Expr_isConstOf(lean_object*, lean_object*);
+static lean_object* l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__5;
+lean_object* lean_array_set(lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3(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_object* lean_panic_fn(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__6;
+lean_object* lean_nat_sub(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Expr_getAppFn(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_PersistentHashMap_mkCollisionNode___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_getENode(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_Grind_internalize___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_object*);
+static lean_object* l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__6;
+lean_object* l_Lean_Meta_Grind_mkENodeCore(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_object*);
+LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at_Lean_Meta_Grind_internalize___spec__2___boxed(lean_object**);
+static lean_object* l_Lean_Meta_Grind_internalize___lambda__2___closed__5;
+static double l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__1;
+size_t lean_usize_sub(size_t, size_t);
+lean_object* lean_array_mk(lean_object*);
+static lean_object* l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__1;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addCongrTable___lambda__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_isTracingEnabledForCore(lean_object*, lean_object*, lean_object*);
+size_t lean_usize_add(size_t, size_t);
+static lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__3;
+lean_object* l_instInhabitedOfMonad___rarg(lean_object*, lean_object*);
+lean_object* lean_st_ref_set(lean_object*, lean_object*, lean_object*);
+size_t lean_usize_shift_left(size_t, size_t);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__7(lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__1;
+uint8_t l___private_Lean_HeadIndex_0__Lean_beqHeadIndex____x40_Lean_HeadIndex___hyg_69_(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_addCongrTable___closed__8;
+lean_object* lean_array_get_size(lean_object*);
+static lean_object* l_Lean_Meta_Grind_addCongrTable___closed__2;
+static lean_object* l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__3;
+lean_object* lean_nat_add(lean_object*, lean_object*);
+extern lean_object* l_Lean_Meta_Grind_congrPlaceholderProof;
+lean_object* l_Lean_PersistentHashMap_getCollisionNodeSize___rarg(lean_object*);
+uint8_t l_Lean_Expr_isConst(lean_object*);
+uint64_t l_Lean_HeadIndex_hash(lean_object*);
+static lean_object* l_Lean_Meta_Grind_addCongrTable___closed__3;
+static lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__2;
+lean_object* lean_array_get(lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_isLitValue(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_ReaderT_instMonad___rarg(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_internalize(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_Grind_internalize___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*);
+size_t lean_usize_land(size_t, size_t);
+static lean_object* l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__4;
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAtAux___at_Lean_Meta_Grind_addCongrTable___spec__3(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:
+{
+lean_object* x_7; lean_object* x_8; uint8_t x_9; 
+x_7 = lean_ctor_get(x_1, 1);
+lean_inc(x_7);
+x_8 = lean_array_get_size(x_2);
+x_9 = lean_nat_dec_lt(x_5, x_8);
+lean_dec(x_8);
+if (x_9 == 0)
+{
+lean_object* x_10; 
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_1);
+x_10 = lean_box(0);
+return x_10;
+}
+else
+{
+lean_object* x_11; uint8_t x_12; 
+x_11 = lean_array_fget(x_2, x_5);
+lean_inc(x_11);
+lean_inc(x_6);
+x_12 = l_Lean_Meta_Grind_isCongruent(x_7, x_6, x_11);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; 
+lean_dec(x_11);
+x_13 = lean_unsigned_to_nat(1u);
+x_14 = lean_nat_add(x_5, x_13);
+lean_dec(x_5);
+x_4 = lean_box(0);
+x_5 = x_14;
+goto _start;
+}
+else
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+lean_dec(x_6);
+lean_dec(x_1);
+x_16 = lean_array_fget(x_3, x_5);
+lean_dec(x_5);
+x_17 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_17, 0, x_11);
+lean_ctor_set(x_17, 1, x_16);
+x_18 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_18, 0, x_17);
+return x_18;
+}
+}
+}
+}
+static size_t _init_l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__1() {
+_start:
+{
+size_t x_1; size_t x_2; size_t x_3; 
+x_1 = 1;
+x_2 = 5;
+x_3 = lean_usize_shift_left(x_1, x_2);
+return x_3;
+}
+}
+static size_t _init_l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__2() {
+_start:
+{
+size_t x_1; size_t x_2; size_t x_3; 
+x_1 = 1;
+x_2 = l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__1;
+x_3 = lean_usize_sub(x_2, x_1);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2(lean_object* x_1, lean_object* x_2, size_t x_3, lean_object* x_4) {
+_start:
+{
+if (lean_obj_tag(x_2) == 0)
+{
+uint8_t x_5; 
+x_5 = !lean_is_exclusive(x_2);
+if (x_5 == 0)
+{
+lean_object* x_6; lean_object* x_7; size_t x_8; size_t x_9; size_t x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; 
+x_6 = lean_ctor_get(x_2, 0);
+x_7 = lean_ctor_get(x_1, 1);
+lean_inc(x_7);
+x_8 = 5;
+x_9 = l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
+x_10 = lean_usize_land(x_3, x_9);
+x_11 = lean_usize_to_nat(x_10);
+x_12 = lean_box(2);
+x_13 = lean_array_get(x_12, x_6, x_11);
+lean_dec(x_11);
+lean_dec(x_6);
+switch (lean_obj_tag(x_13)) {
+case 0:
+{
+uint8_t x_14; 
+lean_dec(x_1);
+x_14 = !lean_is_exclusive(x_13);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; uint8_t x_17; 
+x_15 = lean_ctor_get(x_13, 0);
+x_16 = lean_ctor_get(x_13, 1);
+lean_inc(x_15);
+x_17 = l_Lean_Meta_Grind_isCongruent(x_7, x_4, x_15);
+if (x_17 == 0)
+{
+lean_object* x_18; 
+lean_free_object(x_13);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_free_object(x_2);
+x_18 = lean_box(0);
+return x_18;
+}
+else
+{
+lean_ctor_set_tag(x_2, 1);
+lean_ctor_set(x_2, 0, x_13);
+return x_2;
+}
+}
+else
+{
+lean_object* x_19; lean_object* x_20; uint8_t x_21; 
+x_19 = lean_ctor_get(x_13, 0);
+x_20 = lean_ctor_get(x_13, 1);
+lean_inc(x_20);
+lean_inc(x_19);
+lean_dec(x_13);
+lean_inc(x_19);
+x_21 = l_Lean_Meta_Grind_isCongruent(x_7, x_4, x_19);
+if (x_21 == 0)
+{
+lean_object* x_22; 
+lean_dec(x_20);
+lean_dec(x_19);
+lean_free_object(x_2);
+x_22 = lean_box(0);
+return x_22;
+}
+else
+{
+lean_object* x_23; 
+x_23 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_23, 0, x_19);
+lean_ctor_set(x_23, 1, x_20);
+lean_ctor_set_tag(x_2, 1);
+lean_ctor_set(x_2, 0, x_23);
+return x_2;
+}
+}
+}
+case 1:
+{
+lean_object* x_24; size_t x_25; 
+lean_dec(x_7);
+lean_free_object(x_2);
+x_24 = lean_ctor_get(x_13, 0);
+lean_inc(x_24);
+lean_dec(x_13);
+x_25 = lean_usize_shift_right(x_3, x_8);
+x_2 = x_24;
+x_3 = x_25;
+goto _start;
+}
+default: 
+{
+lean_object* x_27; 
+lean_dec(x_7);
+lean_free_object(x_2);
+lean_dec(x_4);
+lean_dec(x_1);
+x_27 = lean_box(0);
+return x_27;
+}
+}
+}
+else
+{
+lean_object* x_28; lean_object* x_29; size_t x_30; size_t x_31; size_t x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_28 = lean_ctor_get(x_2, 0);
+lean_inc(x_28);
+lean_dec(x_2);
+x_29 = lean_ctor_get(x_1, 1);
+lean_inc(x_29);
+x_30 = 5;
+x_31 = l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
+x_32 = lean_usize_land(x_3, x_31);
+x_33 = lean_usize_to_nat(x_32);
+x_34 = lean_box(2);
+x_35 = lean_array_get(x_34, x_28, x_33);
+lean_dec(x_33);
+lean_dec(x_28);
+switch (lean_obj_tag(x_35)) {
+case 0:
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; uint8_t x_39; 
+lean_dec(x_1);
+x_36 = lean_ctor_get(x_35, 0);
+lean_inc(x_36);
+x_37 = lean_ctor_get(x_35, 1);
+lean_inc(x_37);
+if (lean_is_exclusive(x_35)) {
+ lean_ctor_release(x_35, 0);
+ lean_ctor_release(x_35, 1);
+ x_38 = x_35;
+} else {
+ lean_dec_ref(x_35);
+ x_38 = lean_box(0);
+}
+lean_inc(x_36);
+x_39 = l_Lean_Meta_Grind_isCongruent(x_29, x_4, x_36);
+if (x_39 == 0)
+{
+lean_object* x_40; 
+lean_dec(x_38);
+lean_dec(x_37);
+lean_dec(x_36);
+x_40 = lean_box(0);
+return x_40;
+}
+else
+{
+lean_object* x_41; lean_object* x_42; 
+if (lean_is_scalar(x_38)) {
+ x_41 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_41 = x_38;
+}
+lean_ctor_set(x_41, 0, x_36);
+lean_ctor_set(x_41, 1, x_37);
+x_42 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_42, 0, x_41);
+return x_42;
+}
+}
+case 1:
+{
+lean_object* x_43; size_t x_44; 
+lean_dec(x_29);
+x_43 = lean_ctor_get(x_35, 0);
+lean_inc(x_43);
+lean_dec(x_35);
+x_44 = lean_usize_shift_right(x_3, x_30);
+x_2 = x_43;
+x_3 = x_44;
+goto _start;
+}
+default: 
+{
+lean_object* x_46; 
+lean_dec(x_29);
+lean_dec(x_4);
+lean_dec(x_1);
+x_46 = lean_box(0);
+return x_46;
+}
+}
+}
+}
+else
+{
+lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_47 = lean_ctor_get(x_2, 0);
+lean_inc(x_47);
+x_48 = lean_ctor_get(x_2, 1);
+lean_inc(x_48);
+lean_dec(x_2);
+x_49 = lean_unsigned_to_nat(0u);
+x_50 = l_Lean_PersistentHashMap_findEntryAtAux___at_Lean_Meta_Grind_addCongrTable___spec__3(x_1, x_47, x_48, lean_box(0), x_49, x_4);
+lean_dec(x_48);
+lean_dec(x_47);
+return x_50;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntry_x3f___at_Lean_Meta_Grind_addCongrTable___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
+_start:
+{
+lean_object* x_4; uint64_t x_5; size_t x_6; lean_object* x_7; 
+x_4 = lean_ctor_get(x_1, 1);
+lean_inc(x_4);
+x_5 = l_Lean_Meta_Grind_congrHash(x_4, x_3);
+x_6 = lean_uint64_to_usize(x_5);
+x_7 = l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2(x_1, x_2, x_6, x_3);
+return x_7;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Meta_Grind_addCongrTable___spec__6(lean_object* x_1, size_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
+_start:
+{
+lean_object* x_8; lean_object* x_9; uint8_t x_10; 
+x_8 = lean_ctor_get(x_1, 1);
+lean_inc(x_8);
+x_9 = lean_array_get_size(x_3);
+x_10 = lean_nat_dec_lt(x_6, x_9);
+lean_dec(x_9);
+if (x_10 == 0)
+{
+lean_dec(x_8);
+lean_dec(x_6);
+lean_dec(x_1);
+return x_7;
+}
+else
+{
+lean_object* x_11; lean_object* x_12; uint64_t x_13; size_t x_14; size_t x_15; size_t x_16; size_t x_17; size_t x_18; size_t x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; 
+x_11 = lean_array_fget(x_3, x_6);
+x_12 = lean_array_fget(x_4, x_6);
+x_13 = l_Lean_Meta_Grind_congrHash(x_8, x_11);
+x_14 = lean_uint64_to_usize(x_13);
+x_15 = 1;
+x_16 = lean_usize_sub(x_2, x_15);
+x_17 = 5;
+x_18 = lean_usize_mul(x_17, x_16);
+x_19 = lean_usize_shift_right(x_14, x_18);
+x_20 = lean_unsigned_to_nat(1u);
+x_21 = lean_nat_add(x_6, x_20);
+lean_dec(x_6);
+lean_inc(x_1);
+x_22 = l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5(x_1, x_7, x_19, x_2, x_11, x_12);
+x_5 = lean_box(0);
+x_6 = x_21;
+x_7 = x_22;
+goto _start;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Meta_Grind_addCongrTable___spec__7(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
+_start:
+{
+lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; uint8_t x_10; 
+x_6 = lean_ctor_get(x_2, 0);
+lean_inc(x_6);
+x_7 = lean_ctor_get(x_2, 1);
+lean_inc(x_7);
+x_8 = lean_ctor_get(x_1, 1);
+lean_inc(x_8);
+x_9 = lean_array_get_size(x_6);
+x_10 = lean_nat_dec_lt(x_3, x_9);
+lean_dec(x_9);
+if (x_10 == 0)
+{
+uint8_t x_11; 
+lean_dec(x_8);
+lean_dec(x_3);
+lean_dec(x_1);
+x_11 = !lean_is_exclusive(x_2);
+if (x_11 == 0)
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
+x_12 = lean_ctor_get(x_2, 1);
+lean_dec(x_12);
+x_13 = lean_ctor_get(x_2, 0);
+lean_dec(x_13);
+x_14 = lean_array_push(x_6, x_4);
+x_15 = lean_array_push(x_7, x_5);
+lean_ctor_set(x_2, 1, x_15);
+lean_ctor_set(x_2, 0, x_14);
+return x_2;
+}
+else
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+lean_dec(x_2);
+x_16 = lean_array_push(x_6, x_4);
+x_17 = lean_array_push(x_7, x_5);
+x_18 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_18, 0, x_16);
+lean_ctor_set(x_18, 1, x_17);
+return x_18;
+}
+}
+else
+{
+lean_object* x_19; uint8_t x_20; 
+x_19 = lean_array_fget(x_6, x_3);
+lean_inc(x_4);
+x_20 = l_Lean_Meta_Grind_isCongruent(x_8, x_4, x_19);
+if (x_20 == 0)
+{
+lean_object* x_21; lean_object* x_22; 
+lean_dec(x_7);
+lean_dec(x_6);
+x_21 = lean_unsigned_to_nat(1u);
+x_22 = lean_nat_add(x_3, x_21);
+lean_dec(x_3);
+x_3 = x_22;
+goto _start;
+}
+else
+{
+uint8_t x_24; 
+lean_dec(x_1);
+x_24 = !lean_is_exclusive(x_2);
+if (x_24 == 0)
+{
+lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_25 = lean_ctor_get(x_2, 1);
+lean_dec(x_25);
+x_26 = lean_ctor_get(x_2, 0);
+lean_dec(x_26);
+x_27 = lean_array_fset(x_6, x_3, x_4);
+x_28 = lean_array_fset(x_7, x_3, x_5);
+lean_dec(x_3);
+lean_ctor_set(x_2, 1, x_28);
+lean_ctor_set(x_2, 0, x_27);
+return x_2;
+}
+else
+{
+lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+lean_dec(x_2);
+x_29 = lean_array_fset(x_6, x_3, x_4);
+x_30 = lean_array_fset(x_7, x_3, x_5);
+lean_dec(x_3);
+x_31 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_31, 0, x_29);
+lean_ctor_set(x_31, 1, x_30);
+return x_31;
+}
+}
+}
+}
+}
+static lean_object* _init_l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_PersistentHashMap_mkEmptyEntries(lean_box(0), lean_box(0));
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5(lean_object* x_1, lean_object* x_2, size_t x_3, size_t x_4, lean_object* x_5, lean_object* x_6) {
+_start:
+{
+if (lean_obj_tag(x_2) == 0)
+{
+uint8_t x_7; 
+x_7 = !lean_is_exclusive(x_2);
+if (x_7 == 0)
+{
+lean_object* x_8; lean_object* x_9; size_t x_10; size_t x_11; size_t x_12; size_t x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; 
+x_8 = lean_ctor_get(x_2, 0);
+x_9 = lean_ctor_get(x_1, 1);
+lean_inc(x_9);
+x_10 = 1;
+x_11 = 5;
+x_12 = l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
+x_13 = lean_usize_land(x_3, x_12);
+x_14 = lean_usize_to_nat(x_13);
+x_15 = lean_array_get_size(x_8);
+x_16 = lean_nat_dec_lt(x_14, x_15);
+lean_dec(x_15);
+if (x_16 == 0)
+{
+lean_dec(x_14);
+lean_dec(x_9);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_1);
+return x_2;
+}
+else
+{
+lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_17 = lean_array_fget(x_8, x_14);
+x_18 = lean_box(0);
+x_19 = lean_array_fset(x_8, x_14, x_18);
+switch (lean_obj_tag(x_17)) {
+case 0:
+{
+uint8_t x_20; 
+lean_dec(x_1);
+x_20 = !lean_is_exclusive(x_17);
+if (x_20 == 0)
+{
+lean_object* x_21; lean_object* x_22; uint8_t x_23; 
+x_21 = lean_ctor_get(x_17, 0);
+x_22 = lean_ctor_get(x_17, 1);
+lean_inc(x_21);
+lean_inc(x_5);
+x_23 = l_Lean_Meta_Grind_isCongruent(x_9, x_5, x_21);
+if (x_23 == 0)
+{
+lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+lean_free_object(x_17);
+x_24 = l_Lean_PersistentHashMap_mkCollisionNode___rarg(x_21, x_22, x_5, x_6);
+x_25 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_25, 0, x_24);
+x_26 = lean_array_fset(x_19, x_14, x_25);
+lean_dec(x_14);
+lean_ctor_set(x_2, 0, x_26);
+return x_2;
+}
+else
+{
+lean_object* x_27; 
+lean_dec(x_22);
+lean_dec(x_21);
+lean_ctor_set(x_17, 1, x_6);
+lean_ctor_set(x_17, 0, x_5);
+x_27 = lean_array_fset(x_19, x_14, x_17);
+lean_dec(x_14);
+lean_ctor_set(x_2, 0, x_27);
+return x_2;
+}
+}
+else
+{
+lean_object* x_28; lean_object* x_29; uint8_t x_30; 
+x_28 = lean_ctor_get(x_17, 0);
+x_29 = lean_ctor_get(x_17, 1);
+lean_inc(x_29);
+lean_inc(x_28);
+lean_dec(x_17);
+lean_inc(x_28);
+lean_inc(x_5);
+x_30 = l_Lean_Meta_Grind_isCongruent(x_9, x_5, x_28);
+if (x_30 == 0)
+{
+lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_31 = l_Lean_PersistentHashMap_mkCollisionNode___rarg(x_28, x_29, x_5, x_6);
+x_32 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_32, 0, x_31);
+x_33 = lean_array_fset(x_19, x_14, x_32);
+lean_dec(x_14);
+lean_ctor_set(x_2, 0, x_33);
+return x_2;
+}
+else
+{
+lean_object* x_34; lean_object* x_35; 
+lean_dec(x_29);
+lean_dec(x_28);
+x_34 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_34, 0, x_5);
+lean_ctor_set(x_34, 1, x_6);
+x_35 = lean_array_fset(x_19, x_14, x_34);
+lean_dec(x_14);
+lean_ctor_set(x_2, 0, x_35);
+return x_2;
+}
+}
+}
+case 1:
+{
+uint8_t x_36; 
+lean_dec(x_9);
+x_36 = !lean_is_exclusive(x_17);
+if (x_36 == 0)
+{
+lean_object* x_37; size_t x_38; size_t x_39; lean_object* x_40; lean_object* x_41; 
+x_37 = lean_ctor_get(x_17, 0);
+x_38 = lean_usize_shift_right(x_3, x_11);
+x_39 = lean_usize_add(x_4, x_10);
+x_40 = l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5(x_1, x_37, x_38, x_39, x_5, x_6);
+lean_ctor_set(x_17, 0, x_40);
+x_41 = lean_array_fset(x_19, x_14, x_17);
+lean_dec(x_14);
+lean_ctor_set(x_2, 0, x_41);
+return x_2;
+}
+else
+{
+lean_object* x_42; size_t x_43; size_t x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; 
+x_42 = lean_ctor_get(x_17, 0);
+lean_inc(x_42);
+lean_dec(x_17);
+x_43 = lean_usize_shift_right(x_3, x_11);
+x_44 = lean_usize_add(x_4, x_10);
+x_45 = l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5(x_1, x_42, x_43, x_44, x_5, x_6);
+x_46 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_46, 0, x_45);
+x_47 = lean_array_fset(x_19, x_14, x_46);
+lean_dec(x_14);
+lean_ctor_set(x_2, 0, x_47);
+return x_2;
+}
+}
+default: 
+{
+lean_object* x_48; lean_object* x_49; 
+lean_dec(x_9);
+lean_dec(x_1);
+x_48 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_48, 0, x_5);
+lean_ctor_set(x_48, 1, x_6);
+x_49 = lean_array_fset(x_19, x_14, x_48);
+lean_dec(x_14);
+lean_ctor_set(x_2, 0, x_49);
+return x_2;
+}
+}
+}
+}
+else
+{
+lean_object* x_50; lean_object* x_51; size_t x_52; size_t x_53; size_t x_54; size_t x_55; lean_object* x_56; lean_object* x_57; uint8_t x_58; 
+x_50 = lean_ctor_get(x_2, 0);
+lean_inc(x_50);
+lean_dec(x_2);
+x_51 = lean_ctor_get(x_1, 1);
+lean_inc(x_51);
+x_52 = 1;
+x_53 = 5;
+x_54 = l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
+x_55 = lean_usize_land(x_3, x_54);
+x_56 = lean_usize_to_nat(x_55);
+x_57 = lean_array_get_size(x_50);
+x_58 = lean_nat_dec_lt(x_56, x_57);
+lean_dec(x_57);
+if (x_58 == 0)
+{
+lean_object* x_59; 
+lean_dec(x_56);
+lean_dec(x_51);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_1);
+x_59 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_59, 0, x_50);
+return x_59;
+}
+else
+{
+lean_object* x_60; lean_object* x_61; lean_object* x_62; 
+x_60 = lean_array_fget(x_50, x_56);
+x_61 = lean_box(0);
+x_62 = lean_array_fset(x_50, x_56, x_61);
+switch (lean_obj_tag(x_60)) {
+case 0:
+{
+lean_object* x_63; lean_object* x_64; lean_object* x_65; uint8_t x_66; 
+lean_dec(x_1);
+x_63 = lean_ctor_get(x_60, 0);
+lean_inc(x_63);
+x_64 = lean_ctor_get(x_60, 1);
+lean_inc(x_64);
+if (lean_is_exclusive(x_60)) {
+ lean_ctor_release(x_60, 0);
+ lean_ctor_release(x_60, 1);
+ x_65 = x_60;
+} else {
+ lean_dec_ref(x_60);
+ x_65 = lean_box(0);
+}
+lean_inc(x_63);
+lean_inc(x_5);
+x_66 = l_Lean_Meta_Grind_isCongruent(x_51, x_5, x_63);
+if (x_66 == 0)
+{
+lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; 
+lean_dec(x_65);
+x_67 = l_Lean_PersistentHashMap_mkCollisionNode___rarg(x_63, x_64, x_5, x_6);
+x_68 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_68, 0, x_67);
+x_69 = lean_array_fset(x_62, x_56, x_68);
+lean_dec(x_56);
+x_70 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_70, 0, x_69);
+return x_70;
+}
+else
+{
+lean_object* x_71; lean_object* x_72; lean_object* x_73; 
+lean_dec(x_64);
+lean_dec(x_63);
+if (lean_is_scalar(x_65)) {
+ x_71 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_71 = x_65;
+}
+lean_ctor_set(x_71, 0, x_5);
+lean_ctor_set(x_71, 1, x_6);
+x_72 = lean_array_fset(x_62, x_56, x_71);
+lean_dec(x_56);
+x_73 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_73, 0, x_72);
+return x_73;
+}
+}
+case 1:
+{
+lean_object* x_74; lean_object* x_75; size_t x_76; size_t x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; 
+lean_dec(x_51);
+x_74 = lean_ctor_get(x_60, 0);
+lean_inc(x_74);
+if (lean_is_exclusive(x_60)) {
+ lean_ctor_release(x_60, 0);
+ x_75 = x_60;
+} else {
+ lean_dec_ref(x_60);
+ x_75 = lean_box(0);
+}
+x_76 = lean_usize_shift_right(x_3, x_53);
+x_77 = lean_usize_add(x_4, x_52);
+x_78 = l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5(x_1, x_74, x_76, x_77, x_5, x_6);
+if (lean_is_scalar(x_75)) {
+ x_79 = lean_alloc_ctor(1, 1, 0);
+} else {
+ x_79 = x_75;
+}
+lean_ctor_set(x_79, 0, x_78);
+x_80 = lean_array_fset(x_62, x_56, x_79);
+lean_dec(x_56);
+x_81 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_81, 0, x_80);
+return x_81;
+}
+default: 
+{
+lean_object* x_82; lean_object* x_83; lean_object* x_84; 
+lean_dec(x_51);
+lean_dec(x_1);
+x_82 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_82, 0, x_5);
+lean_ctor_set(x_82, 1, x_6);
+x_83 = lean_array_fset(x_62, x_56, x_82);
+lean_dec(x_56);
+x_84 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_84, 0, x_83);
+return x_84;
+}
+}
+}
+}
+}
+else
+{
+uint8_t x_85; 
+x_85 = !lean_is_exclusive(x_2);
+if (x_85 == 0)
+{
+lean_object* x_86; lean_object* x_87; size_t x_88; uint8_t x_89; 
+x_86 = lean_unsigned_to_nat(0u);
+lean_inc(x_1);
+x_87 = l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Meta_Grind_addCongrTable___spec__7(x_1, x_2, x_86, x_5, x_6);
+x_88 = 7;
+x_89 = lean_usize_dec_le(x_88, x_4);
+if (x_89 == 0)
+{
+lean_object* x_90; lean_object* x_91; uint8_t x_92; 
+x_90 = l_Lean_PersistentHashMap_getCollisionNodeSize___rarg(x_87);
+x_91 = lean_unsigned_to_nat(4u);
+x_92 = lean_nat_dec_lt(x_90, x_91);
+lean_dec(x_90);
+if (x_92 == 0)
+{
+lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; 
+x_93 = lean_ctor_get(x_87, 0);
+lean_inc(x_93);
+x_94 = lean_ctor_get(x_87, 1);
+lean_inc(x_94);
+lean_dec(x_87);
+x_95 = l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5___closed__1;
+x_96 = l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Meta_Grind_addCongrTable___spec__6(x_1, x_4, x_93, x_94, lean_box(0), x_86, x_95);
+lean_dec(x_94);
+lean_dec(x_93);
+return x_96;
+}
+else
+{
+lean_dec(x_1);
+return x_87;
+}
+}
+else
+{
+lean_dec(x_1);
+return x_87;
+}
+}
+else
+{
+lean_object* x_97; lean_object* x_98; lean_object* x_99; lean_object* x_100; lean_object* x_101; size_t x_102; uint8_t x_103; 
+x_97 = lean_ctor_get(x_2, 0);
+x_98 = lean_ctor_get(x_2, 1);
+lean_inc(x_98);
+lean_inc(x_97);
+lean_dec(x_2);
+x_99 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_99, 0, x_97);
+lean_ctor_set(x_99, 1, x_98);
+x_100 = lean_unsigned_to_nat(0u);
+lean_inc(x_1);
+x_101 = l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Meta_Grind_addCongrTable___spec__7(x_1, x_99, x_100, x_5, x_6);
+x_102 = 7;
+x_103 = lean_usize_dec_le(x_102, x_4);
+if (x_103 == 0)
+{
+lean_object* x_104; lean_object* x_105; uint8_t x_106; 
+x_104 = l_Lean_PersistentHashMap_getCollisionNodeSize___rarg(x_101);
+x_105 = lean_unsigned_to_nat(4u);
+x_106 = lean_nat_dec_lt(x_104, x_105);
+lean_dec(x_104);
+if (x_106 == 0)
+{
+lean_object* x_107; lean_object* x_108; lean_object* x_109; lean_object* x_110; 
+x_107 = lean_ctor_get(x_101, 0);
+lean_inc(x_107);
+x_108 = lean_ctor_get(x_101, 1);
+lean_inc(x_108);
+lean_dec(x_101);
+x_109 = l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5___closed__1;
+x_110 = l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Meta_Grind_addCongrTable___spec__6(x_1, x_4, x_107, x_108, lean_box(0), x_100, x_109);
+lean_dec(x_108);
+lean_dec(x_107);
+return x_110;
+}
+else
+{
+lean_dec(x_1);
+return x_101;
+}
+}
+else
+{
+lean_dec(x_1);
+return x_101;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_addCongrTable___spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+_start:
+{
+lean_object* x_5; uint64_t x_6; size_t x_7; size_t x_8; lean_object* x_9; 
+x_5 = lean_ctor_get(x_1, 1);
+lean_inc(x_5);
+x_6 = l_Lean_Meta_Grind_congrHash(x_5, x_3);
+x_7 = lean_uint64_to_usize(x_6);
+x_8 = 1;
+x_9 = l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5(x_1, x_2, x_7, x_8, x_3, x_4);
+return x_9;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(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:
+{
+lean_object* x_11; lean_object* x_12; uint8_t x_13; 
+x_11 = lean_ctor_get(x_8, 2);
+x_12 = l_Lean_isTracingEnabledForCore(x_1, x_11, x_10);
+x_13 = !lean_is_exclusive(x_12);
+if (x_13 == 0)
+{
+return x_12;
+}
+else
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_14 = lean_ctor_get(x_12, 0);
+x_15 = lean_ctor_get(x_12, 1);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_dec(x_12);
+x_16 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_16, 0, x_14);
+lean_ctor_set(x_16, 1, x_15);
+return x_16;
+}
+}
+}
+static double _init_l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__1() {
+_start:
+{
+lean_object* x_1; uint8_t x_2; double x_3; 
+x_1 = lean_unsigned_to_nat(0u);
+x_2 = 0;
+x_3 = l_Float_ofScientific(x_1, x_2, x_1);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("", 0, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = lean_box(0);
+x_2 = lean_array_mk(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; 
+x_12 = lean_ctor_get(x_9, 5);
+x_13 = l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(x_2, x_7, x_8, x_9, x_10, x_11);
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_ctor_get(x_13, 1);
+lean_inc(x_15);
+lean_dec(x_13);
+x_16 = lean_st_ref_take(x_10, x_15);
+x_17 = lean_ctor_get(x_16, 0);
+lean_inc(x_17);
+x_18 = lean_ctor_get(x_17, 3);
+lean_inc(x_18);
+x_19 = !lean_is_exclusive(x_16);
+if (x_19 == 0)
+{
+lean_object* x_20; lean_object* x_21; uint8_t x_22; 
+x_20 = lean_ctor_get(x_16, 1);
+x_21 = lean_ctor_get(x_16, 0);
+lean_dec(x_21);
+x_22 = !lean_is_exclusive(x_17);
+if (x_22 == 0)
+{
+lean_object* x_23; uint8_t x_24; 
+x_23 = lean_ctor_get(x_17, 3);
+lean_dec(x_23);
+x_24 = !lean_is_exclusive(x_18);
+if (x_24 == 0)
+{
+lean_object* x_25; double x_26; uint8_t x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; uint8_t x_34; 
+x_25 = lean_ctor_get(x_18, 0);
+x_26 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__1;
+x_27 = 0;
+x_28 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__2;
+x_29 = lean_alloc_ctor(0, 2, 17);
+lean_ctor_set(x_29, 0, x_1);
+lean_ctor_set(x_29, 1, x_28);
+lean_ctor_set_float(x_29, sizeof(void*)*2, x_26);
+lean_ctor_set_float(x_29, sizeof(void*)*2 + 8, x_26);
+lean_ctor_set_uint8(x_29, sizeof(void*)*2 + 16, x_27);
+x_30 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__3;
+x_31 = lean_alloc_ctor(9, 3, 0);
+lean_ctor_set(x_31, 0, x_29);
+lean_ctor_set(x_31, 1, x_14);
+lean_ctor_set(x_31, 2, x_30);
+lean_inc(x_12);
+lean_ctor_set(x_16, 1, x_31);
+lean_ctor_set(x_16, 0, x_12);
+x_32 = l_Lean_PersistentArray_push___rarg(x_25, x_16);
+lean_ctor_set(x_18, 0, x_32);
+x_33 = lean_st_ref_set(x_10, x_17, x_20);
+x_34 = !lean_is_exclusive(x_33);
+if (x_34 == 0)
+{
+lean_object* x_35; lean_object* x_36; 
+x_35 = lean_ctor_get(x_33, 0);
+lean_dec(x_35);
+x_36 = lean_box(0);
+lean_ctor_set(x_33, 0, x_36);
+return x_33;
+}
+else
+{
+lean_object* x_37; lean_object* x_38; lean_object* x_39; 
+x_37 = lean_ctor_get(x_33, 1);
+lean_inc(x_37);
+lean_dec(x_33);
+x_38 = lean_box(0);
+x_39 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_39, 0, x_38);
+lean_ctor_set(x_39, 1, x_37);
+return x_39;
+}
+}
+else
+{
+uint64_t x_40; lean_object* x_41; double x_42; uint8_t x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_40 = lean_ctor_get_uint64(x_18, sizeof(void*)*1);
+x_41 = lean_ctor_get(x_18, 0);
+lean_inc(x_41);
+lean_dec(x_18);
+x_42 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__1;
+x_43 = 0;
+x_44 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__2;
+x_45 = lean_alloc_ctor(0, 2, 17);
+lean_ctor_set(x_45, 0, x_1);
+lean_ctor_set(x_45, 1, x_44);
+lean_ctor_set_float(x_45, sizeof(void*)*2, x_42);
+lean_ctor_set_float(x_45, sizeof(void*)*2 + 8, x_42);
+lean_ctor_set_uint8(x_45, sizeof(void*)*2 + 16, x_43);
+x_46 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__3;
+x_47 = lean_alloc_ctor(9, 3, 0);
+lean_ctor_set(x_47, 0, x_45);
+lean_ctor_set(x_47, 1, x_14);
+lean_ctor_set(x_47, 2, x_46);
+lean_inc(x_12);
+lean_ctor_set(x_16, 1, x_47);
+lean_ctor_set(x_16, 0, x_12);
+x_48 = l_Lean_PersistentArray_push___rarg(x_41, x_16);
+x_49 = lean_alloc_ctor(0, 1, 8);
+lean_ctor_set(x_49, 0, x_48);
+lean_ctor_set_uint64(x_49, sizeof(void*)*1, x_40);
+lean_ctor_set(x_17, 3, x_49);
+x_50 = lean_st_ref_set(x_10, x_17, x_20);
+x_51 = lean_ctor_get(x_50, 1);
+lean_inc(x_51);
+if (lean_is_exclusive(x_50)) {
+ lean_ctor_release(x_50, 0);
+ lean_ctor_release(x_50, 1);
+ x_52 = x_50;
+} else {
+ lean_dec_ref(x_50);
+ x_52 = lean_box(0);
+}
+x_53 = lean_box(0);
+if (lean_is_scalar(x_52)) {
+ x_54 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_54 = x_52;
+}
+lean_ctor_set(x_54, 0, x_53);
+lean_ctor_set(x_54, 1, x_51);
+return x_54;
+}
+}
+else
+{
+lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; uint64_t x_62; lean_object* x_63; lean_object* x_64; double x_65; uint8_t x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; 
+x_55 = lean_ctor_get(x_17, 0);
+x_56 = lean_ctor_get(x_17, 1);
+x_57 = lean_ctor_get(x_17, 2);
+x_58 = lean_ctor_get(x_17, 4);
+x_59 = lean_ctor_get(x_17, 5);
+x_60 = lean_ctor_get(x_17, 6);
+x_61 = lean_ctor_get(x_17, 7);
+lean_inc(x_61);
+lean_inc(x_60);
+lean_inc(x_59);
+lean_inc(x_58);
+lean_inc(x_57);
+lean_inc(x_56);
+lean_inc(x_55);
+lean_dec(x_17);
+x_62 = lean_ctor_get_uint64(x_18, sizeof(void*)*1);
+x_63 = lean_ctor_get(x_18, 0);
+lean_inc(x_63);
+if (lean_is_exclusive(x_18)) {
+ lean_ctor_release(x_18, 0);
+ x_64 = x_18;
+} else {
+ lean_dec_ref(x_18);
+ x_64 = lean_box(0);
+}
+x_65 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__1;
+x_66 = 0;
+x_67 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__2;
+x_68 = lean_alloc_ctor(0, 2, 17);
+lean_ctor_set(x_68, 0, x_1);
+lean_ctor_set(x_68, 1, x_67);
+lean_ctor_set_float(x_68, sizeof(void*)*2, x_65);
+lean_ctor_set_float(x_68, sizeof(void*)*2 + 8, x_65);
+lean_ctor_set_uint8(x_68, sizeof(void*)*2 + 16, x_66);
+x_69 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__3;
+x_70 = lean_alloc_ctor(9, 3, 0);
+lean_ctor_set(x_70, 0, x_68);
+lean_ctor_set(x_70, 1, x_14);
+lean_ctor_set(x_70, 2, x_69);
+lean_inc(x_12);
+lean_ctor_set(x_16, 1, x_70);
+lean_ctor_set(x_16, 0, x_12);
+x_71 = l_Lean_PersistentArray_push___rarg(x_63, x_16);
+if (lean_is_scalar(x_64)) {
+ x_72 = lean_alloc_ctor(0, 1, 8);
+} else {
+ x_72 = x_64;
+}
+lean_ctor_set(x_72, 0, x_71);
+lean_ctor_set_uint64(x_72, sizeof(void*)*1, x_62);
+x_73 = lean_alloc_ctor(0, 8, 0);
+lean_ctor_set(x_73, 0, x_55);
+lean_ctor_set(x_73, 1, x_56);
+lean_ctor_set(x_73, 2, x_57);
+lean_ctor_set(x_73, 3, x_72);
+lean_ctor_set(x_73, 4, x_58);
+lean_ctor_set(x_73, 5, x_59);
+lean_ctor_set(x_73, 6, x_60);
+lean_ctor_set(x_73, 7, x_61);
+x_74 = lean_st_ref_set(x_10, x_73, x_20);
+x_75 = lean_ctor_get(x_74, 1);
+lean_inc(x_75);
+if (lean_is_exclusive(x_74)) {
+ lean_ctor_release(x_74, 0);
+ lean_ctor_release(x_74, 1);
+ x_76 = x_74;
+} else {
+ lean_dec_ref(x_74);
+ x_76 = lean_box(0);
+}
+x_77 = lean_box(0);
+if (lean_is_scalar(x_76)) {
+ x_78 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_78 = x_76;
+}
+lean_ctor_set(x_78, 0, x_77);
+lean_ctor_set(x_78, 1, x_75);
+return x_78;
+}
+}
+else
+{
+lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; uint64_t x_88; lean_object* x_89; lean_object* x_90; double x_91; uint8_t x_92; lean_object* x_93; lean_object* x_94; 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_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; 
+x_79 = lean_ctor_get(x_16, 1);
+lean_inc(x_79);
+lean_dec(x_16);
+x_80 = lean_ctor_get(x_17, 0);
+lean_inc(x_80);
+x_81 = lean_ctor_get(x_17, 1);
+lean_inc(x_81);
+x_82 = lean_ctor_get(x_17, 2);
+lean_inc(x_82);
+x_83 = lean_ctor_get(x_17, 4);
+lean_inc(x_83);
+x_84 = lean_ctor_get(x_17, 5);
+lean_inc(x_84);
+x_85 = lean_ctor_get(x_17, 6);
+lean_inc(x_85);
+x_86 = lean_ctor_get(x_17, 7);
+lean_inc(x_86);
+if (lean_is_exclusive(x_17)) {
+ lean_ctor_release(x_17, 0);
+ lean_ctor_release(x_17, 1);
+ lean_ctor_release(x_17, 2);
+ lean_ctor_release(x_17, 3);
+ lean_ctor_release(x_17, 4);
+ lean_ctor_release(x_17, 5);
+ lean_ctor_release(x_17, 6);
+ lean_ctor_release(x_17, 7);
+ x_87 = x_17;
+} else {
+ lean_dec_ref(x_17);
+ x_87 = lean_box(0);
+}
+x_88 = lean_ctor_get_uint64(x_18, sizeof(void*)*1);
+x_89 = lean_ctor_get(x_18, 0);
+lean_inc(x_89);
+if (lean_is_exclusive(x_18)) {
+ lean_ctor_release(x_18, 0);
+ x_90 = x_18;
+} else {
+ lean_dec_ref(x_18);
+ x_90 = lean_box(0);
+}
+x_91 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__1;
+x_92 = 0;
+x_93 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__2;
+x_94 = lean_alloc_ctor(0, 2, 17);
+lean_ctor_set(x_94, 0, x_1);
+lean_ctor_set(x_94, 1, x_93);
+lean_ctor_set_float(x_94, sizeof(void*)*2, x_91);
+lean_ctor_set_float(x_94, sizeof(void*)*2 + 8, x_91);
+lean_ctor_set_uint8(x_94, sizeof(void*)*2 + 16, x_92);
+x_95 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__3;
+x_96 = lean_alloc_ctor(9, 3, 0);
+lean_ctor_set(x_96, 0, x_94);
+lean_ctor_set(x_96, 1, x_14);
+lean_ctor_set(x_96, 2, x_95);
+lean_inc(x_12);
+x_97 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_97, 0, x_12);
+lean_ctor_set(x_97, 1, x_96);
+x_98 = l_Lean_PersistentArray_push___rarg(x_89, x_97);
+if (lean_is_scalar(x_90)) {
+ x_99 = lean_alloc_ctor(0, 1, 8);
+} else {
+ x_99 = x_90;
+}
+lean_ctor_set(x_99, 0, x_98);
+lean_ctor_set_uint64(x_99, sizeof(void*)*1, x_88);
+if (lean_is_scalar(x_87)) {
+ x_100 = lean_alloc_ctor(0, 8, 0);
+} else {
+ x_100 = x_87;
+}
+lean_ctor_set(x_100, 0, x_80);
+lean_ctor_set(x_100, 1, x_81);
+lean_ctor_set(x_100, 2, x_82);
+lean_ctor_set(x_100, 3, x_99);
+lean_ctor_set(x_100, 4, x_83);
+lean_ctor_set(x_100, 5, x_84);
+lean_ctor_set(x_100, 6, x_85);
+lean_ctor_set(x_100, 7, x_86);
+x_101 = lean_st_ref_set(x_10, x_100, x_79);
+x_102 = lean_ctor_get(x_101, 1);
+lean_inc(x_102);
+if (lean_is_exclusive(x_101)) {
+ lean_ctor_release(x_101, 0);
+ lean_ctor_release(x_101, 1);
+ x_103 = x_101;
+} else {
+ lean_dec_ref(x_101);
+ x_103 = lean_box(0);
+}
+x_104 = lean_box(0);
+if (lean_is_scalar(x_103)) {
+ x_105 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_105 = x_103;
+}
+lean_ctor_set(x_105, 0, x_104);
+lean_ctor_set(x_105, 1, x_102);
+return x_105;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addCongrTable___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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; lean_object* x_41; 
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_2);
+lean_inc(x_1);
+x_41 = l_Lean_Meta_Grind_hasSameType(x_1, x_2, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_41) == 0)
+{
+lean_object* x_42; uint8_t x_43; 
+x_42 = lean_ctor_get(x_41, 0);
+lean_inc(x_42);
+x_43 = lean_unbox(x_42);
+lean_dec(x_42);
+if (x_43 == 0)
+{
+lean_object* x_44; lean_object* x_45; uint8_t x_46; lean_object* x_47; lean_object* x_48; 
+x_44 = lean_ctor_get(x_41, 1);
+lean_inc(x_44);
+lean_dec(x_41);
+x_45 = l_Lean_Meta_Grind_congrPlaceholderProof;
+x_46 = 1;
+lean_inc(x_2);
+lean_inc(x_1);
+x_47 = l_Lean_Meta_Grind_pushEqCore(x_1, x_2, x_45, x_46, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_44);
+x_48 = lean_ctor_get(x_47, 1);
+lean_inc(x_48);
+lean_dec(x_47);
+x_13 = x_48;
+goto block_40;
+}
+else
+{
+lean_object* x_49; lean_object* x_50; uint8_t x_51; lean_object* x_52; lean_object* x_53; 
+x_49 = lean_ctor_get(x_41, 1);
+lean_inc(x_49);
+lean_dec(x_41);
+x_50 = l_Lean_Meta_Grind_congrPlaceholderProof;
+x_51 = 0;
+lean_inc(x_2);
+lean_inc(x_1);
+x_52 = l_Lean_Meta_Grind_pushEqCore(x_1, x_2, x_50, x_51, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_49);
+x_53 = lean_ctor_get(x_52, 1);
+lean_inc(x_53);
+lean_dec(x_52);
+x_13 = x_53;
+goto block_40;
+}
+}
+else
+{
+uint8_t x_54; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_2);
+lean_dec(x_1);
+x_54 = !lean_is_exclusive(x_41);
+if (x_54 == 0)
+{
+return x_41;
+}
+else
+{
+lean_object* x_55; lean_object* x_56; lean_object* x_57; 
+x_55 = lean_ctor_get(x_41, 0);
+x_56 = lean_ctor_get(x_41, 1);
+lean_inc(x_56);
+lean_inc(x_55);
+lean_dec(x_41);
+x_57 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_57, 0, x_55);
+lean_ctor_set(x_57, 1, x_56);
+return x_57;
+}
+}
+block_40:
+{
+lean_object* x_14; 
+lean_inc(x_1);
+x_14 = l_Lean_Meta_Grind_getENode(x_1, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_13);
+if (lean_obj_tag(x_14) == 0)
+{
+lean_object* x_15; lean_object* x_16; uint8_t x_17; 
+x_15 = lean_ctor_get(x_14, 0);
+lean_inc(x_15);
+x_16 = lean_ctor_get(x_14, 1);
+lean_inc(x_16);
+lean_dec(x_14);
+x_17 = !lean_is_exclusive(x_15);
+if (x_17 == 0)
+{
+lean_object* x_18; lean_object* x_19; 
+x_18 = lean_ctor_get(x_15, 3);
+lean_dec(x_18);
+lean_ctor_set(x_15, 3, x_2);
+x_19 = l_Lean_Meta_Grind_setENode(x_1, x_15, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_16);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_1);
+return x_19;
+}
+else
+{
+lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; uint8_t x_25; lean_object* x_26; uint8_t x_27; uint8_t x_28; uint8_t x_29; uint8_t x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_20 = lean_ctor_get(x_15, 0);
+x_21 = lean_ctor_get(x_15, 1);
+x_22 = lean_ctor_get(x_15, 2);
+x_23 = lean_ctor_get(x_15, 4);
+x_24 = lean_ctor_get(x_15, 5);
+x_25 = lean_ctor_get_uint8(x_15, sizeof(void*)*10);
+x_26 = lean_ctor_get(x_15, 6);
+x_27 = lean_ctor_get_uint8(x_15, sizeof(void*)*10 + 1);
+x_28 = lean_ctor_get_uint8(x_15, sizeof(void*)*10 + 2);
+x_29 = lean_ctor_get_uint8(x_15, sizeof(void*)*10 + 3);
+x_30 = lean_ctor_get_uint8(x_15, sizeof(void*)*10 + 4);
+x_31 = lean_ctor_get(x_15, 7);
+x_32 = lean_ctor_get(x_15, 8);
+x_33 = lean_ctor_get(x_15, 9);
+lean_inc(x_33);
+lean_inc(x_32);
+lean_inc(x_31);
+lean_inc(x_26);
+lean_inc(x_24);
+lean_inc(x_23);
+lean_inc(x_22);
+lean_inc(x_21);
+lean_inc(x_20);
+lean_dec(x_15);
+x_34 = lean_alloc_ctor(0, 10, 5);
+lean_ctor_set(x_34, 0, x_20);
+lean_ctor_set(x_34, 1, x_21);
+lean_ctor_set(x_34, 2, x_22);
+lean_ctor_set(x_34, 3, x_2);
+lean_ctor_set(x_34, 4, x_23);
+lean_ctor_set(x_34, 5, x_24);
+lean_ctor_set(x_34, 6, x_26);
+lean_ctor_set(x_34, 7, x_31);
+lean_ctor_set(x_34, 8, x_32);
+lean_ctor_set(x_34, 9, x_33);
+lean_ctor_set_uint8(x_34, sizeof(void*)*10, x_25);
+lean_ctor_set_uint8(x_34, sizeof(void*)*10 + 1, x_27);
+lean_ctor_set_uint8(x_34, sizeof(void*)*10 + 2, x_28);
+lean_ctor_set_uint8(x_34, sizeof(void*)*10 + 3, x_29);
+lean_ctor_set_uint8(x_34, sizeof(void*)*10 + 4, x_30);
+x_35 = l_Lean_Meta_Grind_setENode(x_1, x_34, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_16);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_1);
+return x_35;
+}
+}
+else
+{
+uint8_t x_36; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_2);
+lean_dec(x_1);
+x_36 = !lean_is_exclusive(x_14);
+if (x_36 == 0)
+{
+return x_14;
+}
+else
+{
+lean_object* x_37; lean_object* x_38; lean_object* x_39; 
+x_37 = lean_ctor_get(x_14, 0);
+x_38 = lean_ctor_get(x_14, 1);
+lean_inc(x_38);
+lean_inc(x_37);
+lean_dec(x_14);
+x_39 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_39, 0, x_37);
+lean_ctor_set(x_39, 1, x_38);
+return x_39;
+}
+}
+}
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("grind", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("congr", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__1;
+x_2 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__2;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__2;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__5() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked(" = ", 3, 3);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__6() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__5;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addCongrTable___lambda__2(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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; 
+x_13 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__3;
+x_14 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+x_15 = lean_ctor_get(x_14, 0);
+lean_inc(x_15);
+x_16 = lean_unbox(x_15);
+lean_dec(x_15);
+if (x_16 == 0)
+{
+lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_17 = lean_ctor_get(x_14, 1);
+lean_inc(x_17);
+lean_dec(x_14);
+x_18 = lean_box(0);
+x_19 = l_Lean_Meta_Grind_addCongrTable___lambda__1(x_1, x_2, x_18, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_17);
+return x_19;
+}
+else
+{
+uint8_t x_20; 
+x_20 = !lean_is_exclusive(x_14);
+if (x_20 == 0)
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_21 = lean_ctor_get(x_14, 1);
+x_22 = lean_ctor_get(x_14, 0);
+lean_dec(x_22);
+lean_inc(x_1);
+x_23 = l_Lean_MessageData_ofExpr(x_1);
+x_24 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__4;
+lean_ctor_set_tag(x_14, 7);
+lean_ctor_set(x_14, 1, x_23);
+lean_ctor_set(x_14, 0, x_24);
+x_25 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__6;
+x_26 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_26, 0, x_14);
+lean_ctor_set(x_26, 1, x_25);
+lean_inc(x_2);
+x_27 = l_Lean_MessageData_ofExpr(x_2);
+x_28 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_28, 0, x_26);
+lean_ctor_set(x_28, 1, x_27);
+x_29 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_29, 0, x_28);
+lean_ctor_set(x_29, 1, x_24);
+x_30 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_13, x_29, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_21);
+x_31 = lean_ctor_get(x_30, 0);
+lean_inc(x_31);
+x_32 = lean_ctor_get(x_30, 1);
+lean_inc(x_32);
+lean_dec(x_30);
+x_33 = l_Lean_Meta_Grind_addCongrTable___lambda__1(x_1, x_2, x_31, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_32);
+lean_dec(x_31);
+return x_33;
+}
+else
+{
+lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; 
+x_34 = lean_ctor_get(x_14, 1);
+lean_inc(x_34);
+lean_dec(x_14);
+lean_inc(x_1);
+x_35 = l_Lean_MessageData_ofExpr(x_1);
+x_36 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__4;
+x_37 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_37, 0, x_36);
+lean_ctor_set(x_37, 1, x_35);
+x_38 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__6;
+x_39 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_39, 0, x_37);
+lean_ctor_set(x_39, 1, x_38);
+lean_inc(x_2);
+x_40 = l_Lean_MessageData_ofExpr(x_2);
+x_41 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_41, 0, x_39);
+lean_ctor_set(x_41, 1, x_40);
+x_42 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_42, 0, x_41);
+lean_ctor_set(x_42, 1, x_36);
+x_43 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_13, x_42, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_34);
+x_44 = lean_ctor_get(x_43, 0);
+lean_inc(x_44);
+x_45 = lean_ctor_get(x_43, 1);
+lean_inc(x_45);
+lean_dec(x_43);
+x_46 = l_Lean_Meta_Grind_addCongrTable___lambda__1(x_1, x_2, x_44, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_45);
+lean_dec(x_44);
+return x_46;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addCongrTable___lambda__3(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:
+{
+lean_object* x_11; lean_object* x_12; 
+x_11 = lean_box(0);
+x_12 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_12, 0, x_11);
+lean_ctor_set(x_12, 1, x_10);
+return x_12;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("issues", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__1;
+x_2 = l_Lean_Meta_Grind_addCongrTable___closed__1;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_addCongrTable___lambda__3___boxed), 10, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("found congruence between", 24, 24);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_Grind_addCongrTable___closed__4;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___closed__6() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("\nand", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___closed__7() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_Grind_addCongrTable___closed__6;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___closed__8() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("\nbut functions have different types", 35, 35);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_addCongrTable___closed__9() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_Grind_addCongrTable___closed__8;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addCongrTable(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:
+{
+lean_object* x_11; uint8_t x_12; 
+x_11 = lean_st_ref_get(x_2, x_10);
+x_12 = !lean_is_exclusive(x_11);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_13 = lean_ctor_get(x_11, 0);
+x_14 = lean_ctor_get(x_11, 1);
+x_15 = lean_ctor_get(x_13, 3);
+lean_inc(x_15);
+lean_inc(x_1);
+x_16 = l_Lean_PersistentHashMap_findEntry_x3f___at_Lean_Meta_Grind_addCongrTable___spec__1(x_13, x_15, x_1);
+if (lean_obj_tag(x_16) == 0)
+{
+lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; uint8_t x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; uint8_t x_31; 
+lean_free_object(x_11);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_17 = lean_st_ref_take(x_2, x_14);
+x_18 = lean_ctor_get(x_17, 0);
+lean_inc(x_18);
+x_19 = lean_ctor_get(x_17, 1);
+lean_inc(x_19);
+lean_dec(x_17);
+x_20 = lean_ctor_get(x_18, 0);
+lean_inc(x_20);
+x_21 = lean_ctor_get(x_18, 1);
+lean_inc(x_21);
+x_22 = lean_ctor_get(x_18, 2);
+lean_inc(x_22);
+x_23 = lean_ctor_get(x_18, 3);
+lean_inc(x_23);
+x_24 = lean_ctor_get(x_18, 4);
+lean_inc(x_24);
+x_25 = lean_ctor_get(x_18, 5);
+lean_inc(x_25);
+x_26 = lean_ctor_get_uint8(x_18, sizeof(void*)*8);
+x_27 = lean_ctor_get(x_18, 6);
+lean_inc(x_27);
+x_28 = lean_ctor_get(x_18, 7);
+lean_inc(x_28);
+x_29 = lean_box(0);
+lean_inc(x_18);
+x_30 = l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_addCongrTable___spec__4(x_18, x_23, x_1, x_29);
+x_31 = !lean_is_exclusive(x_18);
+if (x_31 == 0)
+{
+lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; uint8_t x_41; 
+x_32 = lean_ctor_get(x_18, 7);
+lean_dec(x_32);
+x_33 = lean_ctor_get(x_18, 6);
+lean_dec(x_33);
+x_34 = lean_ctor_get(x_18, 5);
+lean_dec(x_34);
+x_35 = lean_ctor_get(x_18, 4);
+lean_dec(x_35);
+x_36 = lean_ctor_get(x_18, 3);
+lean_dec(x_36);
+x_37 = lean_ctor_get(x_18, 2);
+lean_dec(x_37);
+x_38 = lean_ctor_get(x_18, 1);
+lean_dec(x_38);
+x_39 = lean_ctor_get(x_18, 0);
+lean_dec(x_39);
+lean_ctor_set(x_18, 3, x_30);
+x_40 = lean_st_ref_set(x_2, x_18, x_19);
+lean_dec(x_2);
+x_41 = !lean_is_exclusive(x_40);
+if (x_41 == 0)
+{
+lean_object* x_42; 
+x_42 = lean_ctor_get(x_40, 0);
+lean_dec(x_42);
+lean_ctor_set(x_40, 0, x_29);
+return x_40;
+}
+else
+{
+lean_object* x_43; lean_object* x_44; 
+x_43 = lean_ctor_get(x_40, 1);
+lean_inc(x_43);
+lean_dec(x_40);
+x_44 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_44, 0, x_29);
+lean_ctor_set(x_44, 1, x_43);
+return x_44;
+}
+}
+else
+{
+lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; 
+lean_dec(x_18);
+x_45 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_45, 0, x_20);
+lean_ctor_set(x_45, 1, x_21);
+lean_ctor_set(x_45, 2, x_22);
+lean_ctor_set(x_45, 3, x_30);
+lean_ctor_set(x_45, 4, x_24);
+lean_ctor_set(x_45, 5, x_25);
+lean_ctor_set(x_45, 6, x_27);
+lean_ctor_set(x_45, 7, x_28);
+lean_ctor_set_uint8(x_45, sizeof(void*)*8, x_26);
+x_46 = lean_st_ref_set(x_2, x_45, x_19);
+lean_dec(x_2);
+x_47 = lean_ctor_get(x_46, 1);
+lean_inc(x_47);
+if (lean_is_exclusive(x_46)) {
+ lean_ctor_release(x_46, 0);
+ lean_ctor_release(x_46, 1);
+ x_48 = x_46;
+} else {
+ lean_dec_ref(x_46);
+ x_48 = lean_box(0);
+}
+if (lean_is_scalar(x_48)) {
+ x_49 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_49 = x_48;
+}
+lean_ctor_set(x_49, 0, x_29);
+lean_ctor_set(x_49, 1, x_47);
+return x_49;
+}
+}
+else
+{
+lean_object* x_50; uint8_t x_51; 
+x_50 = lean_ctor_get(x_16, 0);
+lean_inc(x_50);
+lean_dec(x_16);
+x_51 = !lean_is_exclusive(x_50);
+if (x_51 == 0)
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; uint8_t x_56; 
+x_52 = lean_ctor_get(x_50, 0);
+x_53 = lean_ctor_get(x_50, 1);
+lean_dec(x_53);
+x_54 = l_Lean_Expr_getAppFn(x_1);
+x_55 = l_Lean_Expr_getAppFn(x_52);
+x_56 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_54, x_55);
+if (x_56 == 0)
+{
+lean_object* x_57; 
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+x_57 = l_Lean_Meta_Grind_hasSameType(x_54, x_55, x_6, x_7, x_8, x_9, x_14);
+if (lean_obj_tag(x_57) == 0)
+{
+lean_object* x_58; uint8_t x_59; 
+x_58 = lean_ctor_get(x_57, 0);
+lean_inc(x_58);
+x_59 = lean_unbox(x_58);
+lean_dec(x_58);
+if (x_59 == 0)
+{
+lean_object* x_60; lean_object* x_61; lean_object* x_62; uint8_t x_63; 
+x_60 = lean_ctor_get(x_57, 1);
+lean_inc(x_60);
+lean_dec(x_57);
+x_61 = l_Lean_Meta_Grind_addCongrTable___closed__2;
+x_62 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_61, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_60);
+x_63 = !lean_is_exclusive(x_62);
+if (x_63 == 0)
+{
+lean_object* x_64; lean_object* x_65; lean_object* x_66; uint8_t x_67; 
+x_64 = lean_ctor_get(x_62, 0);
+x_65 = lean_ctor_get(x_62, 1);
+x_66 = l_Lean_Meta_Grind_addCongrTable___closed__3;
+x_67 = lean_unbox(x_64);
+lean_dec(x_64);
+if (x_67 == 0)
+{
+lean_object* x_68; lean_object* x_69; 
+lean_free_object(x_62);
+lean_free_object(x_50);
+lean_dec(x_52);
+lean_free_object(x_11);
+lean_dec(x_1);
+x_68 = lean_box(0);
+x_69 = lean_apply_10(x_66, x_68, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_65);
+return x_69;
+}
+else
+{
+lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; 
+x_70 = l_Lean_indentExpr(x_1);
+x_71 = l_Lean_Meta_Grind_addCongrTable___closed__5;
+lean_ctor_set_tag(x_62, 7);
+lean_ctor_set(x_62, 1, x_70);
+lean_ctor_set(x_62, 0, x_71);
+x_72 = l_Lean_Meta_Grind_addCongrTable___closed__7;
+lean_ctor_set_tag(x_50, 7);
+lean_ctor_set(x_50, 1, x_72);
+lean_ctor_set(x_50, 0, x_62);
+x_73 = l_Lean_indentExpr(x_52);
+lean_ctor_set_tag(x_11, 7);
+lean_ctor_set(x_11, 1, x_73);
+lean_ctor_set(x_11, 0, x_50);
+x_74 = l_Lean_Meta_Grind_addCongrTable___closed__9;
+x_75 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_75, 0, x_11);
+lean_ctor_set(x_75, 1, x_74);
+x_76 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_61, x_75, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_65);
+x_77 = lean_ctor_get(x_76, 0);
+lean_inc(x_77);
+x_78 = lean_ctor_get(x_76, 1);
+lean_inc(x_78);
+lean_dec(x_76);
+x_79 = lean_apply_10(x_66, x_77, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_78);
+return x_79;
+}
+}
+else
+{
+lean_object* x_80; lean_object* x_81; lean_object* x_82; uint8_t x_83; 
+x_80 = lean_ctor_get(x_62, 0);
+x_81 = lean_ctor_get(x_62, 1);
+lean_inc(x_81);
+lean_inc(x_80);
+lean_dec(x_62);
+x_82 = l_Lean_Meta_Grind_addCongrTable___closed__3;
+x_83 = lean_unbox(x_80);
+lean_dec(x_80);
+if (x_83 == 0)
+{
+lean_object* x_84; lean_object* x_85; 
+lean_free_object(x_50);
+lean_dec(x_52);
+lean_free_object(x_11);
+lean_dec(x_1);
+x_84 = lean_box(0);
+x_85 = lean_apply_10(x_82, x_84, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_81);
+return x_85;
+}
+else
+{
+lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; 
+x_86 = l_Lean_indentExpr(x_1);
+x_87 = l_Lean_Meta_Grind_addCongrTable___closed__5;
+x_88 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_88, 0, x_87);
+lean_ctor_set(x_88, 1, x_86);
+x_89 = l_Lean_Meta_Grind_addCongrTable___closed__7;
+lean_ctor_set_tag(x_50, 7);
+lean_ctor_set(x_50, 1, x_89);
+lean_ctor_set(x_50, 0, x_88);
+x_90 = l_Lean_indentExpr(x_52);
+lean_ctor_set_tag(x_11, 7);
+lean_ctor_set(x_11, 1, x_90);
+lean_ctor_set(x_11, 0, x_50);
+x_91 = l_Lean_Meta_Grind_addCongrTable___closed__9;
+x_92 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_92, 0, x_11);
+lean_ctor_set(x_92, 1, x_91);
+x_93 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_61, x_92, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_81);
+x_94 = lean_ctor_get(x_93, 0);
+lean_inc(x_94);
+x_95 = lean_ctor_get(x_93, 1);
+lean_inc(x_95);
+lean_dec(x_93);
+x_96 = lean_apply_10(x_82, x_94, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_95);
+return x_96;
+}
+}
+}
+else
+{
+lean_object* x_97; lean_object* x_98; lean_object* x_99; 
+lean_free_object(x_50);
+lean_free_object(x_11);
+x_97 = lean_ctor_get(x_57, 1);
+lean_inc(x_97);
+lean_dec(x_57);
+x_98 = lean_box(0);
+x_99 = l_Lean_Meta_Grind_addCongrTable___lambda__2(x_1, x_52, x_98, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_97);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_99;
+}
+}
+else
+{
+uint8_t x_100; 
+lean_free_object(x_50);
+lean_dec(x_52);
+lean_free_object(x_11);
+lean_dec(x_9);
+lean_dec(x_8);
+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_100 = !lean_is_exclusive(x_57);
+if (x_100 == 0)
+{
+return x_57;
+}
+else
+{
+lean_object* x_101; lean_object* x_102; lean_object* x_103; 
+x_101 = lean_ctor_get(x_57, 0);
+x_102 = lean_ctor_get(x_57, 1);
+lean_inc(x_102);
+lean_inc(x_101);
+lean_dec(x_57);
+x_103 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_103, 0, x_101);
+lean_ctor_set(x_103, 1, x_102);
+return x_103;
+}
+}
+}
+else
+{
+lean_object* x_104; lean_object* x_105; 
+lean_dec(x_55);
+lean_dec(x_54);
+lean_free_object(x_50);
+lean_free_object(x_11);
+x_104 = lean_box(0);
+x_105 = l_Lean_Meta_Grind_addCongrTable___lambda__2(x_1, x_52, x_104, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_14);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_105;
+}
+}
+else
+{
+lean_object* x_106; lean_object* x_107; lean_object* x_108; uint8_t x_109; 
+x_106 = lean_ctor_get(x_50, 0);
+lean_inc(x_106);
+lean_dec(x_50);
+x_107 = l_Lean_Expr_getAppFn(x_1);
+x_108 = l_Lean_Expr_getAppFn(x_106);
+x_109 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_107, x_108);
+if (x_109 == 0)
+{
+lean_object* x_110; 
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+x_110 = l_Lean_Meta_Grind_hasSameType(x_107, x_108, x_6, x_7, x_8, x_9, x_14);
+if (lean_obj_tag(x_110) == 0)
+{
+lean_object* x_111; uint8_t x_112; 
+x_111 = lean_ctor_get(x_110, 0);
+lean_inc(x_111);
+x_112 = lean_unbox(x_111);
+lean_dec(x_111);
+if (x_112 == 0)
+{
+lean_object* x_113; lean_object* x_114; lean_object* x_115; lean_object* x_116; lean_object* x_117; lean_object* x_118; lean_object* x_119; uint8_t x_120; 
+x_113 = lean_ctor_get(x_110, 1);
+lean_inc(x_113);
+lean_dec(x_110);
+x_114 = l_Lean_Meta_Grind_addCongrTable___closed__2;
+x_115 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_114, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_113);
+x_116 = lean_ctor_get(x_115, 0);
+lean_inc(x_116);
+x_117 = lean_ctor_get(x_115, 1);
+lean_inc(x_117);
+if (lean_is_exclusive(x_115)) {
+ lean_ctor_release(x_115, 0);
+ lean_ctor_release(x_115, 1);
+ x_118 = x_115;
+} else {
+ lean_dec_ref(x_115);
+ x_118 = lean_box(0);
+}
+x_119 = l_Lean_Meta_Grind_addCongrTable___closed__3;
+x_120 = lean_unbox(x_116);
+lean_dec(x_116);
+if (x_120 == 0)
+{
+lean_object* x_121; lean_object* x_122; 
+lean_dec(x_118);
+lean_dec(x_106);
+lean_free_object(x_11);
+lean_dec(x_1);
+x_121 = lean_box(0);
+x_122 = lean_apply_10(x_119, x_121, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_117);
+return x_122;
+}
+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_object* x_129; lean_object* x_130; lean_object* x_131; lean_object* x_132; lean_object* x_133; lean_object* x_134; 
+x_123 = l_Lean_indentExpr(x_1);
+x_124 = l_Lean_Meta_Grind_addCongrTable___closed__5;
+if (lean_is_scalar(x_118)) {
+ x_125 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_125 = x_118;
+ lean_ctor_set_tag(x_125, 7);
+}
+lean_ctor_set(x_125, 0, x_124);
+lean_ctor_set(x_125, 1, x_123);
+x_126 = l_Lean_Meta_Grind_addCongrTable___closed__7;
+x_127 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_127, 0, x_125);
+lean_ctor_set(x_127, 1, x_126);
+x_128 = l_Lean_indentExpr(x_106);
+lean_ctor_set_tag(x_11, 7);
+lean_ctor_set(x_11, 1, x_128);
+lean_ctor_set(x_11, 0, x_127);
+x_129 = l_Lean_Meta_Grind_addCongrTable___closed__9;
+x_130 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_130, 0, x_11);
+lean_ctor_set(x_130, 1, x_129);
+x_131 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_114, x_130, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_117);
+x_132 = lean_ctor_get(x_131, 0);
+lean_inc(x_132);
+x_133 = lean_ctor_get(x_131, 1);
+lean_inc(x_133);
+lean_dec(x_131);
+x_134 = lean_apply_10(x_119, x_132, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_133);
+return x_134;
+}
+}
+else
+{
+lean_object* x_135; lean_object* x_136; lean_object* x_137; 
+lean_free_object(x_11);
+x_135 = lean_ctor_get(x_110, 1);
+lean_inc(x_135);
+lean_dec(x_110);
+x_136 = lean_box(0);
+x_137 = l_Lean_Meta_Grind_addCongrTable___lambda__2(x_1, x_106, x_136, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_135);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_137;
+}
+}
+else
+{
+lean_object* x_138; lean_object* x_139; lean_object* x_140; lean_object* x_141; 
+lean_dec(x_106);
+lean_free_object(x_11);
+lean_dec(x_9);
+lean_dec(x_8);
+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_138 = lean_ctor_get(x_110, 0);
+lean_inc(x_138);
+x_139 = lean_ctor_get(x_110, 1);
+lean_inc(x_139);
+if (lean_is_exclusive(x_110)) {
+ lean_ctor_release(x_110, 0);
+ lean_ctor_release(x_110, 1);
+ x_140 = x_110;
+} else {
+ lean_dec_ref(x_110);
+ x_140 = lean_box(0);
+}
+if (lean_is_scalar(x_140)) {
+ x_141 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_141 = x_140;
+}
+lean_ctor_set(x_141, 0, x_138);
+lean_ctor_set(x_141, 1, x_139);
+return x_141;
+}
+}
+else
+{
+lean_object* x_142; lean_object* x_143; 
+lean_dec(x_108);
+lean_dec(x_107);
+lean_free_object(x_11);
+x_142 = lean_box(0);
+x_143 = l_Lean_Meta_Grind_addCongrTable___lambda__2(x_1, x_106, x_142, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_14);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_143;
+}
+}
+}
+}
+else
+{
+lean_object* x_144; lean_object* x_145; lean_object* x_146; lean_object* x_147; 
+x_144 = lean_ctor_get(x_11, 0);
+x_145 = lean_ctor_get(x_11, 1);
+lean_inc(x_145);
+lean_inc(x_144);
+lean_dec(x_11);
+x_146 = lean_ctor_get(x_144, 3);
+lean_inc(x_146);
+lean_inc(x_1);
+x_147 = l_Lean_PersistentHashMap_findEntry_x3f___at_Lean_Meta_Grind_addCongrTable___spec__1(x_144, x_146, x_1);
+if (lean_obj_tag(x_147) == 0)
+{
+lean_object* x_148; lean_object* x_149; lean_object* x_150; lean_object* x_151; lean_object* x_152; lean_object* x_153; lean_object* x_154; lean_object* x_155; lean_object* x_156; uint8_t x_157; lean_object* x_158; lean_object* x_159; lean_object* x_160; lean_object* x_161; lean_object* x_162; lean_object* x_163; lean_object* x_164; lean_object* x_165; lean_object* x_166; lean_object* x_167; 
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_148 = lean_st_ref_take(x_2, x_145);
+x_149 = lean_ctor_get(x_148, 0);
+lean_inc(x_149);
+x_150 = lean_ctor_get(x_148, 1);
+lean_inc(x_150);
+lean_dec(x_148);
+x_151 = lean_ctor_get(x_149, 0);
+lean_inc(x_151);
+x_152 = lean_ctor_get(x_149, 1);
+lean_inc(x_152);
+x_153 = lean_ctor_get(x_149, 2);
+lean_inc(x_153);
+x_154 = lean_ctor_get(x_149, 3);
+lean_inc(x_154);
+x_155 = lean_ctor_get(x_149, 4);
+lean_inc(x_155);
+x_156 = lean_ctor_get(x_149, 5);
+lean_inc(x_156);
+x_157 = lean_ctor_get_uint8(x_149, sizeof(void*)*8);
+x_158 = lean_ctor_get(x_149, 6);
+lean_inc(x_158);
+x_159 = lean_ctor_get(x_149, 7);
+lean_inc(x_159);
+x_160 = lean_box(0);
+lean_inc(x_149);
+x_161 = l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_addCongrTable___spec__4(x_149, x_154, x_1, x_160);
+if (lean_is_exclusive(x_149)) {
+ lean_ctor_release(x_149, 0);
+ lean_ctor_release(x_149, 1);
+ lean_ctor_release(x_149, 2);
+ lean_ctor_release(x_149, 3);
+ lean_ctor_release(x_149, 4);
+ lean_ctor_release(x_149, 5);
+ lean_ctor_release(x_149, 6);
+ lean_ctor_release(x_149, 7);
+ x_162 = x_149;
+} else {
+ lean_dec_ref(x_149);
+ x_162 = lean_box(0);
+}
+if (lean_is_scalar(x_162)) {
+ x_163 = lean_alloc_ctor(0, 8, 1);
+} else {
+ x_163 = x_162;
+}
+lean_ctor_set(x_163, 0, x_151);
+lean_ctor_set(x_163, 1, x_152);
+lean_ctor_set(x_163, 2, x_153);
+lean_ctor_set(x_163, 3, x_161);
+lean_ctor_set(x_163, 4, x_155);
+lean_ctor_set(x_163, 5, x_156);
+lean_ctor_set(x_163, 6, x_158);
+lean_ctor_set(x_163, 7, x_159);
+lean_ctor_set_uint8(x_163, sizeof(void*)*8, x_157);
+x_164 = lean_st_ref_set(x_2, x_163, x_150);
+lean_dec(x_2);
+x_165 = lean_ctor_get(x_164, 1);
+lean_inc(x_165);
+if (lean_is_exclusive(x_164)) {
+ lean_ctor_release(x_164, 0);
+ lean_ctor_release(x_164, 1);
+ x_166 = x_164;
+} else {
+ lean_dec_ref(x_164);
+ x_166 = lean_box(0);
+}
+if (lean_is_scalar(x_166)) {
+ x_167 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_167 = x_166;
+}
+lean_ctor_set(x_167, 0, x_160);
+lean_ctor_set(x_167, 1, x_165);
+return x_167;
+}
+else
+{
+lean_object* x_168; lean_object* x_169; lean_object* x_170; lean_object* x_171; lean_object* x_172; uint8_t x_173; 
+x_168 = lean_ctor_get(x_147, 0);
+lean_inc(x_168);
+lean_dec(x_147);
+x_169 = lean_ctor_get(x_168, 0);
+lean_inc(x_169);
+if (lean_is_exclusive(x_168)) {
+ lean_ctor_release(x_168, 0);
+ lean_ctor_release(x_168, 1);
+ x_170 = x_168;
+} else {
+ lean_dec_ref(x_168);
+ x_170 = lean_box(0);
+}
+x_171 = l_Lean_Expr_getAppFn(x_1);
+x_172 = l_Lean_Expr_getAppFn(x_169);
+x_173 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_171, x_172);
+if (x_173 == 0)
+{
+lean_object* x_174; 
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+x_174 = l_Lean_Meta_Grind_hasSameType(x_171, x_172, x_6, x_7, x_8, x_9, x_145);
+if (lean_obj_tag(x_174) == 0)
+{
+lean_object* x_175; uint8_t x_176; 
+x_175 = lean_ctor_get(x_174, 0);
+lean_inc(x_175);
+x_176 = lean_unbox(x_175);
+lean_dec(x_175);
+if (x_176 == 0)
+{
+lean_object* x_177; lean_object* x_178; lean_object* x_179; lean_object* x_180; lean_object* x_181; lean_object* x_182; lean_object* x_183; uint8_t x_184; 
+x_177 = lean_ctor_get(x_174, 1);
+lean_inc(x_177);
+lean_dec(x_174);
+x_178 = l_Lean_Meta_Grind_addCongrTable___closed__2;
+x_179 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_178, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_177);
+x_180 = lean_ctor_get(x_179, 0);
+lean_inc(x_180);
+x_181 = lean_ctor_get(x_179, 1);
+lean_inc(x_181);
+if (lean_is_exclusive(x_179)) {
+ lean_ctor_release(x_179, 0);
+ lean_ctor_release(x_179, 1);
+ x_182 = x_179;
+} else {
+ lean_dec_ref(x_179);
+ x_182 = lean_box(0);
+}
+x_183 = l_Lean_Meta_Grind_addCongrTable___closed__3;
+x_184 = lean_unbox(x_180);
+lean_dec(x_180);
+if (x_184 == 0)
+{
+lean_object* x_185; lean_object* x_186; 
+lean_dec(x_182);
+lean_dec(x_170);
+lean_dec(x_169);
+lean_dec(x_1);
+x_185 = lean_box(0);
+x_186 = lean_apply_10(x_183, x_185, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_181);
+return x_186;
+}
+else
+{
+lean_object* x_187; lean_object* x_188; lean_object* x_189; lean_object* x_190; lean_object* x_191; lean_object* x_192; lean_object* x_193; lean_object* x_194; lean_object* x_195; lean_object* x_196; lean_object* x_197; lean_object* x_198; lean_object* x_199; 
+x_187 = l_Lean_indentExpr(x_1);
+x_188 = l_Lean_Meta_Grind_addCongrTable___closed__5;
+if (lean_is_scalar(x_182)) {
+ x_189 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_189 = x_182;
+ lean_ctor_set_tag(x_189, 7);
+}
+lean_ctor_set(x_189, 0, x_188);
+lean_ctor_set(x_189, 1, x_187);
+x_190 = l_Lean_Meta_Grind_addCongrTable___closed__7;
+if (lean_is_scalar(x_170)) {
+ x_191 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_191 = x_170;
+ lean_ctor_set_tag(x_191, 7);
+}
+lean_ctor_set(x_191, 0, x_189);
+lean_ctor_set(x_191, 1, x_190);
+x_192 = l_Lean_indentExpr(x_169);
+x_193 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_193, 0, x_191);
+lean_ctor_set(x_193, 1, x_192);
+x_194 = l_Lean_Meta_Grind_addCongrTable___closed__9;
+x_195 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_195, 0, x_193);
+lean_ctor_set(x_195, 1, x_194);
+x_196 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_178, x_195, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_181);
+x_197 = lean_ctor_get(x_196, 0);
+lean_inc(x_197);
+x_198 = lean_ctor_get(x_196, 1);
+lean_inc(x_198);
+lean_dec(x_196);
+x_199 = lean_apply_10(x_183, x_197, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_198);
+return x_199;
+}
+}
+else
+{
+lean_object* x_200; lean_object* x_201; lean_object* x_202; 
+lean_dec(x_170);
+x_200 = lean_ctor_get(x_174, 1);
+lean_inc(x_200);
+lean_dec(x_174);
+x_201 = lean_box(0);
+x_202 = l_Lean_Meta_Grind_addCongrTable___lambda__2(x_1, x_169, x_201, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_200);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_202;
+}
+}
+else
+{
+lean_object* x_203; lean_object* x_204; lean_object* x_205; lean_object* x_206; 
+lean_dec(x_170);
+lean_dec(x_169);
+lean_dec(x_9);
+lean_dec(x_8);
+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_203 = lean_ctor_get(x_174, 0);
+lean_inc(x_203);
+x_204 = lean_ctor_get(x_174, 1);
+lean_inc(x_204);
+if (lean_is_exclusive(x_174)) {
+ lean_ctor_release(x_174, 0);
+ lean_ctor_release(x_174, 1);
+ x_205 = x_174;
+} else {
+ lean_dec_ref(x_174);
+ x_205 = lean_box(0);
+}
+if (lean_is_scalar(x_205)) {
+ x_206 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_206 = x_205;
+}
+lean_ctor_set(x_206, 0, x_203);
+lean_ctor_set(x_206, 1, x_204);
+return x_206;
+}
+}
+else
+{
+lean_object* x_207; lean_object* x_208; 
+lean_dec(x_172);
+lean_dec(x_171);
+lean_dec(x_170);
+x_207 = lean_box(0);
+x_208 = l_Lean_Meta_Grind_addCongrTable___lambda__2(x_1, x_169, x_207, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_145);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_208;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAtAux___at_Lean_Meta_Grind_addCongrTable___spec__3___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) {
+_start:
+{
+lean_object* x_7; 
+x_7 = l_Lean_PersistentHashMap_findEntryAtAux___at_Lean_Meta_Grind_addCongrTable___spec__3(x_1, x_2, x_3, x_4, x_5, x_6);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_7;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+_start:
+{
+size_t x_5; lean_object* x_6; 
+x_5 = lean_unbox_usize(x_3);
+lean_dec(x_3);
+x_6 = l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2(x_1, x_2, x_5, x_4);
+return x_6;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Meta_Grind_addCongrTable___spec__6___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) {
+_start:
+{
+size_t x_8; lean_object* x_9; 
+x_8 = lean_unbox_usize(x_2);
+lean_dec(x_2);
+x_9 = l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Meta_Grind_addCongrTable___spec__6(x_1, x_8, x_3, x_4, x_5, x_6, x_7);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_9;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5___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) {
+_start:
+{
+size_t x_7; size_t x_8; lean_object* x_9; 
+x_7 = lean_unbox_usize(x_3);
+lean_dec(x_3);
+x_8 = lean_unbox_usize(x_4);
+lean_dec(x_4);
+x_9 = l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5(x_1, x_2, x_7, x_8, x_5, x_6);
+return x_9;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_11;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___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, lean_object* x_10, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_12;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addCongrTable___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l_Lean_Meta_Grind_addCongrTable___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addCongrTable___lambda__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l_Lean_Meta_Grind_addCongrTable___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_addCongrTable___lambda__3___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l_Lean_Meta_Grind_addCongrTable___lambda__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_11;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAtAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__3(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
+_start:
+{
+lean_object* x_6; uint8_t x_7; 
+x_6 = lean_array_get_size(x_1);
+x_7 = lean_nat_dec_lt(x_4, x_6);
+lean_dec(x_6);
+if (x_7 == 0)
+{
+lean_object* x_8; 
+lean_dec(x_4);
+x_8 = lean_box(0);
+return x_8;
+}
+else
+{
+lean_object* x_9; uint8_t x_10; 
+x_9 = lean_array_fget(x_1, x_4);
+x_10 = l___private_Lean_HeadIndex_0__Lean_beqHeadIndex____x40_Lean_HeadIndex___hyg_69_(x_5, x_9);
+lean_dec(x_9);
+if (x_10 == 0)
+{
+lean_object* x_11; lean_object* x_12; 
+x_11 = lean_unsigned_to_nat(1u);
+x_12 = lean_nat_add(x_4, x_11);
+lean_dec(x_4);
+x_3 = lean_box(0);
+x_4 = x_12;
+goto _start;
+}
+else
+{
+lean_object* x_14; lean_object* x_15; 
+x_14 = lean_array_fget(x_2, x_4);
+lean_dec(x_4);
+x_15 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_15, 0, x_14);
+return x_15;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__2(lean_object* x_1, size_t x_2, lean_object* x_3) {
+_start:
+{
+if (lean_obj_tag(x_1) == 0)
+{
+uint8_t x_4; 
+x_4 = !lean_is_exclusive(x_1);
+if (x_4 == 0)
+{
+lean_object* x_5; size_t x_6; size_t x_7; size_t x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; 
+x_5 = lean_ctor_get(x_1, 0);
+x_6 = 5;
+x_7 = l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
+x_8 = lean_usize_land(x_2, x_7);
+x_9 = lean_usize_to_nat(x_8);
+x_10 = lean_box(2);
+x_11 = lean_array_get(x_10, x_5, x_9);
+lean_dec(x_9);
+lean_dec(x_5);
+switch (lean_obj_tag(x_11)) {
+case 0:
+{
+lean_object* x_12; lean_object* x_13; uint8_t x_14; 
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+x_13 = lean_ctor_get(x_11, 1);
+lean_inc(x_13);
+lean_dec(x_11);
+x_14 = l___private_Lean_HeadIndex_0__Lean_beqHeadIndex____x40_Lean_HeadIndex___hyg_69_(x_3, x_12);
+lean_dec(x_12);
+if (x_14 == 0)
+{
+lean_object* x_15; 
+lean_dec(x_13);
+lean_free_object(x_1);
+x_15 = lean_box(0);
+return x_15;
+}
+else
+{
+lean_ctor_set_tag(x_1, 1);
+lean_ctor_set(x_1, 0, x_13);
+return x_1;
+}
+}
+case 1:
+{
+lean_object* x_16; size_t x_17; 
+lean_free_object(x_1);
+x_16 = lean_ctor_get(x_11, 0);
+lean_inc(x_16);
+lean_dec(x_11);
+x_17 = lean_usize_shift_right(x_2, x_6);
+x_1 = x_16;
+x_2 = x_17;
+goto _start;
+}
+default: 
+{
+lean_object* x_19; 
+lean_free_object(x_1);
+x_19 = lean_box(0);
+return x_19;
+}
+}
+}
+else
+{
+lean_object* x_20; size_t x_21; size_t x_22; size_t x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+x_20 = lean_ctor_get(x_1, 0);
+lean_inc(x_20);
+lean_dec(x_1);
+x_21 = 5;
+x_22 = l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
+x_23 = lean_usize_land(x_2, x_22);
+x_24 = lean_usize_to_nat(x_23);
+x_25 = lean_box(2);
+x_26 = lean_array_get(x_25, x_20, x_24);
+lean_dec(x_24);
+lean_dec(x_20);
+switch (lean_obj_tag(x_26)) {
+case 0:
+{
+lean_object* x_27; lean_object* x_28; uint8_t x_29; 
+x_27 = lean_ctor_get(x_26, 0);
+lean_inc(x_27);
+x_28 = lean_ctor_get(x_26, 1);
+lean_inc(x_28);
+lean_dec(x_26);
+x_29 = l___private_Lean_HeadIndex_0__Lean_beqHeadIndex____x40_Lean_HeadIndex___hyg_69_(x_3, x_27);
+lean_dec(x_27);
+if (x_29 == 0)
+{
+lean_object* x_30; 
+lean_dec(x_28);
+x_30 = lean_box(0);
+return x_30;
+}
+else
+{
+lean_object* x_31; 
+x_31 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_31, 0, x_28);
+return x_31;
+}
+}
+case 1:
+{
+lean_object* x_32; size_t x_33; 
+x_32 = lean_ctor_get(x_26, 0);
+lean_inc(x_32);
+lean_dec(x_26);
+x_33 = lean_usize_shift_right(x_2, x_21);
+x_1 = x_32;
+x_2 = x_33;
+goto _start;
+}
+default: 
+{
+lean_object* x_35; 
+x_35 = lean_box(0);
+return x_35;
+}
+}
+}
+}
+else
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; 
+x_36 = lean_ctor_get(x_1, 0);
+lean_inc(x_36);
+x_37 = lean_ctor_get(x_1, 1);
+lean_inc(x_37);
+lean_dec(x_1);
+x_38 = lean_unsigned_to_nat(0u);
+x_39 = l_Lean_PersistentHashMap_findAtAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__3(x_36, x_37, lean_box(0), x_38, x_3);
+lean_dec(x_37);
+lean_dec(x_36);
+return x_39;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_find_x3f___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__1(lean_object* x_1, lean_object* x_2) {
+_start:
+{
+uint64_t x_3; size_t x_4; lean_object* x_5; 
+x_3 = l_Lean_HeadIndex_hash(x_2);
+x_4 = lean_uint64_to_usize(x_3);
+x_5 = l_Lean_PersistentHashMap_findAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__2(x_1, x_4, x_2);
+return x_5;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__6(size_t x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
+_start:
+{
+lean_object* x_7; uint8_t x_8; 
+x_7 = lean_array_get_size(x_2);
+x_8 = lean_nat_dec_lt(x_5, x_7);
+lean_dec(x_7);
+if (x_8 == 0)
+{
+lean_dec(x_5);
+return x_6;
+}
+else
+{
+lean_object* x_9; lean_object* x_10; uint64_t x_11; size_t x_12; size_t x_13; size_t x_14; size_t x_15; size_t x_16; size_t x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_9 = lean_array_fget(x_2, x_5);
+x_10 = lean_array_fget(x_3, x_5);
+x_11 = l_Lean_HeadIndex_hash(x_9);
+x_12 = lean_uint64_to_usize(x_11);
+x_13 = 1;
+x_14 = lean_usize_sub(x_1, x_13);
+x_15 = 5;
+x_16 = lean_usize_mul(x_15, x_14);
+x_17 = lean_usize_shift_right(x_12, x_16);
+x_18 = lean_unsigned_to_nat(1u);
+x_19 = lean_nat_add(x_5, x_18);
+lean_dec(x_5);
+x_20 = l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__5(x_6, x_17, x_1, x_9, x_10);
+x_4 = lean_box(0);
+x_5 = x_19;
+x_6 = x_20;
+goto _start;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__7(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+_start:
+{
+lean_object* x_5; lean_object* x_6; lean_object* x_7; uint8_t x_8; 
+x_5 = lean_ctor_get(x_1, 0);
+lean_inc(x_5);
+x_6 = lean_ctor_get(x_1, 1);
+lean_inc(x_6);
+x_7 = lean_array_get_size(x_5);
+x_8 = lean_nat_dec_lt(x_2, x_7);
+lean_dec(x_7);
+if (x_8 == 0)
+{
+uint8_t x_9; 
+lean_dec(x_2);
+x_9 = !lean_is_exclusive(x_1);
+if (x_9 == 0)
+{
+lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; 
+x_10 = lean_ctor_get(x_1, 1);
+lean_dec(x_10);
+x_11 = lean_ctor_get(x_1, 0);
+lean_dec(x_11);
+x_12 = lean_array_push(x_5, x_3);
+x_13 = lean_array_push(x_6, x_4);
+lean_ctor_set(x_1, 1, x_13);
+lean_ctor_set(x_1, 0, x_12);
+return x_1;
+}
+else
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+lean_dec(x_1);
+x_14 = lean_array_push(x_5, x_3);
+x_15 = lean_array_push(x_6, x_4);
+x_16 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_16, 0, x_14);
+lean_ctor_set(x_16, 1, x_15);
+return x_16;
+}
+}
+else
+{
+lean_object* x_17; uint8_t x_18; 
+x_17 = lean_array_fget(x_5, x_2);
+x_18 = l___private_Lean_HeadIndex_0__Lean_beqHeadIndex____x40_Lean_HeadIndex___hyg_69_(x_3, x_17);
+lean_dec(x_17);
+if (x_18 == 0)
+{
+lean_object* x_19; lean_object* x_20; 
+lean_dec(x_6);
+lean_dec(x_5);
+x_19 = lean_unsigned_to_nat(1u);
+x_20 = lean_nat_add(x_2, x_19);
+lean_dec(x_2);
+x_2 = x_20;
+goto _start;
+}
+else
+{
+uint8_t x_22; 
+x_22 = !lean_is_exclusive(x_1);
+if (x_22 == 0)
+{
+lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+x_23 = lean_ctor_get(x_1, 1);
+lean_dec(x_23);
+x_24 = lean_ctor_get(x_1, 0);
+lean_dec(x_24);
+x_25 = lean_array_fset(x_5, x_2, x_3);
+x_26 = lean_array_fset(x_6, x_2, x_4);
+lean_dec(x_2);
+lean_ctor_set(x_1, 1, x_26);
+lean_ctor_set(x_1, 0, x_25);
+return x_1;
+}
+else
+{
+lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+lean_dec(x_1);
+x_27 = lean_array_fset(x_5, x_2, x_3);
+x_28 = lean_array_fset(x_6, x_2, x_4);
+lean_dec(x_2);
+x_29 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_29, 0, x_27);
+lean_ctor_set(x_29, 1, x_28);
+return x_29;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__5(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, lean_object* x_5) {
+_start:
+{
+if (lean_obj_tag(x_1) == 0)
+{
+uint8_t x_6; 
+x_6 = !lean_is_exclusive(x_1);
+if (x_6 == 0)
+{
+lean_object* x_7; size_t x_8; size_t x_9; size_t x_10; size_t x_11; lean_object* x_12; lean_object* x_13; uint8_t x_14; 
+x_7 = lean_ctor_get(x_1, 0);
+x_8 = 1;
+x_9 = 5;
+x_10 = l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
+x_11 = lean_usize_land(x_2, x_10);
+x_12 = lean_usize_to_nat(x_11);
+x_13 = lean_array_get_size(x_7);
+x_14 = lean_nat_dec_lt(x_12, x_13);
+lean_dec(x_13);
+if (x_14 == 0)
+{
+lean_dec(x_12);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_1;
+}
+else
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; 
+x_15 = lean_array_fget(x_7, x_12);
+x_16 = lean_box(0);
+x_17 = lean_array_fset(x_7, x_12, x_16);
+switch (lean_obj_tag(x_15)) {
+case 0:
+{
+uint8_t x_18; 
+x_18 = !lean_is_exclusive(x_15);
+if (x_18 == 0)
+{
+lean_object* x_19; lean_object* x_20; uint8_t x_21; 
+x_19 = lean_ctor_get(x_15, 0);
+x_20 = lean_ctor_get(x_15, 1);
+x_21 = l___private_Lean_HeadIndex_0__Lean_beqHeadIndex____x40_Lean_HeadIndex___hyg_69_(x_4, x_19);
+if (x_21 == 0)
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+lean_free_object(x_15);
+x_22 = l_Lean_PersistentHashMap_mkCollisionNode___rarg(x_19, x_20, x_4, x_5);
+x_23 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_23, 0, x_22);
+x_24 = lean_array_fset(x_17, x_12, x_23);
+lean_dec(x_12);
+lean_ctor_set(x_1, 0, x_24);
+return x_1;
+}
+else
+{
+lean_object* x_25; 
+lean_dec(x_20);
+lean_dec(x_19);
+lean_ctor_set(x_15, 1, x_5);
+lean_ctor_set(x_15, 0, x_4);
+x_25 = lean_array_fset(x_17, x_12, x_15);
+lean_dec(x_12);
+lean_ctor_set(x_1, 0, x_25);
+return x_1;
+}
+}
+else
+{
+lean_object* x_26; lean_object* x_27; uint8_t x_28; 
+x_26 = lean_ctor_get(x_15, 0);
+x_27 = lean_ctor_get(x_15, 1);
+lean_inc(x_27);
+lean_inc(x_26);
+lean_dec(x_15);
+x_28 = l___private_Lean_HeadIndex_0__Lean_beqHeadIndex____x40_Lean_HeadIndex___hyg_69_(x_4, x_26);
+if (x_28 == 0)
+{
+lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+x_29 = l_Lean_PersistentHashMap_mkCollisionNode___rarg(x_26, x_27, x_4, x_5);
+x_30 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_30, 0, x_29);
+x_31 = lean_array_fset(x_17, x_12, x_30);
+lean_dec(x_12);
+lean_ctor_set(x_1, 0, x_31);
+return x_1;
+}
+else
+{
+lean_object* x_32; lean_object* x_33; 
+lean_dec(x_27);
+lean_dec(x_26);
+x_32 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_32, 0, x_4);
+lean_ctor_set(x_32, 1, x_5);
+x_33 = lean_array_fset(x_17, x_12, x_32);
+lean_dec(x_12);
+lean_ctor_set(x_1, 0, x_33);
+return x_1;
+}
+}
+}
+case 1:
+{
+uint8_t x_34; 
+x_34 = !lean_is_exclusive(x_15);
+if (x_34 == 0)
+{
+lean_object* x_35; size_t x_36; size_t x_37; lean_object* x_38; lean_object* x_39; 
+x_35 = lean_ctor_get(x_15, 0);
+x_36 = lean_usize_shift_right(x_2, x_9);
+x_37 = lean_usize_add(x_3, x_8);
+x_38 = l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__5(x_35, x_36, x_37, x_4, x_5);
+lean_ctor_set(x_15, 0, x_38);
+x_39 = lean_array_fset(x_17, x_12, x_15);
+lean_dec(x_12);
+lean_ctor_set(x_1, 0, x_39);
+return x_1;
+}
+else
+{
+lean_object* x_40; size_t x_41; size_t x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; 
+x_40 = lean_ctor_get(x_15, 0);
+lean_inc(x_40);
+lean_dec(x_15);
+x_41 = lean_usize_shift_right(x_2, x_9);
+x_42 = lean_usize_add(x_3, x_8);
+x_43 = l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__5(x_40, x_41, x_42, x_4, x_5);
+x_44 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_44, 0, x_43);
+x_45 = lean_array_fset(x_17, x_12, x_44);
+lean_dec(x_12);
+lean_ctor_set(x_1, 0, x_45);
+return x_1;
+}
+}
+default: 
+{
+lean_object* x_46; lean_object* x_47; 
+x_46 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_46, 0, x_4);
+lean_ctor_set(x_46, 1, x_5);
+x_47 = lean_array_fset(x_17, x_12, x_46);
+lean_dec(x_12);
+lean_ctor_set(x_1, 0, x_47);
+return x_1;
+}
+}
+}
+}
+else
+{
+lean_object* x_48; size_t x_49; size_t x_50; size_t x_51; size_t x_52; lean_object* x_53; lean_object* x_54; uint8_t x_55; 
+x_48 = lean_ctor_get(x_1, 0);
+lean_inc(x_48);
+lean_dec(x_1);
+x_49 = 1;
+x_50 = 5;
+x_51 = l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__2;
+x_52 = lean_usize_land(x_2, x_51);
+x_53 = lean_usize_to_nat(x_52);
+x_54 = lean_array_get_size(x_48);
+x_55 = lean_nat_dec_lt(x_53, x_54);
+lean_dec(x_54);
+if (x_55 == 0)
+{
+lean_object* x_56; 
+lean_dec(x_53);
+lean_dec(x_5);
+lean_dec(x_4);
+x_56 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_56, 0, x_48);
+return x_56;
+}
+else
+{
+lean_object* x_57; lean_object* x_58; lean_object* x_59; 
+x_57 = lean_array_fget(x_48, x_53);
+x_58 = lean_box(0);
+x_59 = lean_array_fset(x_48, x_53, x_58);
+switch (lean_obj_tag(x_57)) {
+case 0:
+{
+lean_object* x_60; lean_object* x_61; lean_object* x_62; uint8_t x_63; 
+x_60 = lean_ctor_get(x_57, 0);
+lean_inc(x_60);
+x_61 = lean_ctor_get(x_57, 1);
+lean_inc(x_61);
+if (lean_is_exclusive(x_57)) {
+ lean_ctor_release(x_57, 0);
+ lean_ctor_release(x_57, 1);
+ x_62 = x_57;
+} else {
+ lean_dec_ref(x_57);
+ x_62 = lean_box(0);
+}
+x_63 = l___private_Lean_HeadIndex_0__Lean_beqHeadIndex____x40_Lean_HeadIndex___hyg_69_(x_4, x_60);
+if (x_63 == 0)
+{
+lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; 
+lean_dec(x_62);
+x_64 = l_Lean_PersistentHashMap_mkCollisionNode___rarg(x_60, x_61, x_4, x_5);
+x_65 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_65, 0, x_64);
+x_66 = lean_array_fset(x_59, x_53, x_65);
+lean_dec(x_53);
+x_67 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_67, 0, x_66);
+return x_67;
+}
+else
+{
+lean_object* x_68; lean_object* x_69; lean_object* x_70; 
+lean_dec(x_61);
+lean_dec(x_60);
+if (lean_is_scalar(x_62)) {
+ x_68 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_68 = x_62;
+}
+lean_ctor_set(x_68, 0, x_4);
+lean_ctor_set(x_68, 1, x_5);
+x_69 = lean_array_fset(x_59, x_53, x_68);
+lean_dec(x_53);
+x_70 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_70, 0, x_69);
+return x_70;
+}
+}
+case 1:
+{
+lean_object* x_71; lean_object* x_72; size_t x_73; size_t x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; 
+x_71 = lean_ctor_get(x_57, 0);
+lean_inc(x_71);
+if (lean_is_exclusive(x_57)) {
+ lean_ctor_release(x_57, 0);
+ x_72 = x_57;
+} else {
+ lean_dec_ref(x_57);
+ x_72 = lean_box(0);
+}
+x_73 = lean_usize_shift_right(x_2, x_50);
+x_74 = lean_usize_add(x_3, x_49);
+x_75 = l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__5(x_71, x_73, x_74, x_4, x_5);
+if (lean_is_scalar(x_72)) {
+ x_76 = lean_alloc_ctor(1, 1, 0);
+} else {
+ x_76 = x_72;
+}
+lean_ctor_set(x_76, 0, x_75);
+x_77 = lean_array_fset(x_59, x_53, x_76);
+lean_dec(x_53);
+x_78 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_78, 0, x_77);
+return x_78;
+}
+default: 
+{
+lean_object* x_79; lean_object* x_80; lean_object* x_81; 
+x_79 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_79, 0, x_4);
+lean_ctor_set(x_79, 1, x_5);
+x_80 = lean_array_fset(x_59, x_53, x_79);
+lean_dec(x_53);
+x_81 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_81, 0, x_80);
+return x_81;
+}
+}
+}
+}
+}
+else
+{
+uint8_t x_82; 
+x_82 = !lean_is_exclusive(x_1);
+if (x_82 == 0)
+{
+lean_object* x_83; lean_object* x_84; size_t x_85; uint8_t x_86; 
+x_83 = lean_unsigned_to_nat(0u);
+x_84 = l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__7(x_1, x_83, x_4, x_5);
+x_85 = 7;
+x_86 = lean_usize_dec_le(x_85, x_3);
+if (x_86 == 0)
+{
+lean_object* x_87; lean_object* x_88; uint8_t x_89; 
+x_87 = l_Lean_PersistentHashMap_getCollisionNodeSize___rarg(x_84);
+x_88 = lean_unsigned_to_nat(4u);
+x_89 = lean_nat_dec_lt(x_87, x_88);
+lean_dec(x_87);
+if (x_89 == 0)
+{
+lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; 
+x_90 = lean_ctor_get(x_84, 0);
+lean_inc(x_90);
+x_91 = lean_ctor_get(x_84, 1);
+lean_inc(x_91);
+lean_dec(x_84);
+x_92 = l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5___closed__1;
+x_93 = l_Lean_PersistentHashMap_insertAux_traverse___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__6(x_3, x_90, x_91, lean_box(0), x_83, x_92);
+lean_dec(x_91);
+lean_dec(x_90);
+return x_93;
+}
+else
+{
+return x_84;
+}
+}
+else
+{
+return x_84;
+}
+}
+else
+{
+lean_object* x_94; lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; size_t x_99; uint8_t x_100; 
+x_94 = lean_ctor_get(x_1, 0);
+x_95 = lean_ctor_get(x_1, 1);
+lean_inc(x_95);
+lean_inc(x_94);
+lean_dec(x_1);
+x_96 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_96, 0, x_94);
+lean_ctor_set(x_96, 1, x_95);
+x_97 = lean_unsigned_to_nat(0u);
+x_98 = l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__7(x_96, x_97, x_4, x_5);
+x_99 = 7;
+x_100 = lean_usize_dec_le(x_99, x_3);
+if (x_100 == 0)
+{
+lean_object* x_101; lean_object* x_102; uint8_t x_103; 
+x_101 = l_Lean_PersistentHashMap_getCollisionNodeSize___rarg(x_98);
+x_102 = lean_unsigned_to_nat(4u);
+x_103 = lean_nat_dec_lt(x_101, x_102);
+lean_dec(x_101);
+if (x_103 == 0)
+{
+lean_object* x_104; lean_object* x_105; lean_object* x_106; lean_object* x_107; 
+x_104 = lean_ctor_get(x_98, 0);
+lean_inc(x_104);
+x_105 = lean_ctor_get(x_98, 1);
+lean_inc(x_105);
+lean_dec(x_98);
+x_106 = l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5___closed__1;
+x_107 = l_Lean_PersistentHashMap_insertAux_traverse___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__6(x_3, x_104, x_105, lean_box(0), x_97, x_106);
+lean_dec(x_105);
+lean_dec(x_104);
+return x_107;
+}
+else
+{
+return x_98;
+}
+}
+else
+{
+return x_98;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insert___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
+_start:
+{
+uint64_t x_4; size_t x_5; size_t x_6; lean_object* x_7; 
+x_4 = l_Lean_HeadIndex_hash(x_2);
+x_5 = lean_uint64_to_usize(x_4);
+x_6 = 1;
+x_7 = l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__5(x_1, x_5, x_6, x_2, x_3);
+return x_7;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap(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:
+{
+lean_object* x_11; lean_object* x_12; uint8_t x_13; 
+lean_inc(x_1);
+x_11 = l_Lean_Expr_toHeadIndex(x_1);
+x_12 = lean_st_ref_take(x_2, x_10);
+x_13 = !lean_is_exclusive(x_12);
+if (x_13 == 0)
+{
+lean_object* x_14; uint8_t x_15; 
+x_14 = lean_ctor_get(x_12, 0);
+x_15 = !lean_is_exclusive(x_14);
+if (x_15 == 0)
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+x_16 = lean_ctor_get(x_12, 1);
+x_17 = lean_ctor_get(x_14, 4);
+lean_inc(x_17);
+x_18 = l_Lean_PersistentHashMap_find_x3f___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__1(x_17, x_11);
+if (lean_obj_tag(x_18) == 0)
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; uint8_t x_22; 
+x_19 = lean_box(0);
+lean_ctor_set_tag(x_12, 1);
+lean_ctor_set(x_12, 1, x_19);
+lean_ctor_set(x_12, 0, x_1);
+x_20 = l_Lean_PersistentHashMap_insert___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__4(x_17, x_11, x_12);
+lean_ctor_set(x_14, 4, x_20);
+x_21 = lean_st_ref_set(x_2, x_14, x_16);
+x_22 = !lean_is_exclusive(x_21);
+if (x_22 == 0)
+{
+lean_object* x_23; lean_object* x_24; 
+x_23 = lean_ctor_get(x_21, 0);
+lean_dec(x_23);
+x_24 = lean_box(0);
+lean_ctor_set(x_21, 0, x_24);
+return x_21;
+}
+else
+{
+lean_object* x_25; lean_object* x_26; lean_object* x_27; 
+x_25 = lean_ctor_get(x_21, 1);
+lean_inc(x_25);
+lean_dec(x_21);
+x_26 = lean_box(0);
+x_27 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_27, 0, x_26);
+lean_ctor_set(x_27, 1, x_25);
+return x_27;
+}
+}
+else
+{
+lean_object* x_28; lean_object* x_29; lean_object* x_30; uint8_t x_31; 
+x_28 = lean_ctor_get(x_18, 0);
+lean_inc(x_28);
+lean_dec(x_18);
+lean_ctor_set_tag(x_12, 1);
+lean_ctor_set(x_12, 1, x_28);
+lean_ctor_set(x_12, 0, x_1);
+x_29 = l_Lean_PersistentHashMap_insert___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__4(x_17, x_11, x_12);
+lean_ctor_set(x_14, 4, x_29);
+x_30 = lean_st_ref_set(x_2, x_14, x_16);
+x_31 = !lean_is_exclusive(x_30);
+if (x_31 == 0)
+{
+lean_object* x_32; lean_object* x_33; 
+x_32 = lean_ctor_get(x_30, 0);
+lean_dec(x_32);
+x_33 = lean_box(0);
+lean_ctor_set(x_30, 0, x_33);
+return x_30;
+}
+else
+{
+lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_34 = lean_ctor_get(x_30, 1);
+lean_inc(x_34);
+lean_dec(x_30);
+x_35 = lean_box(0);
+x_36 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_36, 0, x_35);
+lean_ctor_set(x_36, 1, x_34);
+return x_36;
+}
+}
+}
+else
+{
+lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; uint8_t x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; 
+x_37 = lean_ctor_get(x_12, 1);
+x_38 = lean_ctor_get(x_14, 0);
+x_39 = lean_ctor_get(x_14, 1);
+x_40 = lean_ctor_get(x_14, 2);
+x_41 = lean_ctor_get(x_14, 3);
+x_42 = lean_ctor_get(x_14, 4);
+x_43 = lean_ctor_get(x_14, 5);
+x_44 = lean_ctor_get_uint8(x_14, sizeof(void*)*8);
+x_45 = lean_ctor_get(x_14, 6);
+x_46 = lean_ctor_get(x_14, 7);
+lean_inc(x_46);
+lean_inc(x_45);
+lean_inc(x_43);
+lean_inc(x_42);
+lean_inc(x_41);
+lean_inc(x_40);
+lean_inc(x_39);
+lean_inc(x_38);
+lean_dec(x_14);
+lean_inc(x_42);
+x_47 = l_Lean_PersistentHashMap_find_x3f___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__1(x_42, x_11);
+if (lean_obj_tag(x_47) == 0)
+{
+lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; 
+x_48 = lean_box(0);
+lean_ctor_set_tag(x_12, 1);
+lean_ctor_set(x_12, 1, x_48);
+lean_ctor_set(x_12, 0, x_1);
+x_49 = l_Lean_PersistentHashMap_insert___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__4(x_42, x_11, x_12);
+x_50 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_50, 0, x_38);
+lean_ctor_set(x_50, 1, x_39);
+lean_ctor_set(x_50, 2, x_40);
+lean_ctor_set(x_50, 3, x_41);
+lean_ctor_set(x_50, 4, x_49);
+lean_ctor_set(x_50, 5, x_43);
+lean_ctor_set(x_50, 6, x_45);
+lean_ctor_set(x_50, 7, x_46);
+lean_ctor_set_uint8(x_50, sizeof(void*)*8, x_44);
+x_51 = lean_st_ref_set(x_2, x_50, x_37);
+x_52 = lean_ctor_get(x_51, 1);
+lean_inc(x_52);
+if (lean_is_exclusive(x_51)) {
+ lean_ctor_release(x_51, 0);
+ lean_ctor_release(x_51, 1);
+ x_53 = x_51;
+} else {
+ lean_dec_ref(x_51);
+ x_53 = lean_box(0);
+}
+x_54 = lean_box(0);
+if (lean_is_scalar(x_53)) {
+ x_55 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_55 = x_53;
+}
+lean_ctor_set(x_55, 0, x_54);
+lean_ctor_set(x_55, 1, x_52);
+return x_55;
+}
+else
+{
+lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; 
+x_56 = lean_ctor_get(x_47, 0);
+lean_inc(x_56);
+lean_dec(x_47);
+lean_ctor_set_tag(x_12, 1);
+lean_ctor_set(x_12, 1, x_56);
+lean_ctor_set(x_12, 0, x_1);
+x_57 = l_Lean_PersistentHashMap_insert___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__4(x_42, x_11, x_12);
+x_58 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_58, 0, x_38);
+lean_ctor_set(x_58, 1, x_39);
+lean_ctor_set(x_58, 2, x_40);
+lean_ctor_set(x_58, 3, x_41);
+lean_ctor_set(x_58, 4, x_57);
+lean_ctor_set(x_58, 5, x_43);
+lean_ctor_set(x_58, 6, x_45);
+lean_ctor_set(x_58, 7, x_46);
+lean_ctor_set_uint8(x_58, sizeof(void*)*8, x_44);
+x_59 = lean_st_ref_set(x_2, x_58, x_37);
+x_60 = lean_ctor_get(x_59, 1);
+lean_inc(x_60);
+if (lean_is_exclusive(x_59)) {
+ lean_ctor_release(x_59, 0);
+ lean_ctor_release(x_59, 1);
+ x_61 = x_59;
+} else {
+ lean_dec_ref(x_59);
+ x_61 = lean_box(0);
+}
+x_62 = lean_box(0);
+if (lean_is_scalar(x_61)) {
+ x_63 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_63 = x_61;
+}
+lean_ctor_set(x_63, 0, x_62);
+lean_ctor_set(x_63, 1, x_60);
+return x_63;
+}
+}
+}
+else
+{
+lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; uint8_t x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; 
+x_64 = lean_ctor_get(x_12, 0);
+x_65 = lean_ctor_get(x_12, 1);
+lean_inc(x_65);
+lean_inc(x_64);
+lean_dec(x_12);
+x_66 = lean_ctor_get(x_64, 0);
+lean_inc(x_66);
+x_67 = lean_ctor_get(x_64, 1);
+lean_inc(x_67);
+x_68 = lean_ctor_get(x_64, 2);
+lean_inc(x_68);
+x_69 = lean_ctor_get(x_64, 3);
+lean_inc(x_69);
+x_70 = lean_ctor_get(x_64, 4);
+lean_inc(x_70);
+x_71 = lean_ctor_get(x_64, 5);
+lean_inc(x_71);
+x_72 = lean_ctor_get_uint8(x_64, sizeof(void*)*8);
+x_73 = lean_ctor_get(x_64, 6);
+lean_inc(x_73);
+x_74 = lean_ctor_get(x_64, 7);
+lean_inc(x_74);
+if (lean_is_exclusive(x_64)) {
+ lean_ctor_release(x_64, 0);
+ lean_ctor_release(x_64, 1);
+ lean_ctor_release(x_64, 2);
+ lean_ctor_release(x_64, 3);
+ lean_ctor_release(x_64, 4);
+ lean_ctor_release(x_64, 5);
+ lean_ctor_release(x_64, 6);
+ lean_ctor_release(x_64, 7);
+ x_75 = x_64;
+} else {
+ lean_dec_ref(x_64);
+ x_75 = lean_box(0);
+}
+lean_inc(x_70);
+x_76 = l_Lean_PersistentHashMap_find_x3f___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__1(x_70, x_11);
+if (lean_obj_tag(x_76) == 0)
+{
+lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; 
+x_77 = lean_box(0);
+x_78 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_78, 0, x_1);
+lean_ctor_set(x_78, 1, x_77);
+x_79 = l_Lean_PersistentHashMap_insert___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__4(x_70, x_11, x_78);
+if (lean_is_scalar(x_75)) {
+ x_80 = lean_alloc_ctor(0, 8, 1);
+} else {
+ x_80 = x_75;
+}
+lean_ctor_set(x_80, 0, x_66);
+lean_ctor_set(x_80, 1, x_67);
+lean_ctor_set(x_80, 2, x_68);
+lean_ctor_set(x_80, 3, x_69);
+lean_ctor_set(x_80, 4, x_79);
+lean_ctor_set(x_80, 5, x_71);
+lean_ctor_set(x_80, 6, x_73);
+lean_ctor_set(x_80, 7, x_74);
+lean_ctor_set_uint8(x_80, sizeof(void*)*8, x_72);
+x_81 = lean_st_ref_set(x_2, x_80, x_65);
+x_82 = lean_ctor_get(x_81, 1);
+lean_inc(x_82);
+if (lean_is_exclusive(x_81)) {
+ lean_ctor_release(x_81, 0);
+ lean_ctor_release(x_81, 1);
+ x_83 = x_81;
+} else {
+ lean_dec_ref(x_81);
+ x_83 = lean_box(0);
+}
+x_84 = lean_box(0);
+if (lean_is_scalar(x_83)) {
+ x_85 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_85 = x_83;
+}
+lean_ctor_set(x_85, 0, x_84);
+lean_ctor_set(x_85, 1, x_82);
+return x_85;
+}
+else
+{
+lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; 
+x_86 = lean_ctor_get(x_76, 0);
+lean_inc(x_86);
+lean_dec(x_76);
+x_87 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_87, 0, x_1);
+lean_ctor_set(x_87, 1, x_86);
+x_88 = l_Lean_PersistentHashMap_insert___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__4(x_70, x_11, x_87);
+if (lean_is_scalar(x_75)) {
+ x_89 = lean_alloc_ctor(0, 8, 1);
+} else {
+ x_89 = x_75;
+}
+lean_ctor_set(x_89, 0, x_66);
+lean_ctor_set(x_89, 1, x_67);
+lean_ctor_set(x_89, 2, x_68);
+lean_ctor_set(x_89, 3, x_69);
+lean_ctor_set(x_89, 4, x_88);
+lean_ctor_set(x_89, 5, x_71);
+lean_ctor_set(x_89, 6, x_73);
+lean_ctor_set(x_89, 7, x_74);
+lean_ctor_set_uint8(x_89, sizeof(void*)*8, x_72);
+x_90 = lean_st_ref_set(x_2, x_89, x_65);
+x_91 = lean_ctor_get(x_90, 1);
+lean_inc(x_91);
+if (lean_is_exclusive(x_90)) {
+ lean_ctor_release(x_90, 0);
+ lean_ctor_release(x_90, 1);
+ x_92 = x_90;
+} else {
+ lean_dec_ref(x_90);
+ x_92 = lean_box(0);
+}
+x_93 = lean_box(0);
+if (lean_is_scalar(x_92)) {
+ x_94 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_94 = x_92;
+}
+lean_ctor_set(x_94, 0, x_93);
+lean_ctor_set(x_94, 1, x_91);
+return x_94;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAtAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
+_start:
+{
+lean_object* x_6; 
+x_6 = l_Lean_PersistentHashMap_findAtAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__3(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;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
+_start:
+{
+size_t x_4; lean_object* x_5; 
+x_4 = lean_unbox_usize(x_2);
+lean_dec(x_2);
+x_5 = l_Lean_PersistentHashMap_findAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__2(x_1, x_4, x_3);
+lean_dec(x_3);
+return x_5;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_find_x3f___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__1___boxed(lean_object* x_1, lean_object* x_2) {
+_start:
+{
+lean_object* x_3; 
+x_3 = l_Lean_PersistentHashMap_find_x3f___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__1(x_1, x_2);
+lean_dec(x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__6___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) {
+_start:
+{
+size_t x_7; lean_object* x_8; 
+x_7 = lean_unbox_usize(x_1);
+lean_dec(x_1);
+x_8 = l_Lean_PersistentHashMap_insertAux_traverse___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__6(x_7, x_2, x_3, x_4, x_5, x_6);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_8;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__5___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
+_start:
+{
+size_t x_6; size_t x_7; lean_object* x_8; 
+x_6 = lean_unbox_usize(x_2);
+lean_dec(x_2);
+x_7 = lean_unbox_usize(x_3);
+lean_dec(x_3);
+x_8 = l_Lean_PersistentHashMap_insertAux___at___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___spec__5(x_1, x_6, x_7, x_4, x_5);
+return x_8;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_11;
+}
+}
+static lean_object* _init_l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_instMonadMetaM;
+x_2 = l_ReaderT_instMonad___rarg(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__1;
+x_2 = l_ReaderT_instMonad___rarg(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__2;
+x_2 = l_ReaderT_instMonad___rarg(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__3;
+x_2 = l_ReaderT_instMonad___rarg(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__4;
+x_2 = l_instInhabitedPUnit;
+x_3 = l_instInhabitedOfMonad___rarg(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_panic___at_Lean_Meta_Grind_internalize___spec__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:
+{
+lean_object* x_11; lean_object* x_12; lean_object* x_13; 
+x_11 = l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__5;
+x_12 = lean_panic_fn(x_11, x_1);
+x_13 = lean_apply_9(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at_Lean_Meta_Grind_internalize___spec__2(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18) {
+_start:
+{
+lean_object* x_19; uint8_t x_20; 
+x_19 = lean_ctor_get(x_5, 1);
+x_20 = lean_nat_dec_lt(x_7, x_19);
+if (x_20 == 0)
+{
+lean_object* x_21; 
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_7);
+lean_dec(x_2);
+lean_dec(x_1);
+x_21 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_21, 0, x_6);
+lean_ctor_set(x_21, 1, x_18);
+return x_21;
+}
+else
+{
+lean_object* x_22; lean_object* x_23; 
+lean_dec(x_6);
+x_22 = lean_array_fget(x_3, x_7);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_2);
+lean_inc(x_22);
+x_23 = l_Lean_Meta_Grind_internalize(x_22, x_2, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18);
+if (lean_obj_tag(x_23) == 0)
+{
+lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_24 = lean_ctor_get(x_23, 1);
+lean_inc(x_24);
+lean_dec(x_23);
+lean_inc(x_1);
+x_25 = l_Lean_Meta_Grind_registerParent(x_1, x_22, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_24);
+lean_dec(x_22);
+x_26 = lean_ctor_get(x_25, 1);
+lean_inc(x_26);
+lean_dec(x_25);
+x_27 = lean_ctor_get(x_5, 2);
+x_28 = lean_nat_add(x_7, x_27);
+lean_dec(x_7);
+x_29 = lean_box(0);
+x_6 = x_29;
+x_7 = x_28;
+x_8 = lean_box(0);
+x_9 = lean_box(0);
+x_18 = x_26;
+goto _start;
+}
+else
+{
+uint8_t x_31; 
+lean_dec(x_22);
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_7);
+lean_dec(x_2);
+lean_dec(x_1);
+x_31 = !lean_is_exclusive(x_23);
+if (x_31 == 0)
+{
+return x_23;
+}
+else
+{
+lean_object* x_32; lean_object* x_33; lean_object* x_34; 
+x_32 = lean_ctor_get(x_23, 0);
+x_33 = lean_ctor_get(x_23, 1);
+lean_inc(x_33);
+lean_inc(x_32);
+lean_dec(x_23);
+x_34 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_34, 0, x_32);
+lean_ctor_set(x_34, 1, x_33);
+return x_34;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_1);
+x_13 = l_Lean_Meta_Grind_mkENode(x_1, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
+{
+lean_object* x_14; lean_object* x_15; 
+x_14 = lean_ctor_get(x_13, 1);
+lean_inc(x_14);
+lean_dec(x_13);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_1);
+x_15 = l_Lean_Meta_Grind_addCongrTable(x_1, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_14);
+if (lean_obj_tag(x_15) == 0)
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_16 = lean_ctor_get(x_15, 1);
+lean_inc(x_16);
+lean_dec(x_15);
+lean_inc(x_1);
+x_17 = l___private_Lean_Meta_Tactic_Grind_Internalize_0__Lean_Meta_Grind_updateAppMap(x_1, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_16);
+x_18 = lean_ctor_get(x_17, 1);
+lean_inc(x_18);
+lean_dec(x_17);
+x_19 = l_Lean_Meta_Grind_propagateUp(x_1, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_18);
+return x_19;
+}
+else
+{
+uint8_t x_20; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_1);
+x_20 = !lean_is_exclusive(x_15);
+if (x_20 == 0)
+{
+return x_15;
+}
+else
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; 
+x_21 = lean_ctor_get(x_15, 0);
+x_22 = lean_ctor_get(x_15, 1);
+lean_inc(x_22);
+lean_inc(x_21);
+lean_dec(x_15);
+x_23 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_23, 0, x_21);
+lean_ctor_set(x_23, 1, x_22);
+return x_23;
+}
+}
+}
+else
+{
+uint8_t x_24; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_1);
+x_24 = !lean_is_exclusive(x_13);
+if (x_24 == 0)
+{
+return x_13;
+}
+else
+{
+lean_object* x_25; lean_object* x_26; lean_object* x_27; 
+x_25 = lean_ctor_get(x_13, 0);
+x_26 = lean_ctor_get(x_13, 1);
+lean_inc(x_26);
+lean_inc(x_25);
+lean_dec(x_13);
+x_27 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_27, 0, x_25);
+lean_ctor_set(x_27, 1, x_26);
+return x_27;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_15 = lean_array_get_size(x_1);
+x_16 = lean_unsigned_to_nat(0u);
+x_17 = lean_unsigned_to_nat(1u);
+x_18 = lean_alloc_ctor(0, 3, 0);
+lean_ctor_set(x_18, 0, x_16);
+lean_ctor_set(x_18, 1, x_15);
+lean_ctor_set(x_18, 2, x_17);
+x_19 = lean_box(0);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+x_20 = l_Std_Range_forIn_x27_loop___at_Lean_Meta_Grind_internalize___spec__2(x_2, x_3, x_1, x_18, x_18, x_19, x_16, lean_box(0), lean_box(0), x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_18);
+if (lean_obj_tag(x_20) == 0)
+{
+lean_object* x_21; lean_object* x_22; 
+x_21 = lean_ctor_get(x_20, 1);
+lean_inc(x_21);
+lean_dec(x_20);
+x_22 = lean_apply_10(x_4, x_19, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_21);
+return x_22;
+}
+else
+{
+uint8_t x_23; 
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+x_23 = !lean_is_exclusive(x_20);
+if (x_23 == 0)
+{
+return x_20;
+}
+else
+{
+lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+x_24 = lean_ctor_get(x_20, 0);
+x_25 = lean_ctor_get(x_20, 1);
+lean_inc(x_25);
+lean_inc(x_24);
+lean_dec(x_20);
+x_26 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_26, 0, x_24);
+lean_ctor_set(x_26, 1, x_25);
+return x_26;
+}
+}
+}
+}
+static lean_object* _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Lean", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Grind", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("nestedProof", 11, 11);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__1;
+x_2 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__2;
+x_3 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__3;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+switch (lean_obj_tag(x_3)) {
+case 0:
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_31; uint8_t x_32; 
+lean_dec(x_5);
+lean_inc(x_2);
+lean_inc(x_1);
+x_15 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1___boxed), 12, 2);
+lean_closure_set(x_15, 0, x_1);
+lean_closure_set(x_15, 1, x_2);
+x_31 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4;
+x_32 = l_Lean_Expr_isConstOf(x_3, x_31);
+if (x_32 == 0)
+{
+lean_object* x_33; 
+x_33 = lean_box(0);
+x_16 = x_33;
+goto block_30;
+}
+else
+{
+lean_object* x_34; lean_object* x_35; uint8_t x_36; 
+x_34 = lean_array_get_size(x_4);
+x_35 = lean_unsigned_to_nat(2u);
+x_36 = lean_nat_dec_eq(x_34, x_35);
+if (x_36 == 0)
+{
+lean_object* x_37; 
+lean_dec(x_34);
+x_37 = lean_box(0);
+x_16 = x_37;
+goto block_30;
+}
+else
+{
+lean_object* x_38; uint8_t x_39; 
+lean_dec(x_15);
+lean_dec(x_3);
+x_38 = lean_unsigned_to_nat(0u);
+x_39 = lean_nat_dec_lt(x_38, x_34);
+lean_dec(x_34);
+if (x_39 == 0)
+{
+lean_object* x_40; lean_object* x_41; lean_object* x_42; 
+lean_dec(x_4);
+x_40 = l_Lean_instInhabitedExpr;
+x_41 = l_outOfBounds___rarg(x_40);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_41);
+x_42 = l_Lean_Meta_Grind_internalize(x_41, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_42) == 0)
+{
+lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; 
+x_43 = lean_ctor_get(x_42, 1);
+lean_inc(x_43);
+lean_dec(x_42);
+lean_inc(x_1);
+x_44 = l_Lean_Meta_Grind_registerParent(x_1, x_41, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_43);
+lean_dec(x_41);
+x_45 = lean_ctor_get(x_44, 0);
+lean_inc(x_45);
+x_46 = lean_ctor_get(x_44, 1);
+lean_inc(x_46);
+lean_dec(x_44);
+x_47 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_45, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_46);
+lean_dec(x_45);
+return x_47;
+}
+else
+{
+uint8_t x_48; 
+lean_dec(x_41);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_48 = !lean_is_exclusive(x_42);
+if (x_48 == 0)
+{
+return x_42;
+}
+else
+{
+lean_object* x_49; lean_object* x_50; lean_object* x_51; 
+x_49 = lean_ctor_get(x_42, 0);
+x_50 = lean_ctor_get(x_42, 1);
+lean_inc(x_50);
+lean_inc(x_49);
+lean_dec(x_42);
+x_51 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_51, 0, x_49);
+lean_ctor_set(x_51, 1, x_50);
+return x_51;
+}
+}
+}
+else
+{
+lean_object* x_52; lean_object* x_53; 
+x_52 = lean_array_fget(x_4, x_38);
+lean_dec(x_4);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_52);
+x_53 = l_Lean_Meta_Grind_internalize(x_52, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_53) == 0)
+{
+lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+x_54 = lean_ctor_get(x_53, 1);
+lean_inc(x_54);
+lean_dec(x_53);
+lean_inc(x_1);
+x_55 = l_Lean_Meta_Grind_registerParent(x_1, x_52, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_54);
+lean_dec(x_52);
+x_56 = lean_ctor_get(x_55, 0);
+lean_inc(x_56);
+x_57 = lean_ctor_get(x_55, 1);
+lean_inc(x_57);
+lean_dec(x_55);
+x_58 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_56, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_57);
+lean_dec(x_56);
+return x_58;
+}
+else
+{
+uint8_t x_59; 
+lean_dec(x_52);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_59 = !lean_is_exclusive(x_53);
+if (x_59 == 0)
+{
+return x_53;
+}
+else
+{
+lean_object* x_60; lean_object* x_61; lean_object* x_62; 
+x_60 = lean_ctor_get(x_53, 0);
+x_61 = lean_ctor_get(x_53, 1);
+lean_inc(x_61);
+lean_inc(x_60);
+lean_dec(x_53);
+x_62 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_62, 0, x_60);
+lean_ctor_set(x_62, 1, x_61);
+return x_62;
+}
+}
+}
+}
+}
+block_30:
+{
+uint8_t x_17; 
+lean_dec(x_16);
+x_17 = l_Lean_Expr_isConst(x_3);
+if (x_17 == 0)
+{
+lean_object* x_18; 
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_3);
+x_18 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_18) == 0)
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; 
+x_19 = lean_ctor_get(x_18, 1);
+lean_inc(x_19);
+lean_dec(x_18);
+lean_inc(x_1);
+x_20 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_19);
+lean_dec(x_3);
+x_21 = lean_ctor_get(x_20, 0);
+lean_inc(x_21);
+x_22 = lean_ctor_get(x_20, 1);
+lean_inc(x_22);
+lean_dec(x_20);
+x_23 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_15, x_21, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_22);
+lean_dec(x_21);
+lean_dec(x_4);
+return x_23;
+}
+else
+{
+uint8_t x_24; 
+lean_dec(x_15);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_24 = !lean_is_exclusive(x_18);
+if (x_24 == 0)
+{
+return x_18;
+}
+else
+{
+lean_object* x_25; lean_object* x_26; lean_object* x_27; 
+x_25 = lean_ctor_get(x_18, 0);
+x_26 = lean_ctor_get(x_18, 1);
+lean_inc(x_26);
+lean_inc(x_25);
+lean_dec(x_18);
+x_27 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_27, 0, x_25);
+lean_ctor_set(x_27, 1, x_26);
+return x_27;
+}
+}
+}
+else
+{
+lean_object* x_28; lean_object* x_29; 
+lean_dec(x_3);
+x_28 = lean_box(0);
+x_29 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_15, x_28, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_4);
+return x_29;
+}
+}
+}
+case 1:
+{
+lean_object* x_63; lean_object* x_64; lean_object* x_79; uint8_t x_80; 
+lean_dec(x_5);
+lean_inc(x_2);
+lean_inc(x_1);
+x_63 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1___boxed), 12, 2);
+lean_closure_set(x_63, 0, x_1);
+lean_closure_set(x_63, 1, x_2);
+x_79 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4;
+x_80 = l_Lean_Expr_isConstOf(x_3, x_79);
+if (x_80 == 0)
+{
+lean_object* x_81; 
+x_81 = lean_box(0);
+x_64 = x_81;
+goto block_78;
+}
+else
+{
+lean_object* x_82; lean_object* x_83; uint8_t x_84; 
+x_82 = lean_array_get_size(x_4);
+x_83 = lean_unsigned_to_nat(2u);
+x_84 = lean_nat_dec_eq(x_82, x_83);
+if (x_84 == 0)
+{
+lean_object* x_85; 
+lean_dec(x_82);
+x_85 = lean_box(0);
+x_64 = x_85;
+goto block_78;
+}
+else
+{
+lean_object* x_86; uint8_t x_87; 
+lean_dec(x_63);
+lean_dec(x_3);
+x_86 = lean_unsigned_to_nat(0u);
+x_87 = lean_nat_dec_lt(x_86, x_82);
+lean_dec(x_82);
+if (x_87 == 0)
+{
+lean_object* x_88; lean_object* x_89; lean_object* x_90; 
+lean_dec(x_4);
+x_88 = l_Lean_instInhabitedExpr;
+x_89 = l_outOfBounds___rarg(x_88);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_89);
+x_90 = l_Lean_Meta_Grind_internalize(x_89, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_90) == 0)
+{
+lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; lean_object* x_95; 
+x_91 = lean_ctor_get(x_90, 1);
+lean_inc(x_91);
+lean_dec(x_90);
+lean_inc(x_1);
+x_92 = l_Lean_Meta_Grind_registerParent(x_1, x_89, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_91);
+lean_dec(x_89);
+x_93 = lean_ctor_get(x_92, 0);
+lean_inc(x_93);
+x_94 = lean_ctor_get(x_92, 1);
+lean_inc(x_94);
+lean_dec(x_92);
+x_95 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_93, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_94);
+lean_dec(x_93);
+return x_95;
+}
+else
+{
+uint8_t x_96; 
+lean_dec(x_89);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_96 = !lean_is_exclusive(x_90);
+if (x_96 == 0)
+{
+return x_90;
+}
+else
+{
+lean_object* x_97; lean_object* x_98; lean_object* x_99; 
+x_97 = lean_ctor_get(x_90, 0);
+x_98 = lean_ctor_get(x_90, 1);
+lean_inc(x_98);
+lean_inc(x_97);
+lean_dec(x_90);
+x_99 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_99, 0, x_97);
+lean_ctor_set(x_99, 1, x_98);
+return x_99;
+}
+}
+}
+else
+{
+lean_object* x_100; lean_object* x_101; 
+x_100 = lean_array_fget(x_4, x_86);
+lean_dec(x_4);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_100);
+x_101 = l_Lean_Meta_Grind_internalize(x_100, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_101) == 0)
+{
+lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; lean_object* x_106; 
+x_102 = lean_ctor_get(x_101, 1);
+lean_inc(x_102);
+lean_dec(x_101);
+lean_inc(x_1);
+x_103 = l_Lean_Meta_Grind_registerParent(x_1, x_100, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_102);
+lean_dec(x_100);
+x_104 = lean_ctor_get(x_103, 0);
+lean_inc(x_104);
+x_105 = lean_ctor_get(x_103, 1);
+lean_inc(x_105);
+lean_dec(x_103);
+x_106 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_104, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_105);
+lean_dec(x_104);
+return x_106;
+}
+else
+{
+uint8_t x_107; 
+lean_dec(x_100);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_107 = !lean_is_exclusive(x_101);
+if (x_107 == 0)
+{
+return x_101;
+}
+else
+{
+lean_object* x_108; lean_object* x_109; lean_object* x_110; 
+x_108 = lean_ctor_get(x_101, 0);
+x_109 = lean_ctor_get(x_101, 1);
+lean_inc(x_109);
+lean_inc(x_108);
+lean_dec(x_101);
+x_110 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_110, 0, x_108);
+lean_ctor_set(x_110, 1, x_109);
+return x_110;
+}
+}
+}
+}
+}
+block_78:
+{
+uint8_t x_65; 
+lean_dec(x_64);
+x_65 = l_Lean_Expr_isConst(x_3);
+if (x_65 == 0)
+{
+lean_object* x_66; 
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_3);
+x_66 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_66) == 0)
+{
+lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; 
+x_67 = lean_ctor_get(x_66, 1);
+lean_inc(x_67);
+lean_dec(x_66);
+lean_inc(x_1);
+x_68 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_67);
+lean_dec(x_3);
+x_69 = lean_ctor_get(x_68, 0);
+lean_inc(x_69);
+x_70 = lean_ctor_get(x_68, 1);
+lean_inc(x_70);
+lean_dec(x_68);
+x_71 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_63, x_69, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_70);
+lean_dec(x_69);
+lean_dec(x_4);
+return x_71;
+}
+else
+{
+uint8_t x_72; 
+lean_dec(x_63);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_72 = !lean_is_exclusive(x_66);
+if (x_72 == 0)
+{
+return x_66;
+}
+else
+{
+lean_object* x_73; lean_object* x_74; lean_object* x_75; 
+x_73 = lean_ctor_get(x_66, 0);
+x_74 = lean_ctor_get(x_66, 1);
+lean_inc(x_74);
+lean_inc(x_73);
+lean_dec(x_66);
+x_75 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_75, 0, x_73);
+lean_ctor_set(x_75, 1, x_74);
+return x_75;
+}
+}
+}
+else
+{
+lean_object* x_76; lean_object* x_77; 
+lean_dec(x_3);
+x_76 = lean_box(0);
+x_77 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_63, x_76, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_4);
+return x_77;
+}
+}
+}
+case 2:
+{
+lean_object* x_111; lean_object* x_112; lean_object* x_127; uint8_t x_128; 
+lean_dec(x_5);
+lean_inc(x_2);
+lean_inc(x_1);
+x_111 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1___boxed), 12, 2);
+lean_closure_set(x_111, 0, x_1);
+lean_closure_set(x_111, 1, x_2);
+x_127 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4;
+x_128 = l_Lean_Expr_isConstOf(x_3, x_127);
+if (x_128 == 0)
+{
+lean_object* x_129; 
+x_129 = lean_box(0);
+x_112 = x_129;
+goto block_126;
+}
+else
+{
+lean_object* x_130; lean_object* x_131; uint8_t x_132; 
+x_130 = lean_array_get_size(x_4);
+x_131 = lean_unsigned_to_nat(2u);
+x_132 = lean_nat_dec_eq(x_130, x_131);
+if (x_132 == 0)
+{
+lean_object* x_133; 
+lean_dec(x_130);
+x_133 = lean_box(0);
+x_112 = x_133;
+goto block_126;
+}
+else
+{
+lean_object* x_134; uint8_t x_135; 
+lean_dec(x_111);
+lean_dec(x_3);
+x_134 = lean_unsigned_to_nat(0u);
+x_135 = lean_nat_dec_lt(x_134, x_130);
+lean_dec(x_130);
+if (x_135 == 0)
+{
+lean_object* x_136; lean_object* x_137; lean_object* x_138; 
+lean_dec(x_4);
+x_136 = l_Lean_instInhabitedExpr;
+x_137 = l_outOfBounds___rarg(x_136);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_137);
+x_138 = l_Lean_Meta_Grind_internalize(x_137, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_138) == 0)
+{
+lean_object* x_139; lean_object* x_140; lean_object* x_141; lean_object* x_142; lean_object* x_143; 
+x_139 = lean_ctor_get(x_138, 1);
+lean_inc(x_139);
+lean_dec(x_138);
+lean_inc(x_1);
+x_140 = l_Lean_Meta_Grind_registerParent(x_1, x_137, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_139);
+lean_dec(x_137);
+x_141 = lean_ctor_get(x_140, 0);
+lean_inc(x_141);
+x_142 = lean_ctor_get(x_140, 1);
+lean_inc(x_142);
+lean_dec(x_140);
+x_143 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_141, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_142);
+lean_dec(x_141);
+return x_143;
+}
+else
+{
+uint8_t x_144; 
+lean_dec(x_137);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_144 = !lean_is_exclusive(x_138);
+if (x_144 == 0)
+{
+return x_138;
+}
+else
+{
+lean_object* x_145; lean_object* x_146; lean_object* x_147; 
+x_145 = lean_ctor_get(x_138, 0);
+x_146 = lean_ctor_get(x_138, 1);
+lean_inc(x_146);
+lean_inc(x_145);
+lean_dec(x_138);
+x_147 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_147, 0, x_145);
+lean_ctor_set(x_147, 1, x_146);
+return x_147;
+}
+}
+}
+else
+{
+lean_object* x_148; lean_object* x_149; 
+x_148 = lean_array_fget(x_4, x_134);
+lean_dec(x_4);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_148);
+x_149 = l_Lean_Meta_Grind_internalize(x_148, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_149) == 0)
+{
+lean_object* x_150; lean_object* x_151; lean_object* x_152; lean_object* x_153; lean_object* x_154; 
+x_150 = lean_ctor_get(x_149, 1);
+lean_inc(x_150);
+lean_dec(x_149);
+lean_inc(x_1);
+x_151 = l_Lean_Meta_Grind_registerParent(x_1, x_148, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_150);
+lean_dec(x_148);
+x_152 = lean_ctor_get(x_151, 0);
+lean_inc(x_152);
+x_153 = lean_ctor_get(x_151, 1);
+lean_inc(x_153);
+lean_dec(x_151);
+x_154 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_152, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_153);
+lean_dec(x_152);
+return x_154;
+}
+else
+{
+uint8_t x_155; 
+lean_dec(x_148);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_155 = !lean_is_exclusive(x_149);
+if (x_155 == 0)
+{
+return x_149;
+}
+else
+{
+lean_object* x_156; lean_object* x_157; lean_object* x_158; 
+x_156 = lean_ctor_get(x_149, 0);
+x_157 = lean_ctor_get(x_149, 1);
+lean_inc(x_157);
+lean_inc(x_156);
+lean_dec(x_149);
+x_158 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_158, 0, x_156);
+lean_ctor_set(x_158, 1, x_157);
+return x_158;
+}
+}
+}
+}
+}
+block_126:
+{
+uint8_t x_113; 
+lean_dec(x_112);
+x_113 = l_Lean_Expr_isConst(x_3);
+if (x_113 == 0)
+{
+lean_object* x_114; 
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_3);
+x_114 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_114) == 0)
+{
+lean_object* x_115; lean_object* x_116; lean_object* x_117; lean_object* x_118; lean_object* x_119; 
+x_115 = lean_ctor_get(x_114, 1);
+lean_inc(x_115);
+lean_dec(x_114);
+lean_inc(x_1);
+x_116 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_115);
+lean_dec(x_3);
+x_117 = lean_ctor_get(x_116, 0);
+lean_inc(x_117);
+x_118 = lean_ctor_get(x_116, 1);
+lean_inc(x_118);
+lean_dec(x_116);
+x_119 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_111, x_117, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_118);
+lean_dec(x_117);
+lean_dec(x_4);
+return x_119;
+}
+else
+{
+uint8_t x_120; 
+lean_dec(x_111);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_120 = !lean_is_exclusive(x_114);
+if (x_120 == 0)
+{
+return x_114;
+}
+else
+{
+lean_object* x_121; lean_object* x_122; lean_object* x_123; 
+x_121 = lean_ctor_get(x_114, 0);
+x_122 = lean_ctor_get(x_114, 1);
+lean_inc(x_122);
+lean_inc(x_121);
+lean_dec(x_114);
+x_123 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_123, 0, x_121);
+lean_ctor_set(x_123, 1, x_122);
+return x_123;
+}
+}
+}
+else
+{
+lean_object* x_124; lean_object* x_125; 
+lean_dec(x_3);
+x_124 = lean_box(0);
+x_125 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_111, x_124, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_4);
+return x_125;
+}
+}
+}
+case 3:
+{
+lean_object* x_159; lean_object* x_160; lean_object* x_175; uint8_t x_176; 
+lean_dec(x_5);
+lean_inc(x_2);
+lean_inc(x_1);
+x_159 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1___boxed), 12, 2);
+lean_closure_set(x_159, 0, x_1);
+lean_closure_set(x_159, 1, x_2);
+x_175 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4;
+x_176 = l_Lean_Expr_isConstOf(x_3, x_175);
+if (x_176 == 0)
+{
+lean_object* x_177; 
+x_177 = lean_box(0);
+x_160 = x_177;
+goto block_174;
+}
+else
+{
+lean_object* x_178; lean_object* x_179; uint8_t x_180; 
+x_178 = lean_array_get_size(x_4);
+x_179 = lean_unsigned_to_nat(2u);
+x_180 = lean_nat_dec_eq(x_178, x_179);
+if (x_180 == 0)
+{
+lean_object* x_181; 
+lean_dec(x_178);
+x_181 = lean_box(0);
+x_160 = x_181;
+goto block_174;
+}
+else
+{
+lean_object* x_182; uint8_t x_183; 
+lean_dec(x_159);
+lean_dec(x_3);
+x_182 = lean_unsigned_to_nat(0u);
+x_183 = lean_nat_dec_lt(x_182, x_178);
+lean_dec(x_178);
+if (x_183 == 0)
+{
+lean_object* x_184; lean_object* x_185; lean_object* x_186; 
+lean_dec(x_4);
+x_184 = l_Lean_instInhabitedExpr;
+x_185 = l_outOfBounds___rarg(x_184);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_185);
+x_186 = l_Lean_Meta_Grind_internalize(x_185, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_186) == 0)
+{
+lean_object* x_187; lean_object* x_188; lean_object* x_189; lean_object* x_190; lean_object* x_191; 
+x_187 = lean_ctor_get(x_186, 1);
+lean_inc(x_187);
+lean_dec(x_186);
+lean_inc(x_1);
+x_188 = l_Lean_Meta_Grind_registerParent(x_1, x_185, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_187);
+lean_dec(x_185);
+x_189 = lean_ctor_get(x_188, 0);
+lean_inc(x_189);
+x_190 = lean_ctor_get(x_188, 1);
+lean_inc(x_190);
+lean_dec(x_188);
+x_191 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_189, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_190);
+lean_dec(x_189);
+return x_191;
+}
+else
+{
+uint8_t x_192; 
+lean_dec(x_185);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_192 = !lean_is_exclusive(x_186);
+if (x_192 == 0)
+{
+return x_186;
+}
+else
+{
+lean_object* x_193; lean_object* x_194; lean_object* x_195; 
+x_193 = lean_ctor_get(x_186, 0);
+x_194 = lean_ctor_get(x_186, 1);
+lean_inc(x_194);
+lean_inc(x_193);
+lean_dec(x_186);
+x_195 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_195, 0, x_193);
+lean_ctor_set(x_195, 1, x_194);
+return x_195;
+}
+}
+}
+else
+{
+lean_object* x_196; lean_object* x_197; 
+x_196 = lean_array_fget(x_4, x_182);
+lean_dec(x_4);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_196);
+x_197 = l_Lean_Meta_Grind_internalize(x_196, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_197) == 0)
+{
+lean_object* x_198; lean_object* x_199; lean_object* x_200; lean_object* x_201; lean_object* x_202; 
+x_198 = lean_ctor_get(x_197, 1);
+lean_inc(x_198);
+lean_dec(x_197);
+lean_inc(x_1);
+x_199 = l_Lean_Meta_Grind_registerParent(x_1, x_196, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_198);
+lean_dec(x_196);
+x_200 = lean_ctor_get(x_199, 0);
+lean_inc(x_200);
+x_201 = lean_ctor_get(x_199, 1);
+lean_inc(x_201);
+lean_dec(x_199);
+x_202 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_200, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_201);
+lean_dec(x_200);
+return x_202;
+}
+else
+{
+uint8_t x_203; 
+lean_dec(x_196);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_203 = !lean_is_exclusive(x_197);
+if (x_203 == 0)
+{
+return x_197;
+}
+else
+{
+lean_object* x_204; lean_object* x_205; lean_object* x_206; 
+x_204 = lean_ctor_get(x_197, 0);
+x_205 = lean_ctor_get(x_197, 1);
+lean_inc(x_205);
+lean_inc(x_204);
+lean_dec(x_197);
+x_206 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_206, 0, x_204);
+lean_ctor_set(x_206, 1, x_205);
+return x_206;
+}
+}
+}
+}
+}
+block_174:
+{
+uint8_t x_161; 
+lean_dec(x_160);
+x_161 = l_Lean_Expr_isConst(x_3);
+if (x_161 == 0)
+{
+lean_object* x_162; 
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_3);
+x_162 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_162) == 0)
+{
+lean_object* x_163; lean_object* x_164; lean_object* x_165; lean_object* x_166; lean_object* x_167; 
+x_163 = lean_ctor_get(x_162, 1);
+lean_inc(x_163);
+lean_dec(x_162);
+lean_inc(x_1);
+x_164 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_163);
+lean_dec(x_3);
+x_165 = lean_ctor_get(x_164, 0);
+lean_inc(x_165);
+x_166 = lean_ctor_get(x_164, 1);
+lean_inc(x_166);
+lean_dec(x_164);
+x_167 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_159, x_165, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_166);
+lean_dec(x_165);
+lean_dec(x_4);
+return x_167;
+}
+else
+{
+uint8_t x_168; 
+lean_dec(x_159);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_168 = !lean_is_exclusive(x_162);
+if (x_168 == 0)
+{
+return x_162;
+}
+else
+{
+lean_object* x_169; lean_object* x_170; lean_object* x_171; 
+x_169 = lean_ctor_get(x_162, 0);
+x_170 = lean_ctor_get(x_162, 1);
+lean_inc(x_170);
+lean_inc(x_169);
+lean_dec(x_162);
+x_171 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_171, 0, x_169);
+lean_ctor_set(x_171, 1, x_170);
+return x_171;
+}
+}
+}
+else
+{
+lean_object* x_172; lean_object* x_173; 
+lean_dec(x_3);
+x_172 = lean_box(0);
+x_173 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_159, x_172, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_4);
+return x_173;
+}
+}
+}
+case 4:
+{
+lean_object* x_207; lean_object* x_208; lean_object* x_223; uint8_t x_224; 
+lean_dec(x_5);
+lean_inc(x_2);
+lean_inc(x_1);
+x_207 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1___boxed), 12, 2);
+lean_closure_set(x_207, 0, x_1);
+lean_closure_set(x_207, 1, x_2);
+x_223 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4;
+x_224 = l_Lean_Expr_isConstOf(x_3, x_223);
+if (x_224 == 0)
+{
+lean_object* x_225; 
+x_225 = lean_box(0);
+x_208 = x_225;
+goto block_222;
+}
+else
+{
+lean_object* x_226; lean_object* x_227; uint8_t x_228; 
+x_226 = lean_array_get_size(x_4);
+x_227 = lean_unsigned_to_nat(2u);
+x_228 = lean_nat_dec_eq(x_226, x_227);
+if (x_228 == 0)
+{
+lean_object* x_229; 
+lean_dec(x_226);
+x_229 = lean_box(0);
+x_208 = x_229;
+goto block_222;
+}
+else
+{
+lean_object* x_230; uint8_t x_231; 
+lean_dec(x_207);
+lean_dec(x_3);
+x_230 = lean_unsigned_to_nat(0u);
+x_231 = lean_nat_dec_lt(x_230, x_226);
+lean_dec(x_226);
+if (x_231 == 0)
+{
+lean_object* x_232; lean_object* x_233; lean_object* x_234; 
+lean_dec(x_4);
+x_232 = l_Lean_instInhabitedExpr;
+x_233 = l_outOfBounds___rarg(x_232);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_233);
+x_234 = l_Lean_Meta_Grind_internalize(x_233, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_234) == 0)
+{
+lean_object* x_235; lean_object* x_236; lean_object* x_237; lean_object* x_238; lean_object* x_239; 
+x_235 = lean_ctor_get(x_234, 1);
+lean_inc(x_235);
+lean_dec(x_234);
+lean_inc(x_1);
+x_236 = l_Lean_Meta_Grind_registerParent(x_1, x_233, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_235);
+lean_dec(x_233);
+x_237 = lean_ctor_get(x_236, 0);
+lean_inc(x_237);
+x_238 = lean_ctor_get(x_236, 1);
+lean_inc(x_238);
+lean_dec(x_236);
+x_239 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_237, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_238);
+lean_dec(x_237);
+return x_239;
+}
+else
+{
+uint8_t x_240; 
+lean_dec(x_233);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_240 = !lean_is_exclusive(x_234);
+if (x_240 == 0)
+{
+return x_234;
+}
+else
+{
+lean_object* x_241; lean_object* x_242; lean_object* x_243; 
+x_241 = lean_ctor_get(x_234, 0);
+x_242 = lean_ctor_get(x_234, 1);
+lean_inc(x_242);
+lean_inc(x_241);
+lean_dec(x_234);
+x_243 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_243, 0, x_241);
+lean_ctor_set(x_243, 1, x_242);
+return x_243;
+}
+}
+}
+else
+{
+lean_object* x_244; lean_object* x_245; 
+x_244 = lean_array_fget(x_4, x_230);
+lean_dec(x_4);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_244);
+x_245 = l_Lean_Meta_Grind_internalize(x_244, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_245) == 0)
+{
+lean_object* x_246; lean_object* x_247; lean_object* x_248; lean_object* x_249; lean_object* x_250; 
+x_246 = lean_ctor_get(x_245, 1);
+lean_inc(x_246);
+lean_dec(x_245);
+lean_inc(x_1);
+x_247 = l_Lean_Meta_Grind_registerParent(x_1, x_244, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_246);
+lean_dec(x_244);
+x_248 = lean_ctor_get(x_247, 0);
+lean_inc(x_248);
+x_249 = lean_ctor_get(x_247, 1);
+lean_inc(x_249);
+lean_dec(x_247);
+x_250 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_248, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_249);
+lean_dec(x_248);
+return x_250;
+}
+else
+{
+uint8_t x_251; 
+lean_dec(x_244);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_251 = !lean_is_exclusive(x_245);
+if (x_251 == 0)
+{
+return x_245;
+}
+else
+{
+lean_object* x_252; lean_object* x_253; lean_object* x_254; 
+x_252 = lean_ctor_get(x_245, 0);
+x_253 = lean_ctor_get(x_245, 1);
+lean_inc(x_253);
+lean_inc(x_252);
+lean_dec(x_245);
+x_254 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_254, 0, x_252);
+lean_ctor_set(x_254, 1, x_253);
+return x_254;
+}
+}
+}
+}
+}
+block_222:
+{
+uint8_t x_209; 
+lean_dec(x_208);
+x_209 = l_Lean_Expr_isConst(x_3);
+if (x_209 == 0)
+{
+lean_object* x_210; 
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_3);
+x_210 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_210) == 0)
+{
+lean_object* x_211; lean_object* x_212; lean_object* x_213; lean_object* x_214; lean_object* x_215; 
+x_211 = lean_ctor_get(x_210, 1);
+lean_inc(x_211);
+lean_dec(x_210);
+lean_inc(x_1);
+x_212 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_211);
+lean_dec(x_3);
+x_213 = lean_ctor_get(x_212, 0);
+lean_inc(x_213);
+x_214 = lean_ctor_get(x_212, 1);
+lean_inc(x_214);
+lean_dec(x_212);
+x_215 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_207, x_213, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_214);
+lean_dec(x_213);
+lean_dec(x_4);
+return x_215;
+}
+else
+{
+uint8_t x_216; 
+lean_dec(x_207);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_216 = !lean_is_exclusive(x_210);
+if (x_216 == 0)
+{
+return x_210;
+}
+else
+{
+lean_object* x_217; lean_object* x_218; lean_object* x_219; 
+x_217 = lean_ctor_get(x_210, 0);
+x_218 = lean_ctor_get(x_210, 1);
+lean_inc(x_218);
+lean_inc(x_217);
+lean_dec(x_210);
+x_219 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_219, 0, x_217);
+lean_ctor_set(x_219, 1, x_218);
+return x_219;
+}
+}
+}
+else
+{
+lean_object* x_220; lean_object* x_221; 
+lean_dec(x_3);
+x_220 = lean_box(0);
+x_221 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_207, x_220, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_4);
+return x_221;
+}
+}
+}
+case 5:
+{
+lean_object* x_255; lean_object* x_256; lean_object* x_257; lean_object* x_258; lean_object* x_259; 
+x_255 = lean_ctor_get(x_3, 0);
+lean_inc(x_255);
+x_256 = lean_ctor_get(x_3, 1);
+lean_inc(x_256);
+lean_dec(x_3);
+x_257 = lean_array_set(x_4, x_5, x_256);
+x_258 = lean_unsigned_to_nat(1u);
+x_259 = lean_nat_sub(x_5, x_258);
+lean_dec(x_5);
+x_3 = x_255;
+x_4 = x_257;
+x_5 = x_259;
+goto _start;
+}
+case 6:
+{
+lean_object* x_261; lean_object* x_262; lean_object* x_277; uint8_t x_278; 
+lean_dec(x_5);
+lean_inc(x_2);
+lean_inc(x_1);
+x_261 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1___boxed), 12, 2);
+lean_closure_set(x_261, 0, x_1);
+lean_closure_set(x_261, 1, x_2);
+x_277 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4;
+x_278 = l_Lean_Expr_isConstOf(x_3, x_277);
+if (x_278 == 0)
+{
+lean_object* x_279; 
+x_279 = lean_box(0);
+x_262 = x_279;
+goto block_276;
+}
+else
+{
+lean_object* x_280; lean_object* x_281; uint8_t x_282; 
+x_280 = lean_array_get_size(x_4);
+x_281 = lean_unsigned_to_nat(2u);
+x_282 = lean_nat_dec_eq(x_280, x_281);
+if (x_282 == 0)
+{
+lean_object* x_283; 
+lean_dec(x_280);
+x_283 = lean_box(0);
+x_262 = x_283;
+goto block_276;
+}
+else
+{
+lean_object* x_284; uint8_t x_285; 
+lean_dec(x_261);
+lean_dec(x_3);
+x_284 = lean_unsigned_to_nat(0u);
+x_285 = lean_nat_dec_lt(x_284, x_280);
+lean_dec(x_280);
+if (x_285 == 0)
+{
+lean_object* x_286; lean_object* x_287; lean_object* x_288; 
+lean_dec(x_4);
+x_286 = l_Lean_instInhabitedExpr;
+x_287 = l_outOfBounds___rarg(x_286);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_287);
+x_288 = l_Lean_Meta_Grind_internalize(x_287, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_288) == 0)
+{
+lean_object* x_289; lean_object* x_290; lean_object* x_291; lean_object* x_292; lean_object* x_293; 
+x_289 = lean_ctor_get(x_288, 1);
+lean_inc(x_289);
+lean_dec(x_288);
+lean_inc(x_1);
+x_290 = l_Lean_Meta_Grind_registerParent(x_1, x_287, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_289);
+lean_dec(x_287);
+x_291 = lean_ctor_get(x_290, 0);
+lean_inc(x_291);
+x_292 = lean_ctor_get(x_290, 1);
+lean_inc(x_292);
+lean_dec(x_290);
+x_293 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_291, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_292);
+lean_dec(x_291);
+return x_293;
+}
+else
+{
+uint8_t x_294; 
+lean_dec(x_287);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_294 = !lean_is_exclusive(x_288);
+if (x_294 == 0)
+{
+return x_288;
+}
+else
+{
+lean_object* x_295; lean_object* x_296; lean_object* x_297; 
+x_295 = lean_ctor_get(x_288, 0);
+x_296 = lean_ctor_get(x_288, 1);
+lean_inc(x_296);
+lean_inc(x_295);
+lean_dec(x_288);
+x_297 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_297, 0, x_295);
+lean_ctor_set(x_297, 1, x_296);
+return x_297;
+}
+}
+}
+else
+{
+lean_object* x_298; lean_object* x_299; 
+x_298 = lean_array_fget(x_4, x_284);
+lean_dec(x_4);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_298);
+x_299 = l_Lean_Meta_Grind_internalize(x_298, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_299) == 0)
+{
+lean_object* x_300; lean_object* x_301; lean_object* x_302; lean_object* x_303; lean_object* x_304; 
+x_300 = lean_ctor_get(x_299, 1);
+lean_inc(x_300);
+lean_dec(x_299);
+lean_inc(x_1);
+x_301 = l_Lean_Meta_Grind_registerParent(x_1, x_298, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_300);
+lean_dec(x_298);
+x_302 = lean_ctor_get(x_301, 0);
+lean_inc(x_302);
+x_303 = lean_ctor_get(x_301, 1);
+lean_inc(x_303);
+lean_dec(x_301);
+x_304 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_302, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_303);
+lean_dec(x_302);
+return x_304;
+}
+else
+{
+uint8_t x_305; 
+lean_dec(x_298);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_305 = !lean_is_exclusive(x_299);
+if (x_305 == 0)
+{
+return x_299;
+}
+else
+{
+lean_object* x_306; lean_object* x_307; lean_object* x_308; 
+x_306 = lean_ctor_get(x_299, 0);
+x_307 = lean_ctor_get(x_299, 1);
+lean_inc(x_307);
+lean_inc(x_306);
+lean_dec(x_299);
+x_308 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_308, 0, x_306);
+lean_ctor_set(x_308, 1, x_307);
+return x_308;
+}
+}
+}
+}
+}
+block_276:
+{
+uint8_t x_263; 
+lean_dec(x_262);
+x_263 = l_Lean_Expr_isConst(x_3);
+if (x_263 == 0)
+{
+lean_object* x_264; 
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_3);
+x_264 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_264) == 0)
+{
+lean_object* x_265; lean_object* x_266; lean_object* x_267; lean_object* x_268; lean_object* x_269; 
+x_265 = lean_ctor_get(x_264, 1);
+lean_inc(x_265);
+lean_dec(x_264);
+lean_inc(x_1);
+x_266 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_265);
+lean_dec(x_3);
+x_267 = lean_ctor_get(x_266, 0);
+lean_inc(x_267);
+x_268 = lean_ctor_get(x_266, 1);
+lean_inc(x_268);
+lean_dec(x_266);
+x_269 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_261, x_267, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_268);
+lean_dec(x_267);
+lean_dec(x_4);
+return x_269;
+}
+else
+{
+uint8_t x_270; 
+lean_dec(x_261);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_270 = !lean_is_exclusive(x_264);
+if (x_270 == 0)
+{
+return x_264;
+}
+else
+{
+lean_object* x_271; lean_object* x_272; lean_object* x_273; 
+x_271 = lean_ctor_get(x_264, 0);
+x_272 = lean_ctor_get(x_264, 1);
+lean_inc(x_272);
+lean_inc(x_271);
+lean_dec(x_264);
+x_273 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_273, 0, x_271);
+lean_ctor_set(x_273, 1, x_272);
+return x_273;
+}
+}
+}
+else
+{
+lean_object* x_274; lean_object* x_275; 
+lean_dec(x_3);
+x_274 = lean_box(0);
+x_275 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_261, x_274, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_4);
+return x_275;
+}
+}
+}
+case 7:
+{
+lean_object* x_309; lean_object* x_310; lean_object* x_325; uint8_t x_326; 
+lean_dec(x_5);
+lean_inc(x_2);
+lean_inc(x_1);
+x_309 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1___boxed), 12, 2);
+lean_closure_set(x_309, 0, x_1);
+lean_closure_set(x_309, 1, x_2);
+x_325 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4;
+x_326 = l_Lean_Expr_isConstOf(x_3, x_325);
+if (x_326 == 0)
+{
+lean_object* x_327; 
+x_327 = lean_box(0);
+x_310 = x_327;
+goto block_324;
+}
+else
+{
+lean_object* x_328; lean_object* x_329; uint8_t x_330; 
+x_328 = lean_array_get_size(x_4);
+x_329 = lean_unsigned_to_nat(2u);
+x_330 = lean_nat_dec_eq(x_328, x_329);
+if (x_330 == 0)
+{
+lean_object* x_331; 
+lean_dec(x_328);
+x_331 = lean_box(0);
+x_310 = x_331;
+goto block_324;
+}
+else
+{
+lean_object* x_332; uint8_t x_333; 
+lean_dec(x_309);
+lean_dec(x_3);
+x_332 = lean_unsigned_to_nat(0u);
+x_333 = lean_nat_dec_lt(x_332, x_328);
+lean_dec(x_328);
+if (x_333 == 0)
+{
+lean_object* x_334; lean_object* x_335; lean_object* x_336; 
+lean_dec(x_4);
+x_334 = l_Lean_instInhabitedExpr;
+x_335 = l_outOfBounds___rarg(x_334);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_335);
+x_336 = l_Lean_Meta_Grind_internalize(x_335, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_336) == 0)
+{
+lean_object* x_337; lean_object* x_338; lean_object* x_339; lean_object* x_340; lean_object* x_341; 
+x_337 = lean_ctor_get(x_336, 1);
+lean_inc(x_337);
+lean_dec(x_336);
+lean_inc(x_1);
+x_338 = l_Lean_Meta_Grind_registerParent(x_1, x_335, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_337);
+lean_dec(x_335);
+x_339 = lean_ctor_get(x_338, 0);
+lean_inc(x_339);
+x_340 = lean_ctor_get(x_338, 1);
+lean_inc(x_340);
+lean_dec(x_338);
+x_341 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_339, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_340);
+lean_dec(x_339);
+return x_341;
+}
+else
+{
+uint8_t x_342; 
+lean_dec(x_335);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_342 = !lean_is_exclusive(x_336);
+if (x_342 == 0)
+{
+return x_336;
+}
+else
+{
+lean_object* x_343; lean_object* x_344; lean_object* x_345; 
+x_343 = lean_ctor_get(x_336, 0);
+x_344 = lean_ctor_get(x_336, 1);
+lean_inc(x_344);
+lean_inc(x_343);
+lean_dec(x_336);
+x_345 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_345, 0, x_343);
+lean_ctor_set(x_345, 1, x_344);
+return x_345;
+}
+}
+}
+else
+{
+lean_object* x_346; lean_object* x_347; 
+x_346 = lean_array_fget(x_4, x_332);
+lean_dec(x_4);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_346);
+x_347 = l_Lean_Meta_Grind_internalize(x_346, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_347) == 0)
+{
+lean_object* x_348; lean_object* x_349; lean_object* x_350; lean_object* x_351; lean_object* x_352; 
+x_348 = lean_ctor_get(x_347, 1);
+lean_inc(x_348);
+lean_dec(x_347);
+lean_inc(x_1);
+x_349 = l_Lean_Meta_Grind_registerParent(x_1, x_346, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_348);
+lean_dec(x_346);
+x_350 = lean_ctor_get(x_349, 0);
+lean_inc(x_350);
+x_351 = lean_ctor_get(x_349, 1);
+lean_inc(x_351);
+lean_dec(x_349);
+x_352 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_350, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_351);
+lean_dec(x_350);
+return x_352;
+}
+else
+{
+uint8_t x_353; 
+lean_dec(x_346);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_353 = !lean_is_exclusive(x_347);
+if (x_353 == 0)
+{
+return x_347;
+}
+else
+{
+lean_object* x_354; lean_object* x_355; lean_object* x_356; 
+x_354 = lean_ctor_get(x_347, 0);
+x_355 = lean_ctor_get(x_347, 1);
+lean_inc(x_355);
+lean_inc(x_354);
+lean_dec(x_347);
+x_356 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_356, 0, x_354);
+lean_ctor_set(x_356, 1, x_355);
+return x_356;
+}
+}
+}
+}
+}
+block_324:
+{
+uint8_t x_311; 
+lean_dec(x_310);
+x_311 = l_Lean_Expr_isConst(x_3);
+if (x_311 == 0)
+{
+lean_object* x_312; 
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_3);
+x_312 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_312) == 0)
+{
+lean_object* x_313; lean_object* x_314; lean_object* x_315; lean_object* x_316; lean_object* x_317; 
+x_313 = lean_ctor_get(x_312, 1);
+lean_inc(x_313);
+lean_dec(x_312);
+lean_inc(x_1);
+x_314 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_313);
+lean_dec(x_3);
+x_315 = lean_ctor_get(x_314, 0);
+lean_inc(x_315);
+x_316 = lean_ctor_get(x_314, 1);
+lean_inc(x_316);
+lean_dec(x_314);
+x_317 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_309, x_315, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_316);
+lean_dec(x_315);
+lean_dec(x_4);
+return x_317;
+}
+else
+{
+uint8_t x_318; 
+lean_dec(x_309);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_318 = !lean_is_exclusive(x_312);
+if (x_318 == 0)
+{
+return x_312;
+}
+else
+{
+lean_object* x_319; lean_object* x_320; lean_object* x_321; 
+x_319 = lean_ctor_get(x_312, 0);
+x_320 = lean_ctor_get(x_312, 1);
+lean_inc(x_320);
+lean_inc(x_319);
+lean_dec(x_312);
+x_321 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_321, 0, x_319);
+lean_ctor_set(x_321, 1, x_320);
+return x_321;
+}
+}
+}
+else
+{
+lean_object* x_322; lean_object* x_323; 
+lean_dec(x_3);
+x_322 = lean_box(0);
+x_323 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_309, x_322, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_4);
+return x_323;
+}
+}
+}
+case 8:
+{
+lean_object* x_357; lean_object* x_358; lean_object* x_373; uint8_t x_374; 
+lean_dec(x_5);
+lean_inc(x_2);
+lean_inc(x_1);
+x_357 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1___boxed), 12, 2);
+lean_closure_set(x_357, 0, x_1);
+lean_closure_set(x_357, 1, x_2);
+x_373 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4;
+x_374 = l_Lean_Expr_isConstOf(x_3, x_373);
+if (x_374 == 0)
+{
+lean_object* x_375; 
+x_375 = lean_box(0);
+x_358 = x_375;
+goto block_372;
+}
+else
+{
+lean_object* x_376; lean_object* x_377; uint8_t x_378; 
+x_376 = lean_array_get_size(x_4);
+x_377 = lean_unsigned_to_nat(2u);
+x_378 = lean_nat_dec_eq(x_376, x_377);
+if (x_378 == 0)
+{
+lean_object* x_379; 
+lean_dec(x_376);
+x_379 = lean_box(0);
+x_358 = x_379;
+goto block_372;
+}
+else
+{
+lean_object* x_380; uint8_t x_381; 
+lean_dec(x_357);
+lean_dec(x_3);
+x_380 = lean_unsigned_to_nat(0u);
+x_381 = lean_nat_dec_lt(x_380, x_376);
+lean_dec(x_376);
+if (x_381 == 0)
+{
+lean_object* x_382; lean_object* x_383; lean_object* x_384; 
+lean_dec(x_4);
+x_382 = l_Lean_instInhabitedExpr;
+x_383 = l_outOfBounds___rarg(x_382);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_383);
+x_384 = l_Lean_Meta_Grind_internalize(x_383, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_384) == 0)
+{
+lean_object* x_385; lean_object* x_386; lean_object* x_387; lean_object* x_388; lean_object* x_389; 
+x_385 = lean_ctor_get(x_384, 1);
+lean_inc(x_385);
+lean_dec(x_384);
+lean_inc(x_1);
+x_386 = l_Lean_Meta_Grind_registerParent(x_1, x_383, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_385);
+lean_dec(x_383);
+x_387 = lean_ctor_get(x_386, 0);
+lean_inc(x_387);
+x_388 = lean_ctor_get(x_386, 1);
+lean_inc(x_388);
+lean_dec(x_386);
+x_389 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_387, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_388);
+lean_dec(x_387);
+return x_389;
+}
+else
+{
+uint8_t x_390; 
+lean_dec(x_383);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_390 = !lean_is_exclusive(x_384);
+if (x_390 == 0)
+{
+return x_384;
+}
+else
+{
+lean_object* x_391; lean_object* x_392; lean_object* x_393; 
+x_391 = lean_ctor_get(x_384, 0);
+x_392 = lean_ctor_get(x_384, 1);
+lean_inc(x_392);
+lean_inc(x_391);
+lean_dec(x_384);
+x_393 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_393, 0, x_391);
+lean_ctor_set(x_393, 1, x_392);
+return x_393;
+}
+}
+}
+else
+{
+lean_object* x_394; lean_object* x_395; 
+x_394 = lean_array_fget(x_4, x_380);
+lean_dec(x_4);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_394);
+x_395 = l_Lean_Meta_Grind_internalize(x_394, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_395) == 0)
+{
+lean_object* x_396; lean_object* x_397; lean_object* x_398; lean_object* x_399; lean_object* x_400; 
+x_396 = lean_ctor_get(x_395, 1);
+lean_inc(x_396);
+lean_dec(x_395);
+lean_inc(x_1);
+x_397 = l_Lean_Meta_Grind_registerParent(x_1, x_394, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_396);
+lean_dec(x_394);
+x_398 = lean_ctor_get(x_397, 0);
+lean_inc(x_398);
+x_399 = lean_ctor_get(x_397, 1);
+lean_inc(x_399);
+lean_dec(x_397);
+x_400 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_398, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_399);
+lean_dec(x_398);
+return x_400;
+}
+else
+{
+uint8_t x_401; 
+lean_dec(x_394);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_401 = !lean_is_exclusive(x_395);
+if (x_401 == 0)
+{
+return x_395;
+}
+else
+{
+lean_object* x_402; lean_object* x_403; lean_object* x_404; 
+x_402 = lean_ctor_get(x_395, 0);
+x_403 = lean_ctor_get(x_395, 1);
+lean_inc(x_403);
+lean_inc(x_402);
+lean_dec(x_395);
+x_404 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_404, 0, x_402);
+lean_ctor_set(x_404, 1, x_403);
+return x_404;
+}
+}
+}
+}
+}
+block_372:
+{
+uint8_t x_359; 
+lean_dec(x_358);
+x_359 = l_Lean_Expr_isConst(x_3);
+if (x_359 == 0)
+{
+lean_object* x_360; 
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_3);
+x_360 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_360) == 0)
+{
+lean_object* x_361; lean_object* x_362; lean_object* x_363; lean_object* x_364; lean_object* x_365; 
+x_361 = lean_ctor_get(x_360, 1);
+lean_inc(x_361);
+lean_dec(x_360);
+lean_inc(x_1);
+x_362 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_361);
+lean_dec(x_3);
+x_363 = lean_ctor_get(x_362, 0);
+lean_inc(x_363);
+x_364 = lean_ctor_get(x_362, 1);
+lean_inc(x_364);
+lean_dec(x_362);
+x_365 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_357, x_363, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_364);
+lean_dec(x_363);
+lean_dec(x_4);
+return x_365;
+}
+else
+{
+uint8_t x_366; 
+lean_dec(x_357);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_366 = !lean_is_exclusive(x_360);
+if (x_366 == 0)
+{
+return x_360;
+}
+else
+{
+lean_object* x_367; lean_object* x_368; lean_object* x_369; 
+x_367 = lean_ctor_get(x_360, 0);
+x_368 = lean_ctor_get(x_360, 1);
+lean_inc(x_368);
+lean_inc(x_367);
+lean_dec(x_360);
+x_369 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_369, 0, x_367);
+lean_ctor_set(x_369, 1, x_368);
+return x_369;
+}
+}
+}
+else
+{
+lean_object* x_370; lean_object* x_371; 
+lean_dec(x_3);
+x_370 = lean_box(0);
+x_371 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_357, x_370, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_4);
+return x_371;
+}
+}
+}
+case 9:
+{
+lean_object* x_405; lean_object* x_406; lean_object* x_421; uint8_t x_422; 
+lean_dec(x_5);
+lean_inc(x_2);
+lean_inc(x_1);
+x_405 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1___boxed), 12, 2);
+lean_closure_set(x_405, 0, x_1);
+lean_closure_set(x_405, 1, x_2);
+x_421 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4;
+x_422 = l_Lean_Expr_isConstOf(x_3, x_421);
+if (x_422 == 0)
+{
+lean_object* x_423; 
+x_423 = lean_box(0);
+x_406 = x_423;
+goto block_420;
+}
+else
+{
+lean_object* x_424; lean_object* x_425; uint8_t x_426; 
+x_424 = lean_array_get_size(x_4);
+x_425 = lean_unsigned_to_nat(2u);
+x_426 = lean_nat_dec_eq(x_424, x_425);
+if (x_426 == 0)
+{
+lean_object* x_427; 
+lean_dec(x_424);
+x_427 = lean_box(0);
+x_406 = x_427;
+goto block_420;
+}
+else
+{
+lean_object* x_428; uint8_t x_429; 
+lean_dec(x_405);
+lean_dec(x_3);
+x_428 = lean_unsigned_to_nat(0u);
+x_429 = lean_nat_dec_lt(x_428, x_424);
+lean_dec(x_424);
+if (x_429 == 0)
+{
+lean_object* x_430; lean_object* x_431; lean_object* x_432; 
+lean_dec(x_4);
+x_430 = l_Lean_instInhabitedExpr;
+x_431 = l_outOfBounds___rarg(x_430);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_431);
+x_432 = l_Lean_Meta_Grind_internalize(x_431, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_432) == 0)
+{
+lean_object* x_433; lean_object* x_434; lean_object* x_435; lean_object* x_436; lean_object* x_437; 
+x_433 = lean_ctor_get(x_432, 1);
+lean_inc(x_433);
+lean_dec(x_432);
+lean_inc(x_1);
+x_434 = l_Lean_Meta_Grind_registerParent(x_1, x_431, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_433);
+lean_dec(x_431);
+x_435 = lean_ctor_get(x_434, 0);
+lean_inc(x_435);
+x_436 = lean_ctor_get(x_434, 1);
+lean_inc(x_436);
+lean_dec(x_434);
+x_437 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_435, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_436);
+lean_dec(x_435);
+return x_437;
+}
+else
+{
+uint8_t x_438; 
+lean_dec(x_431);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_438 = !lean_is_exclusive(x_432);
+if (x_438 == 0)
+{
+return x_432;
+}
+else
+{
+lean_object* x_439; lean_object* x_440; lean_object* x_441; 
+x_439 = lean_ctor_get(x_432, 0);
+x_440 = lean_ctor_get(x_432, 1);
+lean_inc(x_440);
+lean_inc(x_439);
+lean_dec(x_432);
+x_441 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_441, 0, x_439);
+lean_ctor_set(x_441, 1, x_440);
+return x_441;
+}
+}
+}
+else
+{
+lean_object* x_442; lean_object* x_443; 
+x_442 = lean_array_fget(x_4, x_428);
+lean_dec(x_4);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_442);
+x_443 = l_Lean_Meta_Grind_internalize(x_442, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_443) == 0)
+{
+lean_object* x_444; lean_object* x_445; lean_object* x_446; lean_object* x_447; lean_object* x_448; 
+x_444 = lean_ctor_get(x_443, 1);
+lean_inc(x_444);
+lean_dec(x_443);
+lean_inc(x_1);
+x_445 = l_Lean_Meta_Grind_registerParent(x_1, x_442, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_444);
+lean_dec(x_442);
+x_446 = lean_ctor_get(x_445, 0);
+lean_inc(x_446);
+x_447 = lean_ctor_get(x_445, 1);
+lean_inc(x_447);
+lean_dec(x_445);
+x_448 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_446, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_447);
+lean_dec(x_446);
+return x_448;
+}
+else
+{
+uint8_t x_449; 
+lean_dec(x_442);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_449 = !lean_is_exclusive(x_443);
+if (x_449 == 0)
+{
+return x_443;
+}
+else
+{
+lean_object* x_450; lean_object* x_451; lean_object* x_452; 
+x_450 = lean_ctor_get(x_443, 0);
+x_451 = lean_ctor_get(x_443, 1);
+lean_inc(x_451);
+lean_inc(x_450);
+lean_dec(x_443);
+x_452 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_452, 0, x_450);
+lean_ctor_set(x_452, 1, x_451);
+return x_452;
+}
+}
+}
+}
+}
+block_420:
+{
+uint8_t x_407; 
+lean_dec(x_406);
+x_407 = l_Lean_Expr_isConst(x_3);
+if (x_407 == 0)
+{
+lean_object* x_408; 
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_3);
+x_408 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_408) == 0)
+{
+lean_object* x_409; lean_object* x_410; lean_object* x_411; lean_object* x_412; lean_object* x_413; 
+x_409 = lean_ctor_get(x_408, 1);
+lean_inc(x_409);
+lean_dec(x_408);
+lean_inc(x_1);
+x_410 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_409);
+lean_dec(x_3);
+x_411 = lean_ctor_get(x_410, 0);
+lean_inc(x_411);
+x_412 = lean_ctor_get(x_410, 1);
+lean_inc(x_412);
+lean_dec(x_410);
+x_413 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_405, x_411, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_412);
+lean_dec(x_411);
+lean_dec(x_4);
+return x_413;
+}
+else
+{
+uint8_t x_414; 
+lean_dec(x_405);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_414 = !lean_is_exclusive(x_408);
+if (x_414 == 0)
+{
+return x_408;
+}
+else
+{
+lean_object* x_415; lean_object* x_416; lean_object* x_417; 
+x_415 = lean_ctor_get(x_408, 0);
+x_416 = lean_ctor_get(x_408, 1);
+lean_inc(x_416);
+lean_inc(x_415);
+lean_dec(x_408);
+x_417 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_417, 0, x_415);
+lean_ctor_set(x_417, 1, x_416);
+return x_417;
+}
+}
+}
+else
+{
+lean_object* x_418; lean_object* x_419; 
+lean_dec(x_3);
+x_418 = lean_box(0);
+x_419 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_405, x_418, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_4);
+return x_419;
+}
+}
+}
+case 10:
+{
+lean_object* x_453; lean_object* x_454; lean_object* x_469; uint8_t x_470; 
+lean_dec(x_5);
+lean_inc(x_2);
+lean_inc(x_1);
+x_453 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1___boxed), 12, 2);
+lean_closure_set(x_453, 0, x_1);
+lean_closure_set(x_453, 1, x_2);
+x_469 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4;
+x_470 = l_Lean_Expr_isConstOf(x_3, x_469);
+if (x_470 == 0)
+{
+lean_object* x_471; 
+x_471 = lean_box(0);
+x_454 = x_471;
+goto block_468;
+}
+else
+{
+lean_object* x_472; lean_object* x_473; uint8_t x_474; 
+x_472 = lean_array_get_size(x_4);
+x_473 = lean_unsigned_to_nat(2u);
+x_474 = lean_nat_dec_eq(x_472, x_473);
+if (x_474 == 0)
+{
+lean_object* x_475; 
+lean_dec(x_472);
+x_475 = lean_box(0);
+x_454 = x_475;
+goto block_468;
+}
+else
+{
+lean_object* x_476; uint8_t x_477; 
+lean_dec(x_453);
+lean_dec(x_3);
+x_476 = lean_unsigned_to_nat(0u);
+x_477 = lean_nat_dec_lt(x_476, x_472);
+lean_dec(x_472);
+if (x_477 == 0)
+{
+lean_object* x_478; lean_object* x_479; lean_object* x_480; 
+lean_dec(x_4);
+x_478 = l_Lean_instInhabitedExpr;
+x_479 = l_outOfBounds___rarg(x_478);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_479);
+x_480 = l_Lean_Meta_Grind_internalize(x_479, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_480) == 0)
+{
+lean_object* x_481; lean_object* x_482; lean_object* x_483; lean_object* x_484; lean_object* x_485; 
+x_481 = lean_ctor_get(x_480, 1);
+lean_inc(x_481);
+lean_dec(x_480);
+lean_inc(x_1);
+x_482 = l_Lean_Meta_Grind_registerParent(x_1, x_479, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_481);
+lean_dec(x_479);
+x_483 = lean_ctor_get(x_482, 0);
+lean_inc(x_483);
+x_484 = lean_ctor_get(x_482, 1);
+lean_inc(x_484);
+lean_dec(x_482);
+x_485 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_483, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_484);
+lean_dec(x_483);
+return x_485;
+}
+else
+{
+uint8_t x_486; 
+lean_dec(x_479);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_486 = !lean_is_exclusive(x_480);
+if (x_486 == 0)
+{
+return x_480;
+}
+else
+{
+lean_object* x_487; lean_object* x_488; lean_object* x_489; 
+x_487 = lean_ctor_get(x_480, 0);
+x_488 = lean_ctor_get(x_480, 1);
+lean_inc(x_488);
+lean_inc(x_487);
+lean_dec(x_480);
+x_489 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_489, 0, x_487);
+lean_ctor_set(x_489, 1, x_488);
+return x_489;
+}
+}
+}
+else
+{
+lean_object* x_490; lean_object* x_491; 
+x_490 = lean_array_fget(x_4, x_476);
+lean_dec(x_4);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_490);
+x_491 = l_Lean_Meta_Grind_internalize(x_490, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_491) == 0)
+{
+lean_object* x_492; lean_object* x_493; lean_object* x_494; lean_object* x_495; lean_object* x_496; 
+x_492 = lean_ctor_get(x_491, 1);
+lean_inc(x_492);
+lean_dec(x_491);
+lean_inc(x_1);
+x_493 = l_Lean_Meta_Grind_registerParent(x_1, x_490, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_492);
+lean_dec(x_490);
+x_494 = lean_ctor_get(x_493, 0);
+lean_inc(x_494);
+x_495 = lean_ctor_get(x_493, 1);
+lean_inc(x_495);
+lean_dec(x_493);
+x_496 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_494, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_495);
+lean_dec(x_494);
+return x_496;
+}
+else
+{
+uint8_t x_497; 
+lean_dec(x_490);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_497 = !lean_is_exclusive(x_491);
+if (x_497 == 0)
+{
+return x_491;
+}
+else
+{
+lean_object* x_498; lean_object* x_499; lean_object* x_500; 
+x_498 = lean_ctor_get(x_491, 0);
+x_499 = lean_ctor_get(x_491, 1);
+lean_inc(x_499);
+lean_inc(x_498);
+lean_dec(x_491);
+x_500 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_500, 0, x_498);
+lean_ctor_set(x_500, 1, x_499);
+return x_500;
+}
+}
+}
+}
+}
+block_468:
+{
+uint8_t x_455; 
+lean_dec(x_454);
+x_455 = l_Lean_Expr_isConst(x_3);
+if (x_455 == 0)
+{
+lean_object* x_456; 
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_3);
+x_456 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_456) == 0)
+{
+lean_object* x_457; lean_object* x_458; lean_object* x_459; lean_object* x_460; lean_object* x_461; 
+x_457 = lean_ctor_get(x_456, 1);
+lean_inc(x_457);
+lean_dec(x_456);
+lean_inc(x_1);
+x_458 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_457);
+lean_dec(x_3);
+x_459 = lean_ctor_get(x_458, 0);
+lean_inc(x_459);
+x_460 = lean_ctor_get(x_458, 1);
+lean_inc(x_460);
+lean_dec(x_458);
+x_461 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_453, x_459, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_460);
+lean_dec(x_459);
+lean_dec(x_4);
+return x_461;
+}
+else
+{
+uint8_t x_462; 
+lean_dec(x_453);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_462 = !lean_is_exclusive(x_456);
+if (x_462 == 0)
+{
+return x_456;
+}
+else
+{
+lean_object* x_463; lean_object* x_464; lean_object* x_465; 
+x_463 = lean_ctor_get(x_456, 0);
+x_464 = lean_ctor_get(x_456, 1);
+lean_inc(x_464);
+lean_inc(x_463);
+lean_dec(x_456);
+x_465 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_465, 0, x_463);
+lean_ctor_set(x_465, 1, x_464);
+return x_465;
+}
+}
+}
+else
+{
+lean_object* x_466; lean_object* x_467; 
+lean_dec(x_3);
+x_466 = lean_box(0);
+x_467 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_453, x_466, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_4);
+return x_467;
+}
+}
+}
+default: 
+{
+lean_object* x_501; lean_object* x_502; lean_object* x_517; uint8_t x_518; 
+lean_dec(x_5);
+lean_inc(x_2);
+lean_inc(x_1);
+x_501 = lean_alloc_closure((void*)(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1___boxed), 12, 2);
+lean_closure_set(x_501, 0, x_1);
+lean_closure_set(x_501, 1, x_2);
+x_517 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4;
+x_518 = l_Lean_Expr_isConstOf(x_3, x_517);
+if (x_518 == 0)
+{
+lean_object* x_519; 
+x_519 = lean_box(0);
+x_502 = x_519;
+goto block_516;
+}
+else
+{
+lean_object* x_520; lean_object* x_521; uint8_t x_522; 
+x_520 = lean_array_get_size(x_4);
+x_521 = lean_unsigned_to_nat(2u);
+x_522 = lean_nat_dec_eq(x_520, x_521);
+if (x_522 == 0)
+{
+lean_object* x_523; 
+lean_dec(x_520);
+x_523 = lean_box(0);
+x_502 = x_523;
+goto block_516;
+}
+else
+{
+lean_object* x_524; uint8_t x_525; 
+lean_dec(x_501);
+lean_dec(x_3);
+x_524 = lean_unsigned_to_nat(0u);
+x_525 = lean_nat_dec_lt(x_524, x_520);
+lean_dec(x_520);
+if (x_525 == 0)
+{
+lean_object* x_526; lean_object* x_527; lean_object* x_528; 
+lean_dec(x_4);
+x_526 = l_Lean_instInhabitedExpr;
+x_527 = l_outOfBounds___rarg(x_526);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_527);
+x_528 = l_Lean_Meta_Grind_internalize(x_527, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_528) == 0)
+{
+lean_object* x_529; lean_object* x_530; lean_object* x_531; lean_object* x_532; lean_object* x_533; 
+x_529 = lean_ctor_get(x_528, 1);
+lean_inc(x_529);
+lean_dec(x_528);
+lean_inc(x_1);
+x_530 = l_Lean_Meta_Grind_registerParent(x_1, x_527, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_529);
+lean_dec(x_527);
+x_531 = lean_ctor_get(x_530, 0);
+lean_inc(x_531);
+x_532 = lean_ctor_get(x_530, 1);
+lean_inc(x_532);
+lean_dec(x_530);
+x_533 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_531, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_532);
+lean_dec(x_531);
+return x_533;
+}
+else
+{
+uint8_t x_534; 
+lean_dec(x_527);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_534 = !lean_is_exclusive(x_528);
+if (x_534 == 0)
+{
+return x_528;
+}
+else
+{
+lean_object* x_535; lean_object* x_536; lean_object* x_537; 
+x_535 = lean_ctor_get(x_528, 0);
+x_536 = lean_ctor_get(x_528, 1);
+lean_inc(x_536);
+lean_inc(x_535);
+lean_dec(x_528);
+x_537 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_537, 0, x_535);
+lean_ctor_set(x_537, 1, x_536);
+return x_537;
+}
+}
+}
+else
+{
+lean_object* x_538; lean_object* x_539; 
+x_538 = lean_array_fget(x_4, x_524);
+lean_dec(x_4);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_538);
+x_539 = l_Lean_Meta_Grind_internalize(x_538, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_539) == 0)
+{
+lean_object* x_540; lean_object* x_541; lean_object* x_542; lean_object* x_543; lean_object* x_544; 
+x_540 = lean_ctor_get(x_539, 1);
+lean_inc(x_540);
+lean_dec(x_539);
+lean_inc(x_1);
+x_541 = l_Lean_Meta_Grind_registerParent(x_1, x_538, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_540);
+lean_dec(x_538);
+x_542 = lean_ctor_get(x_541, 0);
+lean_inc(x_542);
+x_543 = lean_ctor_get(x_541, 1);
+lean_inc(x_543);
+lean_dec(x_541);
+x_544 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_542, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_543);
+lean_dec(x_542);
+return x_544;
+}
+else
+{
+uint8_t x_545; 
+lean_dec(x_538);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_545 = !lean_is_exclusive(x_539);
+if (x_545 == 0)
+{
+return x_539;
+}
+else
+{
+lean_object* x_546; lean_object* x_547; lean_object* x_548; 
+x_546 = lean_ctor_get(x_539, 0);
+x_547 = lean_ctor_get(x_539, 1);
+lean_inc(x_547);
+lean_inc(x_546);
+lean_dec(x_539);
+x_548 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_548, 0, x_546);
+lean_ctor_set(x_548, 1, x_547);
+return x_548;
+}
+}
+}
+}
+}
+block_516:
+{
+uint8_t x_503; 
+lean_dec(x_502);
+x_503 = l_Lean_Expr_isConst(x_3);
+if (x_503 == 0)
+{
+lean_object* x_504; 
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_2);
+lean_inc(x_3);
+x_504 = l_Lean_Meta_Grind_internalize(x_3, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_504) == 0)
+{
+lean_object* x_505; lean_object* x_506; lean_object* x_507; lean_object* x_508; lean_object* x_509; 
+x_505 = lean_ctor_get(x_504, 1);
+lean_inc(x_505);
+lean_dec(x_504);
+lean_inc(x_1);
+x_506 = l_Lean_Meta_Grind_registerParent(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_505);
+lean_dec(x_3);
+x_507 = lean_ctor_get(x_506, 0);
+lean_inc(x_507);
+x_508 = lean_ctor_get(x_506, 1);
+lean_inc(x_508);
+lean_dec(x_506);
+x_509 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_501, x_507, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_508);
+lean_dec(x_507);
+lean_dec(x_4);
+return x_509;
+}
+else
+{
+uint8_t x_510; 
+lean_dec(x_501);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_510 = !lean_is_exclusive(x_504);
+if (x_510 == 0)
+{
+return x_504;
+}
+else
+{
+lean_object* x_511; lean_object* x_512; lean_object* x_513; 
+x_511 = lean_ctor_get(x_504, 0);
+x_512 = lean_ctor_get(x_504, 1);
+lean_inc(x_512);
+lean_inc(x_511);
+lean_dec(x_504);
+x_513 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_513, 0, x_511);
+lean_ctor_set(x_513, 1, x_512);
+return x_513;
+}
+}
+}
+else
+{
+lean_object* x_514; lean_object* x_515; 
+lean_dec(x_3);
+x_514 = lean_box(0);
+x_515 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_4, x_1, x_2, x_501, x_514, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_4);
+return x_515;
+}
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_internalize___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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+uint8_t x_13; lean_object* x_14; 
+x_13 = 0;
+x_14 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_13, x_13, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+return x_14;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Lean.Meta.Tactic.Grind.Internalize", 34, 34);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Lean.Meta.Grind.internalize", 27, 27);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("unreachable code has been reached", 33, 33);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Meta_Grind_internalize___lambda__2___closed__1;
+x_2 = l_Lean_Meta_Grind_internalize___lambda__2___closed__2;
+x_3 = lean_unsigned_to_nat(43u);
+x_4 = lean_unsigned_to_nat(16u);
+x_5 = l_Lean_Meta_Grind_internalize___lambda__2___closed__3;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__5() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("unexpected term during internalization", 38, 38);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__6() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_Grind_internalize___lambda__2___closed__5;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__7() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_levelZero;
+x_2 = l_Lean_Expr_sort___override(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_internalize___lambda__2(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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+switch (lean_obj_tag(x_1)) {
+case 0:
+{
+lean_object* x_13; lean_object* x_14; 
+lean_dec(x_2);
+lean_dec(x_1);
+x_13 = l_Lean_Meta_Grind_internalize___lambda__2___closed__4;
+x_14 = l_panic___at_Lean_Meta_Grind_internalize___spec__1(x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+return x_14;
+}
+case 2:
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; 
+x_15 = l_Lean_Meta_Grind_addCongrTable___closed__2;
+x_16 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_15, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+x_17 = lean_ctor_get(x_16, 0);
+lean_inc(x_17);
+x_18 = lean_unbox(x_17);
+lean_dec(x_17);
+if (x_18 == 0)
+{
+lean_object* x_19; uint8_t x_20; lean_object* x_21; 
+x_19 = lean_ctor_get(x_16, 1);
+lean_inc(x_19);
+lean_dec(x_16);
+x_20 = 0;
+x_21 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_20, x_20, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_19);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_21;
+}
+else
+{
+uint8_t x_22; 
+x_22 = !lean_is_exclusive(x_16);
+if (x_22 == 0)
+{
+lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; uint8_t x_31; lean_object* x_32; 
+x_23 = lean_ctor_get(x_16, 1);
+x_24 = lean_ctor_get(x_16, 0);
+lean_dec(x_24);
+lean_inc(x_1);
+x_25 = l_Lean_indentExpr(x_1);
+x_26 = l_Lean_Meta_Grind_internalize___lambda__2___closed__6;
+lean_ctor_set_tag(x_16, 7);
+lean_ctor_set(x_16, 1, x_25);
+lean_ctor_set(x_16, 0, x_26);
+x_27 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__4;
+x_28 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_28, 0, x_16);
+lean_ctor_set(x_28, 1, x_27);
+x_29 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_15, x_28, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_23);
+x_30 = lean_ctor_get(x_29, 1);
+lean_inc(x_30);
+lean_dec(x_29);
+x_31 = 0;
+x_32 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_31, x_31, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_30);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_32;
+}
+else
+{
+lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; uint8_t x_41; lean_object* x_42; 
+x_33 = lean_ctor_get(x_16, 1);
+lean_inc(x_33);
+lean_dec(x_16);
+lean_inc(x_1);
+x_34 = l_Lean_indentExpr(x_1);
+x_35 = l_Lean_Meta_Grind_internalize___lambda__2___closed__6;
+x_36 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_36, 0, x_35);
+lean_ctor_set(x_36, 1, x_34);
+x_37 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__4;
+x_38 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_38, 0, x_36);
+lean_ctor_set(x_38, 1, x_37);
+x_39 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_15, x_38, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_33);
+x_40 = lean_ctor_get(x_39, 1);
+lean_inc(x_40);
+lean_dec(x_39);
+x_41 = 0;
+x_42 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_41, x_41, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_40);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_42;
+}
+}
+}
+case 3:
+{
+lean_object* x_43; lean_object* x_44; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+x_43 = lean_box(0);
+x_44 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_44, 0, x_43);
+lean_ctor_set(x_44, 1, x_12);
+return x_44;
+}
+case 4:
+{
+lean_object* x_45; 
+x_45 = l_Lean_Meta_Grind_mkENode(x_1, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_45;
+}
+case 5:
+{
+lean_object* x_46; 
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_1);
+x_46 = l_Lean_Meta_isLitValue(x_1, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_46) == 0)
+{
+lean_object* x_47; uint8_t x_48; 
+x_47 = lean_ctor_get(x_46, 0);
+lean_inc(x_47);
+x_48 = lean_unbox(x_47);
+lean_dec(x_47);
+if (x_48 == 0)
+{
+lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; 
+x_49 = lean_ctor_get(x_46, 1);
+lean_inc(x_49);
+lean_dec(x_46);
+x_50 = lean_unsigned_to_nat(0u);
+x_51 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_50);
+x_52 = l_Lean_Meta_Grind_internalize___lambda__2___closed__7;
+lean_inc(x_51);
+x_53 = lean_mk_array(x_51, x_52);
+x_54 = lean_unsigned_to_nat(1u);
+x_55 = lean_nat_sub(x_51, x_54);
+lean_dec(x_51);
+lean_inc(x_1);
+x_56 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3(x_1, x_2, x_1, x_53, x_55, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_49);
+return x_56;
+}
+else
+{
+lean_object* x_57; lean_object* x_58; 
+x_57 = lean_ctor_get(x_46, 1);
+lean_inc(x_57);
+lean_dec(x_46);
+x_58 = l_Lean_Meta_Grind_mkENode(x_1, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_57);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_58;
+}
+}
+else
+{
+uint8_t x_59; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+x_59 = !lean_is_exclusive(x_46);
+if (x_59 == 0)
+{
+return x_46;
+}
+else
+{
+lean_object* x_60; lean_object* x_61; lean_object* x_62; 
+x_60 = lean_ctor_get(x_46, 0);
+x_61 = lean_ctor_get(x_46, 1);
+lean_inc(x_61);
+lean_inc(x_60);
+lean_dec(x_46);
+x_62 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_62, 0, x_60);
+lean_ctor_set(x_62, 1, x_61);
+return x_62;
+}
+}
+}
+case 9:
+{
+lean_object* x_63; 
+x_63 = l_Lean_Meta_Grind_mkENode(x_1, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_63;
+}
+case 10:
+{
+lean_object* x_64; lean_object* x_65; lean_object* x_66; uint8_t x_67; 
+x_64 = l_Lean_Meta_Grind_addCongrTable___closed__2;
+x_65 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_64, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+x_66 = lean_ctor_get(x_65, 0);
+lean_inc(x_66);
+x_67 = lean_unbox(x_66);
+lean_dec(x_66);
+if (x_67 == 0)
+{
+lean_object* x_68; uint8_t x_69; lean_object* x_70; 
+x_68 = lean_ctor_get(x_65, 1);
+lean_inc(x_68);
+lean_dec(x_65);
+x_69 = 0;
+x_70 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_69, x_69, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_68);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_70;
+}
+else
+{
+uint8_t x_71; 
+x_71 = !lean_is_exclusive(x_65);
+if (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; lean_object* x_78; lean_object* x_79; uint8_t x_80; lean_object* x_81; 
+x_72 = lean_ctor_get(x_65, 1);
+x_73 = lean_ctor_get(x_65, 0);
+lean_dec(x_73);
+lean_inc(x_1);
+x_74 = l_Lean_indentExpr(x_1);
+x_75 = l_Lean_Meta_Grind_internalize___lambda__2___closed__6;
+lean_ctor_set_tag(x_65, 7);
+lean_ctor_set(x_65, 1, x_74);
+lean_ctor_set(x_65, 0, x_75);
+x_76 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__4;
+x_77 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_77, 0, x_65);
+lean_ctor_set(x_77, 1, x_76);
+x_78 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_64, x_77, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_72);
+x_79 = lean_ctor_get(x_78, 1);
+lean_inc(x_79);
+lean_dec(x_78);
+x_80 = 0;
+x_81 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_80, x_80, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_79);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_81;
+}
+else
+{
+lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; uint8_t x_90; lean_object* x_91; 
+x_82 = lean_ctor_get(x_65, 1);
+lean_inc(x_82);
+lean_dec(x_65);
+lean_inc(x_1);
+x_83 = l_Lean_indentExpr(x_1);
+x_84 = l_Lean_Meta_Grind_internalize___lambda__2___closed__6;
+x_85 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_85, 0, x_84);
+lean_ctor_set(x_85, 1, x_83);
+x_86 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__4;
+x_87 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_87, 0, x_85);
+lean_ctor_set(x_87, 1, x_86);
+x_88 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_64, x_87, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_82);
+x_89 = lean_ctor_get(x_88, 1);
+lean_inc(x_89);
+lean_dec(x_88);
+x_90 = 0;
+x_91 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_90, x_90, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_89);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_91;
+}
+}
+}
+case 11:
+{
+lean_object* x_92; lean_object* x_93; lean_object* x_94; uint8_t x_95; 
+x_92 = l_Lean_Meta_Grind_addCongrTable___closed__2;
+x_93 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_addCongrTable___spec__8(x_92, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+x_94 = lean_ctor_get(x_93, 0);
+lean_inc(x_94);
+x_95 = lean_unbox(x_94);
+lean_dec(x_94);
+if (x_95 == 0)
+{
+lean_object* x_96; uint8_t x_97; lean_object* x_98; 
+x_96 = lean_ctor_get(x_93, 1);
+lean_inc(x_96);
+lean_dec(x_93);
+x_97 = 0;
+x_98 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_97, x_97, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_96);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_98;
+}
+else
+{
+uint8_t x_99; 
+x_99 = !lean_is_exclusive(x_93);
+if (x_99 == 0)
+{
+lean_object* x_100; lean_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; lean_object* x_106; lean_object* x_107; uint8_t x_108; lean_object* x_109; 
+x_100 = lean_ctor_get(x_93, 1);
+x_101 = lean_ctor_get(x_93, 0);
+lean_dec(x_101);
+lean_inc(x_1);
+x_102 = l_Lean_indentExpr(x_1);
+x_103 = l_Lean_Meta_Grind_internalize___lambda__2___closed__6;
+lean_ctor_set_tag(x_93, 7);
+lean_ctor_set(x_93, 1, x_102);
+lean_ctor_set(x_93, 0, x_103);
+x_104 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__4;
+x_105 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_105, 0, x_93);
+lean_ctor_set(x_105, 1, x_104);
+x_106 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_92, x_105, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_100);
+x_107 = lean_ctor_get(x_106, 1);
+lean_inc(x_107);
+lean_dec(x_106);
+x_108 = 0;
+x_109 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_108, x_108, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_107);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_109;
+}
+else
+{
+lean_object* x_110; lean_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; lean_object* x_115; lean_object* x_116; lean_object* x_117; uint8_t x_118; lean_object* x_119; 
+x_110 = lean_ctor_get(x_93, 1);
+lean_inc(x_110);
+lean_dec(x_93);
+lean_inc(x_1);
+x_111 = l_Lean_indentExpr(x_1);
+x_112 = l_Lean_Meta_Grind_internalize___lambda__2___closed__6;
+x_113 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_113, 0, x_112);
+lean_ctor_set(x_113, 1, x_111);
+x_114 = l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__4;
+x_115 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_115, 0, x_113);
+lean_ctor_set(x_115, 1, x_114);
+x_116 = l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9(x_92, x_115, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_110);
+x_117 = lean_ctor_get(x_116, 1);
+lean_inc(x_117);
+lean_dec(x_116);
+x_118 = 0;
+x_119 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_118, x_118, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_117);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_119;
+}
+}
+}
+default: 
+{
+uint8_t x_120; lean_object* x_121; 
+x_120 = 0;
+x_121 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_120, x_120, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_121;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_internalize(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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; lean_object* x_13; uint8_t x_14; 
+x_12 = l_Lean_Meta_Grind_alreadyInternalized(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+x_13 = lean_ctor_get(x_12, 0);
+lean_inc(x_13);
+x_14 = lean_unbox(x_13);
+lean_dec(x_13);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; 
+x_15 = lean_ctor_get(x_12, 1);
+lean_inc(x_15);
+lean_dec(x_12);
+x_16 = lean_box(0);
+x_17 = l_Lean_Meta_Grind_internalize___lambda__2(x_1, x_2, x_16, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_15);
+return x_17;
+}
+else
+{
+uint8_t x_18; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_18 = !lean_is_exclusive(x_12);
+if (x_18 == 0)
+{
+lean_object* x_19; lean_object* x_20; 
+x_19 = lean_ctor_get(x_12, 0);
+lean_dec(x_19);
+x_20 = lean_box(0);
+lean_ctor_set(x_12, 0, x_20);
+return x_12;
+}
+else
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; 
+x_21 = lean_ctor_get(x_12, 1);
+lean_inc(x_21);
+lean_dec(x_12);
+x_22 = lean_box(0);
+x_23 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_23, 0, x_22);
+lean_ctor_set(x_23, 1, x_21);
+return x_23;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at_Lean_Meta_Grind_internalize___spec__2___boxed(lean_object** _args) {
+lean_object* x_1 = _args[0];
+lean_object* x_2 = _args[1];
+lean_object* x_3 = _args[2];
+lean_object* x_4 = _args[3];
+lean_object* x_5 = _args[4];
+lean_object* x_6 = _args[5];
+lean_object* x_7 = _args[6];
+lean_object* x_8 = _args[7];
+lean_object* x_9 = _args[8];
+lean_object* x_10 = _args[9];
+lean_object* x_11 = _args[10];
+lean_object* x_12 = _args[11];
+lean_object* x_13 = _args[12];
+lean_object* x_14 = _args[13];
+lean_object* x_15 = _args[14];
+lean_object* x_16 = _args[15];
+lean_object* x_17 = _args[16];
+lean_object* x_18 = _args[17];
+_start:
+{
+lean_object* x_19; 
+x_19 = l_Std_Range_forIn_x27_loop___at_Lean_Meta_Grind_internalize___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_19;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_3);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+lean_object* x_15; 
+x_15 = l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_5);
+lean_dec(x_1);
+return x_15;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_internalize___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l_Lean_Meta_Grind_internalize___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_internalize___lambda__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l_Lean_Meta_Grind_internalize___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_3);
+return x_13;
+}
+}
+lean_object* initialize_Init_Grind_Util(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_LitValues(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind_Types(uint8_t builtin, lean_object*);
+static bool _G_initialized = false;
+LEAN_EXPORT lean_object* initialize_Lean_Meta_Tactic_Grind_Internalize(uint8_t builtin, lean_object* w) {
+lean_object * res;
+if (_G_initialized) return lean_io_result_mk_ok(lean_box(0));
+_G_initialized = true;
+res = initialize_Init_Grind_Util(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+res = initialize_Lean_Meta_LitValues(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+res = initialize_Lean_Meta_Tactic_Grind_Types(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__1 = _init_l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__1();
+l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__2 = _init_l_Lean_PersistentHashMap_findEntryAux___at_Lean_Meta_Grind_addCongrTable___spec__2___closed__2();
+l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5___closed__1 = _init_l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5___closed__1();
+lean_mark_persistent(l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_addCongrTable___spec__5___closed__1);
+l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__1 = _init_l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__1();
+l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__2 = _init_l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__2();
+lean_mark_persistent(l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__2);
+l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__3 = _init_l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__3();
+lean_mark_persistent(l_Lean_addTrace___at_Lean_Meta_Grind_addCongrTable___spec__9___closed__3);
+l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__1 = _init_l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__1);
+l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__2 = _init_l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__2);
+l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__3 = _init_l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__3);
+l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__4 = _init_l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__4);
+l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__5 = _init_l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__5);
+l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__6 = _init_l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__6();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___lambda__2___closed__6);
+l_Lean_Meta_Grind_addCongrTable___closed__1 = _init_l_Lean_Meta_Grind_addCongrTable___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___closed__1);
+l_Lean_Meta_Grind_addCongrTable___closed__2 = _init_l_Lean_Meta_Grind_addCongrTable___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___closed__2);
+l_Lean_Meta_Grind_addCongrTable___closed__3 = _init_l_Lean_Meta_Grind_addCongrTable___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___closed__3);
+l_Lean_Meta_Grind_addCongrTable___closed__4 = _init_l_Lean_Meta_Grind_addCongrTable___closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___closed__4);
+l_Lean_Meta_Grind_addCongrTable___closed__5 = _init_l_Lean_Meta_Grind_addCongrTable___closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___closed__5);
+l_Lean_Meta_Grind_addCongrTable___closed__6 = _init_l_Lean_Meta_Grind_addCongrTable___closed__6();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___closed__6);
+l_Lean_Meta_Grind_addCongrTable___closed__7 = _init_l_Lean_Meta_Grind_addCongrTable___closed__7();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___closed__7);
+l_Lean_Meta_Grind_addCongrTable___closed__8 = _init_l_Lean_Meta_Grind_addCongrTable___closed__8();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___closed__8);
+l_Lean_Meta_Grind_addCongrTable___closed__9 = _init_l_Lean_Meta_Grind_addCongrTable___closed__9();
+lean_mark_persistent(l_Lean_Meta_Grind_addCongrTable___closed__9);
+l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__1 = _init_l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__1();
+lean_mark_persistent(l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__1);
+l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__2 = _init_l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__2();
+lean_mark_persistent(l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__2);
+l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__3 = _init_l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__3();
+lean_mark_persistent(l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__3);
+l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__4 = _init_l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__4();
+lean_mark_persistent(l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__4);
+l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__5 = _init_l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__5();
+lean_mark_persistent(l_panic___at_Lean_Meta_Grind_internalize___spec__1___closed__5);
+l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__1 = _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__1();
+lean_mark_persistent(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__1);
+l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__2 = _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__2();
+lean_mark_persistent(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__2);
+l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__3 = _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__3();
+lean_mark_persistent(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__3);
+l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4 = _init_l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4();
+lean_mark_persistent(l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_internalize___spec__3___closed__4);
+l_Lean_Meta_Grind_internalize___lambda__2___closed__1 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__1);
+l_Lean_Meta_Grind_internalize___lambda__2___closed__2 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__2);
+l_Lean_Meta_Grind_internalize___lambda__2___closed__3 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__3);
+l_Lean_Meta_Grind_internalize___lambda__2___closed__4 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__4);
+l_Lean_Meta_Grind_internalize___lambda__2___closed__5 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__5);
+l_Lean_Meta_Grind_internalize___lambda__2___closed__6 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__6();
+lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__6);
+l_Lean_Meta_Grind_internalize___lambda__2___closed__7 = _init_l_Lean_Meta_Grind_internalize___lambda__2___closed__7();
+lean_mark_persistent(l_Lean_Meta_Grind_internalize___lambda__2___closed__7);
+return lean_io_result_mk_ok(lean_box(0));
+}
+#ifdef __cplusplus
+}
+#endif
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Grind/Inv.c b/stage0/stdlib/Lean/Meta/Tactic/Grind/Inv.c
index 6e828b2ef559..244a42840b2f 100644
--- a/stage0/stdlib/Lean/Meta/Tactic/Grind/Inv.c
+++ b/stage0/stdlib/Lean/Meta/Tactic/Grind/Inv.c
@@ -1,6 +1,6 @@
 // Lean compiler output
 // Module: Lean.Meta.Tactic.Grind.Inv
-// Imports: Lean.Meta.Tactic.Grind.Types
+// Imports: Lean.Meta.Tactic.Grind.Types Lean.Meta.Tactic.Grind.Proof
 #include <lean/lean.h>
 #if defined(__clang__)
 #pragma clang diagnostic ignored "-Wunused-parameter"
@@ -15,104 +15,184 @@ extern "C" {
 #endif
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, size_t, size_t, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__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_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__1;
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___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_object*);
 static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__6;
+static lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__3;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlM___at_Lean_Meta_Grind_checkInvariants___spec__2(lean_object*, 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___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__2;
+LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__2___boxed(lean_object**);
+static lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__4;
+size_t lean_usize_shift_right(size_t, size_t);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_checkInvariants___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* l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(lean_object*, lean_object*);
 static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2___closed__1;
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__3;
 static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__3;
 static lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__3;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlMAux___at_Lean_Meta_Grind_checkInvariants___spec__3(lean_object*, lean_object*, lean_object*);
+size_t lean_uint64_to_usize(uint64_t);
 LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Meta_Grind_checkInvariants___spec__4___rarg(lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint8_t l_Lean_Expr_isApp(lean_object*);
+static lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__3;
+uint8_t l_Lean_Meta_Grind_isCongruent(lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Expr_sort___override(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5(lean_object*, lean_object*, size_t, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlMAux_traverse___at_Lean_Meta_Grind_checkInvariants___spec__5___rarg(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_object*);
 lean_object* lean_mk_array(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__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*);
 uint8_t lean_usize_dec_eq(size_t, size_t);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__2;
+uint64_t l_Lean_Meta_Grind_congrHash(lean_object*, lean_object*);
 lean_object* lean_array_fget(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+extern lean_object* l_Lean_Meta_Grind_grind_debug_proofs;
+static lean_object* l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__1;
+static lean_object* l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__4;
+LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1(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_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_getEqcs(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__5;
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4;
 LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_stringToMessageData(lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__2;
 extern lean_object* l_Lean_Meta_Grind_grind_debug;
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__8;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__2;
 extern lean_object* l_instInhabitedNat;
 extern lean_object* l_instInhabitedPUnit;
 lean_object* l_Lean_Meta_Grind_getRoot(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__1;
+lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2(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___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__1;
+lean_object* l_Lean_Name_mkStr3(lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_checkInvariants___lambda__2(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_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__5;
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__3;
 lean_object* l_Lean_Meta_Grind_getTarget_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 size_t lean_usize_of_nat(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___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_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__3;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_forIn___at_Lean_Meta_Grind_checkInvariants___spec__1(lean_object*, 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_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__1;
 static lean_object* l_Lean_Meta_Grind_checkInvariants___closed__2;
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__2;
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___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*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__2(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_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__6;
+static lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__2;
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__2;
 static lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__1;
-static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__5;
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__5;
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___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_object*, lean_object*);
 static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__7;
-static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__1;
+lean_object* l_Lean_Meta_check(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_st_ref_get(lean_object*, lean_object*);
-static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__4;
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__4;
+static lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__1;
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__9;
 LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Meta_Grind_checkInvariants___spec__4___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*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__5;
 extern lean_object* l_Lean_levelZero;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_checkInvariants(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_Grind_checkInvariants(uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 extern lean_object* l_Lean_instInhabitedExpr;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_forIn___at_Lean_Meta_Grind_checkInvariants___spec__1___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_object*, lean_object*);
+static lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__5;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlMAux_traverse___at_Lean_Meta_Grind_checkInvariants___spec__5___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*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_checkInvariants___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_Meta_Grind_checkInvariants___closed__1;
+static size_t l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5___closed__2;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___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___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t l_Lean_Meta_Grind_isSameExpr_unsafe__1(lean_object*, lean_object*);
+uint8_t lean_expr_equal(lean_object*, lean_object*);
 uint8_t l_Lean_Option_get___at___private_Lean_Util_Profile_0__Lean_get__profiler___spec__1(lean_object*, lean_object*);
-static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__3;
 static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__1;
+LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__8(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_getParents(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l___private_Init_Util_0__mkPanicMessageWithDecl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__2(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_object*);
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___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_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__2(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_object*, lean_object*, lean_object*);
 extern lean_object* l_Lean_Meta_instMonadMetaM;
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__6;
+lean_object* l_Lean_Meta_Grind_hasSameType(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* lean_usize_to_nat(size_t);
+lean_object* l_Lean_Meta_Grind_getENodes(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_MessageData_ofExpr(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__2___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_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__8;
 lean_object* l_Lean_Meta_Grind_getNext(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_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___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_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__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_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___boxed(lean_object**);
+lean_object* lean_grind_mk_eq_proof(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_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__5;
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__7;
+static lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__6;
+static lean_object* l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__2;
 uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
 uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4(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_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__7;
+static lean_object* l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__7;
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___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*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlMAux_traverse___at_Lean_Meta_Grind_checkInvariants___spec__5(lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__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_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_panic_fn(lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_Grind_checkInvariants___lambda__1___closed__1;
 lean_object* lean_nat_sub(lean_object*, lean_object*);
-static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4___closed__1;
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntry_x3f___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4(lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Expr_getAppFn(lean_object*);
+lean_object* l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__1(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_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___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_object*, lean_object*, lean_object*);
+static size_t l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5___closed__1;
+lean_object* l_Lean_Meta_Grind_getENode(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__4;
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__3;
+static lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__4;
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__2;
 static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2___closed__2;
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAtAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__6___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__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_object*, lean_object*);
+size_t lean_usize_sub(size_t, size_t);
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7(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_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1(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_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_isRoot(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__1;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_forIn___at_Lean_Meta_Grind_checkInvariants___spec__1___lambda__1(lean_object*, lean_object*, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__6;
 size_t lean_usize_add(size_t, size_t);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_checkInvariants___lambda__1(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_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__6;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_checkInvariants___lambda__1(uint8_t, 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_Grind_checkInvariants___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_object* lean_array_uget(lean_object*, size_t);
 size_t lean_array_size(lean_object*);
 LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1(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_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3(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_instInhabitedOfMonad___rarg(lean_object*, lean_object*);
+size_t lean_usize_shift_left(size_t, size_t);
 lean_object* l___private_Lean_Expr_0__Lean_Expr_getAppArgsAux(lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3(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_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__3;
 lean_object* lean_string_append(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__8___closed__1;
 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*);
 uint8_t lean_nat_dec_le(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAtAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__6(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__3;
 uint8_t lean_usize_dec_lt(size_t, size_t);
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__5;
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__3(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_object*);
 lean_object* lean_nat_add(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___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_object*);
 LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Meta_Grind_checkInvariants___spec__4(lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_getRoot_x3f(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_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__2;
+lean_object* lean_array_get(lean_object*, lean_object*, lean_object*);
 lean_object* l_ReaderT_instMonad___rarg(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlMAux___at_Lean_Meta_Grind_checkInvariants___spec__3___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+size_t lean_usize_land(size_t, size_t);
 static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__2;
 static lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__4;
-static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__9;
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1;
 static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__1() {
 _start:
 {
@@ -238,62 +318,317 @@ goto _start;
 }
 }
 }
-static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__1() {
+LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3(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:
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("assertion violation: ", 21, 21);
-return x_1;
+lean_object* x_11; lean_object* x_12; lean_object* x_13; 
+x_11 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__7;
+x_12 = lean_panic_fn(x_11, x_1);
+x_13 = lean_apply_9(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_13;
 }
 }
-static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__2() {
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAtAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__6(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:
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("isSameExpr ( __do_lift._@.Lean.Meta.Tactic.Grind.Inv._hyg.17.0 ) root.self\n    -- Starting at `curr`, following the `target\?` field leads to `root`.\n    ", 153, 153);
-return x_1;
+lean_object* x_7; lean_object* x_8; uint8_t x_9; 
+x_7 = lean_ctor_get(x_1, 1);
+lean_inc(x_7);
+x_8 = lean_array_get_size(x_2);
+x_9 = lean_nat_dec_lt(x_5, x_8);
+lean_dec(x_8);
+if (x_9 == 0)
+{
+lean_object* x_10; 
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_1);
+x_10 = lean_box(0);
+return x_10;
+}
+else
+{
+lean_object* x_11; uint8_t x_12; 
+x_11 = lean_array_fget(x_2, x_5);
+lean_inc(x_11);
+lean_inc(x_6);
+x_12 = l_Lean_Meta_Grind_isCongruent(x_7, x_6, x_11);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; 
+lean_dec(x_11);
+x_13 = lean_unsigned_to_nat(1u);
+x_14 = lean_nat_add(x_5, x_13);
+lean_dec(x_5);
+x_4 = lean_box(0);
+x_5 = x_14;
+goto _start;
+}
+else
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+lean_dec(x_6);
+lean_dec(x_1);
+x_16 = lean_array_fget(x_3, x_5);
+lean_dec(x_5);
+x_17 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_17, 0, x_11);
+lean_ctor_set(x_17, 1, x_16);
+x_18 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_18, 0, x_17);
+return x_18;
+}
 }
 }
-static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__3() {
+}
+static size_t _init_l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5___closed__1() {
 _start:
 {
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__1;
-x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__2;
-x_3 = lean_string_append(x_1, x_2);
+size_t x_1; size_t x_2; size_t x_3; 
+x_1 = 1;
+x_2 = 5;
+x_3 = lean_usize_shift_left(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__4() {
+static size_t _init_l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5___closed__2() {
 _start:
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Lean.Meta.Tactic.Grind.Inv", 26, 26);
-return x_1;
+size_t x_1; size_t x_2; size_t x_3; 
+x_1 = 1;
+x_2 = l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5___closed__1;
+x_3 = lean_usize_sub(x_2, x_1);
+return x_3;
 }
 }
-static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__5() {
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5(lean_object* x_1, lean_object* x_2, size_t x_3, lean_object* x_4) {
 _start:
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("_private.Lean.Meta.Tactic.Grind.Inv.0.Lean.Meta.Grind.checkEqc", 62, 62);
-return x_1;
+if (lean_obj_tag(x_2) == 0)
+{
+uint8_t x_5; 
+x_5 = !lean_is_exclusive(x_2);
+if (x_5 == 0)
+{
+lean_object* x_6; lean_object* x_7; size_t x_8; size_t x_9; size_t x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; 
+x_6 = lean_ctor_get(x_2, 0);
+x_7 = lean_ctor_get(x_1, 1);
+lean_inc(x_7);
+x_8 = 5;
+x_9 = l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5___closed__2;
+x_10 = lean_usize_land(x_3, x_9);
+x_11 = lean_usize_to_nat(x_10);
+x_12 = lean_box(2);
+x_13 = lean_array_get(x_12, x_6, x_11);
+lean_dec(x_11);
+lean_dec(x_6);
+switch (lean_obj_tag(x_13)) {
+case 0:
+{
+uint8_t x_14; 
+lean_dec(x_1);
+x_14 = !lean_is_exclusive(x_13);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; uint8_t x_17; 
+x_15 = lean_ctor_get(x_13, 0);
+x_16 = lean_ctor_get(x_13, 1);
+lean_inc(x_15);
+x_17 = l_Lean_Meta_Grind_isCongruent(x_7, x_4, x_15);
+if (x_17 == 0)
+{
+lean_object* x_18; 
+lean_free_object(x_13);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_free_object(x_2);
+x_18 = lean_box(0);
+return x_18;
+}
+else
+{
+lean_ctor_set_tag(x_2, 1);
+lean_ctor_set(x_2, 0, x_13);
+return x_2;
+}
+}
+else
+{
+lean_object* x_19; lean_object* x_20; uint8_t x_21; 
+x_19 = lean_ctor_get(x_13, 0);
+x_20 = lean_ctor_get(x_13, 1);
+lean_inc(x_20);
+lean_inc(x_19);
+lean_dec(x_13);
+lean_inc(x_19);
+x_21 = l_Lean_Meta_Grind_isCongruent(x_7, x_4, x_19);
+if (x_21 == 0)
+{
+lean_object* x_22; 
+lean_dec(x_20);
+lean_dec(x_19);
+lean_free_object(x_2);
+x_22 = lean_box(0);
+return x_22;
+}
+else
+{
+lean_object* x_23; 
+x_23 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_23, 0, x_19);
+lean_ctor_set(x_23, 1, x_20);
+lean_ctor_set_tag(x_2, 1);
+lean_ctor_set(x_2, 0, x_23);
+return x_2;
+}
+}
+}
+case 1:
+{
+lean_object* x_24; size_t x_25; 
+lean_dec(x_7);
+lean_free_object(x_2);
+x_24 = lean_ctor_get(x_13, 0);
+lean_inc(x_24);
+lean_dec(x_13);
+x_25 = lean_usize_shift_right(x_3, x_8);
+x_2 = x_24;
+x_3 = x_25;
+goto _start;
+}
+default: 
+{
+lean_object* x_27; 
+lean_dec(x_7);
+lean_free_object(x_2);
+lean_dec(x_4);
+lean_dec(x_1);
+x_27 = lean_box(0);
+return x_27;
+}
+}
+}
+else
+{
+lean_object* x_28; lean_object* x_29; size_t x_30; size_t x_31; size_t x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_28 = lean_ctor_get(x_2, 0);
+lean_inc(x_28);
+lean_dec(x_2);
+x_29 = lean_ctor_get(x_1, 1);
+lean_inc(x_29);
+x_30 = 5;
+x_31 = l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5___closed__2;
+x_32 = lean_usize_land(x_3, x_31);
+x_33 = lean_usize_to_nat(x_32);
+x_34 = lean_box(2);
+x_35 = lean_array_get(x_34, x_28, x_33);
+lean_dec(x_33);
+lean_dec(x_28);
+switch (lean_obj_tag(x_35)) {
+case 0:
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; uint8_t x_39; 
+lean_dec(x_1);
+x_36 = lean_ctor_get(x_35, 0);
+lean_inc(x_36);
+x_37 = lean_ctor_get(x_35, 1);
+lean_inc(x_37);
+if (lean_is_exclusive(x_35)) {
+ lean_ctor_release(x_35, 0);
+ lean_ctor_release(x_35, 1);
+ x_38 = x_35;
+} else {
+ lean_dec_ref(x_35);
+ x_38 = lean_box(0);
+}
+lean_inc(x_36);
+x_39 = l_Lean_Meta_Grind_isCongruent(x_29, x_4, x_36);
+if (x_39 == 0)
+{
+lean_object* x_40; 
+lean_dec(x_38);
+lean_dec(x_37);
+lean_dec(x_36);
+x_40 = lean_box(0);
+return x_40;
+}
+else
+{
+lean_object* x_41; lean_object* x_42; 
+if (lean_is_scalar(x_38)) {
+ x_41 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_41 = x_38;
+}
+lean_ctor_set(x_41, 0, x_36);
+lean_ctor_set(x_41, 1, x_37);
+x_42 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_42, 0, x_41);
+return x_42;
+}
+}
+case 1:
+{
+lean_object* x_43; size_t x_44; 
+lean_dec(x_29);
+x_43 = lean_ctor_get(x_35, 0);
+lean_inc(x_43);
+lean_dec(x_35);
+x_44 = lean_usize_shift_right(x_3, x_30);
+x_2 = x_43;
+x_3 = x_44;
+goto _start;
+}
+default: 
+{
+lean_object* x_46; 
+lean_dec(x_29);
+lean_dec(x_4);
+lean_dec(x_1);
+x_46 = lean_box(0);
+return x_46;
+}
+}
+}
+}
+else
+{
+lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_47 = lean_ctor_get(x_2, 0);
+lean_inc(x_47);
+x_48 = lean_ctor_get(x_2, 1);
+lean_inc(x_48);
+lean_dec(x_2);
+x_49 = lean_unsigned_to_nat(0u);
+x_50 = l_Lean_PersistentHashMap_findEntryAtAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__6(x_1, x_47, x_48, lean_box(0), x_49, x_4);
+lean_dec(x_48);
+lean_dec(x_47);
+return x_50;
+}
 }
 }
-static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__6() {
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntry_x3f___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
 _start:
 {
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__4;
-x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__5;
-x_3 = lean_unsigned_to_nat(21u);
-x_4 = lean_unsigned_to_nat(4u);
-x_5 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__3;
-x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
-return x_6;
+lean_object* x_4; uint64_t x_5; size_t x_6; lean_object* x_7; 
+x_4 = lean_ctor_get(x_1, 1);
+lean_inc(x_4);
+x_5 = l_Lean_Meta_Grind_congrHash(x_4, x_3);
+x_6 = lean_uint64_to_usize(x_5);
+x_7 = l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5(x_1, x_2, x_6, x_3);
+return x_7;
+}
+}
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("assertion violation: ", 21, 21);
+return x_1;
 }
 }
-static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__7() {
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__2() {
 _start:
 {
 lean_object* x_1; 
@@ -301,1467 +636,3912 @@ x_1 = lean_mk_string_unchecked("isSameExpr n root.self\n    -- Go to next elemen
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__8() {
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__1;
-x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__7;
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1;
+x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__2;
 x_3 = lean_string_append(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__9() {
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Lean.Meta.Tactic.Grind.Inv", 26, 26);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__5() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("_private.Lean.Meta.Tactic.Grind.Inv.0.Lean.Meta.Grind.checkEqc", 62, 62);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__4;
-x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__5;
-x_3 = lean_unsigned_to_nat(29u);
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4;
+x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__5;
+x_3 = lean_unsigned_to_nat(40u);
 x_4 = lean_unsigned_to_nat(4u);
-x_5 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__8;
+x_5 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__3;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3(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, lean_object* x_11) {
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
 _start:
 {
-lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; 
-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);
-x_14 = lean_unsigned_to_nat(1u);
-x_15 = lean_nat_add(x_13, x_14);
-lean_dec(x_13);
-lean_inc(x_12);
-x_16 = l_Lean_Meta_Grind_getRoot(x_12, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-if (lean_obj_tag(x_16) == 0)
+lean_object* x_14; uint8_t x_15; 
+lean_inc(x_3);
+x_14 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__2(x_3, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+x_15 = !lean_is_exclusive(x_14);
+if (x_15 == 0)
 {
-lean_object* x_17; lean_object* x_18; uint8_t x_19; 
-x_17 = lean_ctor_get(x_16, 0);
-lean_inc(x_17);
-x_18 = lean_ctor_get(x_16, 1);
-lean_inc(x_18);
+lean_object* x_16; lean_object* x_17; uint8_t x_18; 
+x_16 = lean_ctor_get(x_14, 0);
+x_17 = lean_ctor_get(x_14, 1);
+x_18 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_16, x_1);
 lean_dec(x_16);
-x_19 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_17, x_1);
-lean_dec(x_17);
-if (x_19 == 0)
-{
-lean_object* x_20; lean_object* x_21; 
-lean_dec(x_15);
-lean_dec(x_12);
-x_20 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__6;
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_5);
-lean_inc(x_4);
-lean_inc(x_3);
-x_21 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1(x_20, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_18);
-if (lean_obj_tag(x_21) == 0)
+if (x_18 == 0)
 {
-lean_object* x_22; 
-x_22 = lean_ctor_get(x_21, 0);
-lean_inc(x_22);
-if (lean_obj_tag(x_22) == 0)
+lean_object* x_19; lean_object* x_20; 
+lean_free_object(x_14);
+lean_dec(x_3);
+lean_dec(x_2);
+x_19 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__6;
+x_20 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3(x_19, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_17);
+return x_20;
+}
+else
 {
-uint8_t x_23; 
+lean_object* x_21; 
+x_21 = l_Lean_Meta_Grind_getNext(x_3, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_17);
+lean_dec(x_12);
+lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
 lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-x_23 = !lean_is_exclusive(x_21);
-if (x_23 == 0)
+if (lean_obj_tag(x_21) == 0)
 {
-lean_object* x_24; lean_object* x_25; 
-x_24 = lean_ctor_get(x_21, 0);
-lean_dec(x_24);
-x_25 = lean_ctor_get(x_22, 0);
-lean_inc(x_25);
-lean_dec(x_22);
+uint8_t x_22; 
+x_22 = !lean_is_exclusive(x_21);
+if (x_22 == 0)
+{
+lean_object* x_23; uint8_t x_24; 
+x_23 = lean_ctor_get(x_21, 0);
+x_24 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_23);
+if (x_24 == 0)
+{
+lean_object* x_25; 
+lean_ctor_set(x_14, 1, x_2);
+lean_ctor_set(x_14, 0, x_23);
+x_25 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_25, 0, x_14);
 lean_ctor_set(x_21, 0, x_25);
 return x_21;
 }
 else
 {
-lean_object* x_26; lean_object* x_27; lean_object* x_28; 
-x_26 = lean_ctor_get(x_21, 1);
-lean_inc(x_26);
-lean_dec(x_21);
-x_27 = lean_ctor_get(x_22, 0);
-lean_inc(x_27);
-lean_dec(x_22);
-x_28 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_28, 0, x_27);
-lean_ctor_set(x_28, 1, x_26);
-return x_28;
+lean_object* x_26; 
+lean_ctor_set(x_14, 1, x_2);
+lean_ctor_set(x_14, 0, x_23);
+x_26 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_26, 0, x_14);
+lean_ctor_set(x_21, 0, x_26);
+return x_21;
 }
 }
 else
 {
-lean_object* x_29; lean_object* x_30; 
-x_29 = lean_ctor_get(x_21, 1);
-lean_inc(x_29);
+lean_object* x_27; lean_object* x_28; uint8_t x_29; 
+x_27 = lean_ctor_get(x_21, 0);
+x_28 = lean_ctor_get(x_21, 1);
+lean_inc(x_28);
+lean_inc(x_27);
 lean_dec(x_21);
-x_30 = lean_ctor_get(x_22, 0);
-lean_inc(x_30);
-lean_dec(x_22);
-x_2 = x_30;
-x_11 = x_29;
-goto _start;
+x_29 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_27);
+if (x_29 == 0)
+{
+lean_object* x_30; lean_object* x_31; 
+lean_ctor_set(x_14, 1, x_2);
+lean_ctor_set(x_14, 0, x_27);
+x_30 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_30, 0, x_14);
+x_31 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_31, 0, x_30);
+lean_ctor_set(x_31, 1, x_28);
+return x_31;
+}
+else
+{
+lean_object* x_32; lean_object* x_33; 
+lean_ctor_set(x_14, 1, x_2);
+lean_ctor_set(x_14, 0, x_27);
+x_32 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_32, 0, x_14);
+x_33 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_33, 0, x_32);
+lean_ctor_set(x_33, 1, x_28);
+return x_33;
+}
 }
 }
 else
 {
-uint8_t x_32; 
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-x_32 = !lean_is_exclusive(x_21);
-if (x_32 == 0)
+uint8_t x_34; 
+lean_free_object(x_14);
+lean_dec(x_2);
+x_34 = !lean_is_exclusive(x_21);
+if (x_34 == 0)
 {
 return x_21;
 }
 else
 {
-lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_33 = lean_ctor_get(x_21, 0);
-x_34 = lean_ctor_get(x_21, 1);
-lean_inc(x_34);
-lean_inc(x_33);
+lean_object* x_35; lean_object* x_36; lean_object* x_37; 
+x_35 = lean_ctor_get(x_21, 0);
+x_36 = lean_ctor_get(x_21, 1);
+lean_inc(x_36);
+lean_inc(x_35);
 lean_dec(x_21);
-x_35 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_35, 0, x_33);
-lean_ctor_set(x_35, 1, x_34);
-return x_35;
+x_37 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_37, 0, x_35);
+lean_ctor_set(x_37, 1, x_36);
+return x_37;
+}
 }
 }
 }
 else
 {
-lean_object* x_36; uint8_t x_37; 
-lean_inc(x_12);
-x_36 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__2(x_12, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_18);
-x_37 = !lean_is_exclusive(x_36);
-if (x_37 == 0)
-{
 lean_object* x_38; lean_object* x_39; uint8_t x_40; 
-x_38 = lean_ctor_get(x_36, 0);
-x_39 = lean_ctor_get(x_36, 1);
+x_38 = lean_ctor_get(x_14, 0);
+x_39 = lean_ctor_get(x_14, 1);
+lean_inc(x_39);
+lean_inc(x_38);
+lean_dec(x_14);
 x_40 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_38, x_1);
 lean_dec(x_38);
 if (x_40 == 0)
 {
 lean_object* x_41; lean_object* x_42; 
-lean_free_object(x_36);
-lean_dec(x_15);
-lean_dec(x_12);
-x_41 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__9;
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_5);
-lean_inc(x_4);
-lean_inc(x_3);
-x_42 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1(x_41, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_39);
-if (lean_obj_tag(x_42) == 0)
+lean_dec(x_3);
+lean_dec(x_2);
+x_41 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__6;
+x_42 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3(x_41, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_39);
+return x_42;
+}
+else
 {
 lean_object* x_43; 
-x_43 = lean_ctor_get(x_42, 0);
-lean_inc(x_43);
-if (lean_obj_tag(x_43) == 0)
-{
-uint8_t x_44; 
+x_43 = l_Lean_Meta_Grind_getNext(x_3, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_39);
+lean_dec(x_12);
+lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
 lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-x_44 = !lean_is_exclusive(x_42);
-if (x_44 == 0)
+if (lean_obj_tag(x_43) == 0)
 {
-lean_object* x_45; lean_object* x_46; 
-x_45 = lean_ctor_get(x_42, 0);
-lean_dec(x_45);
-x_46 = lean_ctor_get(x_43, 0);
-lean_inc(x_46);
-lean_dec(x_43);
-lean_ctor_set(x_42, 0, x_46);
-return x_42;
+lean_object* x_44; lean_object* x_45; lean_object* x_46; uint8_t x_47; 
+x_44 = lean_ctor_get(x_43, 0);
+lean_inc(x_44);
+x_45 = lean_ctor_get(x_43, 1);
+lean_inc(x_45);
+if (lean_is_exclusive(x_43)) {
+ lean_ctor_release(x_43, 0);
+ lean_ctor_release(x_43, 1);
+ x_46 = x_43;
+} else {
+ lean_dec_ref(x_43);
+ x_46 = lean_box(0);
 }
-else
+x_47 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_44);
+if (x_47 == 0)
 {
-lean_object* x_47; lean_object* x_48; lean_object* x_49; 
-x_47 = lean_ctor_get(x_42, 1);
-lean_inc(x_47);
-lean_dec(x_42);
-x_48 = lean_ctor_get(x_43, 0);
-lean_inc(x_48);
-lean_dec(x_43);
-x_49 = lean_alloc_ctor(0, 2, 0);
+lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_48 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_48, 0, x_44);
+lean_ctor_set(x_48, 1, x_2);
+x_49 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_49, 0, x_48);
-lean_ctor_set(x_49, 1, x_47);
-return x_49;
+if (lean_is_scalar(x_46)) {
+ x_50 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_50 = x_46;
 }
+lean_ctor_set(x_50, 0, x_49);
+lean_ctor_set(x_50, 1, x_45);
+return x_50;
 }
 else
 {
-lean_object* x_50; lean_object* x_51; 
-x_50 = lean_ctor_get(x_42, 1);
-lean_inc(x_50);
-lean_dec(x_42);
-x_51 = lean_ctor_get(x_43, 0);
-lean_inc(x_51);
-lean_dec(x_43);
-x_2 = x_51;
-x_11 = x_50;
-goto _start;
+lean_object* x_51; lean_object* x_52; lean_object* x_53; 
+x_51 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_51, 0, x_44);
+lean_ctor_set(x_51, 1, x_2);
+x_52 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_52, 0, x_51);
+if (lean_is_scalar(x_46)) {
+ x_53 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_53 = x_46;
 }
+lean_ctor_set(x_53, 0, x_52);
+lean_ctor_set(x_53, 1, x_45);
+return x_53;
 }
-else
-{
-uint8_t x_53; 
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-x_53 = !lean_is_exclusive(x_42);
-if (x_53 == 0)
-{
-return x_42;
 }
 else
 {
-lean_object* x_54; lean_object* x_55; lean_object* x_56; 
-x_54 = lean_ctor_get(x_42, 0);
-x_55 = lean_ctor_get(x_42, 1);
-lean_inc(x_55);
+lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; 
+lean_dec(x_2);
+x_54 = lean_ctor_get(x_43, 0);
 lean_inc(x_54);
-lean_dec(x_42);
-x_56 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_56, 0, x_54);
-lean_ctor_set(x_56, 1, x_55);
-return x_56;
-}
-}
+x_55 = lean_ctor_get(x_43, 1);
+lean_inc(x_55);
+if (lean_is_exclusive(x_43)) {
+ lean_ctor_release(x_43, 0);
+ lean_ctor_release(x_43, 1);
+ x_56 = x_43;
+} else {
+ lean_dec_ref(x_43);
+ x_56 = lean_box(0);
 }
-else
-{
-lean_object* x_57; 
-x_57 = l_Lean_Meta_Grind_getNext(x_12, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_39);
-if (lean_obj_tag(x_57) == 0)
-{
-uint8_t x_58; 
-x_58 = !lean_is_exclusive(x_57);
-if (x_58 == 0)
-{
-lean_object* x_59; lean_object* x_60; uint8_t x_61; 
-x_59 = lean_ctor_get(x_57, 0);
-x_60 = lean_ctor_get(x_57, 1);
-x_61 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_59);
-if (x_61 == 0)
-{
-lean_free_object(x_57);
-lean_ctor_set(x_36, 1, x_15);
-lean_ctor_set(x_36, 0, x_59);
-x_2 = x_36;
-x_11 = x_60;
-goto _start;
+if (lean_is_scalar(x_56)) {
+ x_57 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_57 = x_56;
 }
-else
-{
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_ctor_set(x_36, 1, x_15);
-lean_ctor_set(x_36, 0, x_59);
-lean_ctor_set(x_57, 0, x_36);
+lean_ctor_set(x_57, 0, x_54);
+lean_ctor_set(x_57, 1, x_55);
 return x_57;
 }
 }
-else
-{
-lean_object* x_63; lean_object* x_64; uint8_t x_65; 
-x_63 = lean_ctor_get(x_57, 0);
-x_64 = lean_ctor_get(x_57, 1);
-lean_inc(x_64);
-lean_inc(x_63);
-lean_dec(x_57);
-x_65 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_63);
-if (x_65 == 0)
-{
-lean_ctor_set(x_36, 1, x_15);
-lean_ctor_set(x_36, 0, x_63);
-x_2 = x_36;
-x_11 = x_64;
-goto _start;
-}
-else
-{
-lean_object* x_67; 
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_ctor_set(x_36, 1, x_15);
-lean_ctor_set(x_36, 0, x_63);
-x_67 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_67, 0, x_36);
-lean_ctor_set(x_67, 1, x_64);
-return x_67;
 }
 }
 }
-else
-{
-uint8_t x_68; 
-lean_free_object(x_36);
-lean_dec(x_15);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-x_68 = !lean_is_exclusive(x_57);
-if (x_68 == 0)
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__1() {
+_start:
 {
-return x_57;
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("( __do_lift._@.Lean.Meta.Tactic.Grind.Inv._hyg.36.0 )\n    -- Starting at `curr`, following the `target\?` field leads to `root`.\n    ", 132, 132);
+return x_1;
 }
-else
+}
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__2() {
+_start:
 {
-lean_object* x_69; lean_object* x_70; lean_object* x_71; 
-x_69 = lean_ctor_get(x_57, 0);
-x_70 = lean_ctor_get(x_57, 1);
-lean_inc(x_70);
-lean_inc(x_69);
-lean_dec(x_57);
-x_71 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_71, 0, x_69);
-lean_ctor_set(x_71, 1, x_70);
-return x_71;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1;
+x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__1;
+x_3 = lean_string_append(x_1, x_2);
+return x_3;
 }
 }
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4;
+x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__5;
+x_3 = lean_unsigned_to_nat(32u);
+x_4 = lean_unsigned_to_nat(6u);
+x_5 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__2;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
 }
 }
-else
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
 {
-lean_object* x_72; lean_object* x_73; uint8_t x_74; 
-x_72 = lean_ctor_get(x_36, 0);
-x_73 = lean_ctor_get(x_36, 1);
-lean_inc(x_73);
-lean_inc(x_72);
-lean_dec(x_36);
-x_74 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_72, x_1);
-lean_dec(x_72);
-if (x_74 == 0)
+uint8_t x_15; 
+x_15 = lean_ctor_get_uint8(x_3, sizeof(void*)*10 + 4);
+if (x_15 == 0)
 {
-lean_object* x_75; lean_object* x_76; 
-lean_dec(x_15);
-lean_dec(x_12);
-x_75 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__9;
+lean_object* x_16; 
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
 lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_5);
+lean_inc(x_1);
 lean_inc(x_4);
-lean_inc(x_3);
-x_76 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1(x_75, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_73);
-if (lean_obj_tag(x_76) == 0)
+x_16 = l_Lean_Meta_Grind_hasSameType(x_4, x_1, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_16) == 0)
 {
-lean_object* x_77; 
-x_77 = lean_ctor_get(x_76, 0);
-lean_inc(x_77);
-if (lean_obj_tag(x_77) == 0)
+lean_object* x_17; uint8_t x_18; 
+x_17 = lean_ctor_get(x_16, 0);
+lean_inc(x_17);
+x_18 = lean_unbox(x_17);
+lean_dec(x_17);
+if (x_18 == 0)
 {
-lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; 
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
 lean_dec(x_4);
-lean_dec(x_3);
-x_78 = lean_ctor_get(x_76, 1);
-lean_inc(x_78);
-if (lean_is_exclusive(x_76)) {
- lean_ctor_release(x_76, 0);
- lean_ctor_release(x_76, 1);
- x_79 = x_76;
-} else {
- lean_dec_ref(x_76);
- x_79 = lean_box(0);
-}
-x_80 = lean_ctor_get(x_77, 0);
-lean_inc(x_80);
-lean_dec(x_77);
-if (lean_is_scalar(x_79)) {
- x_81 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_81 = x_79;
-}
-lean_ctor_set(x_81, 0, x_80);
-lean_ctor_set(x_81, 1, x_78);
-return x_81;
+lean_dec(x_2);
+lean_dec(x_1);
+x_19 = lean_ctor_get(x_16, 1);
+lean_inc(x_19);
+lean_dec(x_16);
+x_20 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__3;
+x_21 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3(x_20, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_19);
+return x_21;
 }
 else
 {
-lean_object* x_82; lean_object* x_83; 
-x_82 = lean_ctor_get(x_76, 1);
-lean_inc(x_82);
-lean_dec(x_76);
-x_83 = lean_ctor_get(x_77, 0);
-lean_inc(x_83);
-lean_dec(x_77);
-x_2 = x_83;
-x_11 = x_82;
-goto _start;
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_22 = lean_ctor_get(x_16, 1);
+lean_inc(x_22);
+lean_dec(x_16);
+x_23 = lean_box(0);
+x_24 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1(x_1, x_2, x_4, x_23, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_22);
+lean_dec(x_1);
+return x_24;
 }
 }
 else
 {
-lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; 
+uint8_t x_25; 
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-lean_dec(x_5);
 lean_dec(x_4);
-lean_dec(x_3);
-x_85 = lean_ctor_get(x_76, 0);
-lean_inc(x_85);
-x_86 = lean_ctor_get(x_76, 1);
-lean_inc(x_86);
-if (lean_is_exclusive(x_76)) {
- lean_ctor_release(x_76, 0);
- lean_ctor_release(x_76, 1);
- x_87 = x_76;
-} else {
- lean_dec_ref(x_76);
- x_87 = lean_box(0);
-}
-if (lean_is_scalar(x_87)) {
- x_88 = lean_alloc_ctor(1, 2, 0);
-} else {
- x_88 = x_87;
-}
-lean_ctor_set(x_88, 0, x_85);
-lean_ctor_set(x_88, 1, x_86);
-return x_88;
-}
-}
-else
-{
-lean_object* x_89; 
-x_89 = l_Lean_Meta_Grind_getNext(x_12, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_73);
-if (lean_obj_tag(x_89) == 0)
-{
-lean_object* x_90; lean_object* x_91; lean_object* x_92; uint8_t x_93; 
-x_90 = lean_ctor_get(x_89, 0);
-lean_inc(x_90);
-x_91 = lean_ctor_get(x_89, 1);
-lean_inc(x_91);
-if (lean_is_exclusive(x_89)) {
- lean_ctor_release(x_89, 0);
- lean_ctor_release(x_89, 1);
- x_92 = x_89;
-} else {
- lean_dec_ref(x_89);
- x_92 = lean_box(0);
-}
-x_93 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_90);
-if (x_93 == 0)
-{
-lean_object* x_94; 
-lean_dec(x_92);
-x_94 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_94, 0, x_90);
-lean_ctor_set(x_94, 1, x_15);
-x_2 = x_94;
-x_11 = x_91;
-goto _start;
+lean_dec(x_2);
+lean_dec(x_1);
+x_25 = !lean_is_exclusive(x_16);
+if (x_25 == 0)
+{
+return x_16;
 }
 else
 {
-lean_object* x_96; lean_object* x_97; 
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-x_96 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_96, 0, x_90);
-lean_ctor_set(x_96, 1, x_15);
-if (lean_is_scalar(x_92)) {
- x_97 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_97 = x_92;
+lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_26 = lean_ctor_get(x_16, 0);
+x_27 = lean_ctor_get(x_16, 1);
+lean_inc(x_27);
+lean_inc(x_26);
+lean_dec(x_16);
+x_28 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_28, 0, x_26);
+lean_ctor_set(x_28, 1, x_27);
+return x_28;
 }
-lean_ctor_set(x_97, 0, x_96);
-lean_ctor_set(x_97, 1, x_91);
-return x_97;
 }
 }
 else
 {
-lean_object* x_98; lean_object* x_99; lean_object* x_100; lean_object* x_101; 
-lean_dec(x_15);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-x_98 = lean_ctor_get(x_89, 0);
-lean_inc(x_98);
-x_99 = lean_ctor_get(x_89, 1);
-lean_inc(x_99);
-if (lean_is_exclusive(x_89)) {
- lean_ctor_release(x_89, 0);
- lean_ctor_release(x_89, 1);
- x_100 = x_89;
-} else {
- lean_dec_ref(x_89);
- x_100 = lean_box(0);
-}
-if (lean_is_scalar(x_100)) {
- x_101 = lean_alloc_ctor(1, 2, 0);
-} else {
- x_101 = x_100;
-}
-lean_ctor_set(x_101, 0, x_98);
-lean_ctor_set(x_101, 1, x_99);
-return x_101;
+lean_object* x_29; lean_object* x_30; 
+x_29 = lean_box(0);
+x_30 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1(x_1, x_2, x_4, x_29, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_1);
+return x_30;
 }
 }
 }
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("isSameExpr ( __do_lift._@.Lean.Meta.Tactic.Grind.Inv._hyg.17.0 ) root.self\n    -- Check congruence root\n    ", 108, 108);
+return x_1;
 }
 }
-else
-{
-uint8_t x_102; 
-lean_dec(x_15);
-lean_dec(x_12);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-x_102 = !lean_is_exclusive(x_16);
-if (x_102 == 0)
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__2() {
+_start:
 {
-return x_16;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1;
+x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__1;
+x_3 = lean_string_append(x_1, x_2);
+return x_3;
 }
-else
+}
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__3() {
+_start:
 {
-lean_object* x_103; lean_object* x_104; lean_object* x_105; 
-x_103 = lean_ctor_get(x_16, 0);
-x_104 = lean_ctor_get(x_16, 1);
-lean_inc(x_104);
-lean_inc(x_103);
-lean_dec(x_16);
-x_105 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_105, 0, x_103);
-lean_ctor_set(x_105, 1, x_104);
-return x_105;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4;
+x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__5;
+x_3 = lean_unsigned_to_nat(22u);
+x_4 = lean_unsigned_to_nat(4u);
+x_5 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__2;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
 }
 }
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("isSameExpr curr ( __do_lift._@.Lean.Meta.Tactic.Grind.Inv._hyg.34.0 ).cgRoot\n    -- If the equivalence class does not have HEq proofs, then the types must be definitionally equal.\n    ", 184, 184);
+return x_1;
 }
 }
-static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4___closed__1() {
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__4;
-x_2 = l_instInhabitedPUnit;
-x_3 = l_instInhabitedOfMonad___rarg(x_1, x_2);
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1;
+x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__4;
+x_3 = lean_string_append(x_1, x_2);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4(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) {
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__6() {
 _start:
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; 
-x_11 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4___closed__1;
-x_12 = lean_panic_fn(x_11, x_1);
-x_13 = lean_apply_9(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_13;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4;
+x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__5;
+x_3 = lean_unsigned_to_nat(29u);
+x_4 = lean_unsigned_to_nat(8u);
+x_5 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__5;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__1() {
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__7() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("root.size == size\n\n", 19, 19);
+x_1 = lean_mk_string_unchecked("isSameExpr e ( __do_lift._@.Lean.Meta.Tactic.Grind.Inv._hyg.31.0 ).cgRoot\n      ", 80, 80);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__2() {
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__8() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__1;
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1;
+x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__7;
 x_3 = lean_string_append(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__3() {
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__9() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__4;
-x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__5;
-x_3 = lean_unsigned_to_nat(35u);
-x_4 = lean_unsigned_to_nat(2u);
-x_5 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__2;
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4;
+x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__5;
+x_3 = lean_unsigned_to_nat(27u);
+x_4 = lean_unsigned_to_nat(10u);
+x_5 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__8;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc(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) {
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7(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, lean_object* x_11, lean_object* x_12) {
 _start:
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
-x_11 = lean_ctor_get(x_1, 0);
-x_12 = lean_ctor_get(x_1, 6);
-x_13 = lean_unsigned_to_nat(0u);
+lean_object* x_13; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_29 = lean_ctor_get(x_3, 0);
+lean_inc(x_29);
+x_30 = lean_ctor_get(x_3, 1);
+lean_inc(x_30);
+lean_dec(x_3);
+x_31 = lean_unsigned_to_nat(1u);
+x_32 = lean_nat_add(x_30, x_31);
+lean_dec(x_30);
+lean_inc(x_29);
+x_33 = l_Lean_Meta_Grind_getRoot(x_29, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_33) == 0)
+{
+lean_object* x_34; lean_object* x_35; uint8_t x_36; 
+x_34 = lean_ctor_get(x_33, 0);
+lean_inc(x_34);
+x_35 = lean_ctor_get(x_33, 1);
+lean_inc(x_35);
+lean_dec(x_33);
+x_36 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_34, x_2);
+lean_dec(x_34);
+if (x_36 == 0)
+{
+lean_object* x_37; lean_object* x_38; 
+lean_dec(x_32);
+lean_dec(x_29);
+x_37 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__3;
 lean_inc(x_11);
-x_14 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_14, 0, x_11);
-lean_ctor_set(x_14, 1, x_13);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_38 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1(x_37, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_35);
+x_13 = x_38;
+goto block_28;
+}
+else
+{
+uint8_t x_39; 
+x_39 = l_Lean_Expr_isApp(x_29);
+if (x_39 == 0)
+{
+lean_object* x_40; lean_object* x_41; 
+x_40 = lean_box(0);
+lean_inc(x_11);
+lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
 lean_inc(x_5);
 lean_inc(x_4);
-lean_inc(x_3);
 lean_inc(x_2);
-x_15 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3(x_11, x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_15) == 0)
+x_41 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2(x_2, x_32, x_1, x_29, x_40, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_35);
+x_13 = x_41;
+goto block_28;
+}
+else
 {
-uint8_t x_16; 
-x_16 = !lean_is_exclusive(x_15);
-if (x_16 == 0)
+lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; 
+x_42 = lean_st_ref_get(x_4, x_35);
+x_43 = lean_ctor_get(x_42, 0);
+lean_inc(x_43);
+x_44 = lean_ctor_get(x_42, 1);
+lean_inc(x_44);
+lean_dec(x_42);
+x_45 = lean_ctor_get(x_43, 3);
+lean_inc(x_45);
+lean_inc(x_29);
+x_46 = l_Lean_PersistentHashMap_findEntry_x3f___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4(x_43, x_45, x_29);
+if (lean_obj_tag(x_46) == 0)
 {
-lean_object* x_17; lean_object* x_18; lean_object* x_19; uint8_t x_20; 
-x_17 = lean_ctor_get(x_15, 0);
-x_18 = lean_ctor_get(x_15, 1);
-x_19 = lean_ctor_get(x_17, 1);
-lean_inc(x_19);
-lean_dec(x_17);
-x_20 = lean_nat_dec_eq(x_12, x_19);
-lean_dec(x_19);
-if (x_20 == 0)
+lean_object* x_47; 
+lean_inc(x_29);
+x_47 = l_Lean_Meta_Grind_getENode(x_29, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_44);
+if (lean_obj_tag(x_47) == 0)
 {
-lean_object* x_21; lean_object* x_22; 
-lean_free_object(x_15);
-x_21 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__3;
-x_22 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4(x_21, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_18);
-return x_22;
+lean_object* x_48; lean_object* x_49; lean_object* x_50; uint8_t x_51; 
+x_48 = lean_ctor_get(x_47, 0);
+lean_inc(x_48);
+x_49 = lean_ctor_get(x_47, 1);
+lean_inc(x_49);
+lean_dec(x_47);
+x_50 = lean_ctor_get(x_48, 3);
+lean_inc(x_50);
+lean_dec(x_48);
+x_51 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_29, x_50);
+lean_dec(x_50);
+if (x_51 == 0)
+{
+lean_object* x_52; lean_object* x_53; 
+lean_dec(x_32);
+lean_dec(x_29);
+x_52 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__6;
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_53 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1(x_52, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_49);
+x_13 = x_53;
+goto block_28;
 }
 else
 {
-lean_object* x_23; 
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-x_23 = lean_box(0);
-lean_ctor_set(x_15, 0, x_23);
-return x_15;
+lean_object* x_54; lean_object* x_55; 
+x_54 = lean_box(0);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_2);
+x_55 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2(x_2, x_32, x_1, x_29, x_54, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_49);
+x_13 = x_55;
+goto block_28;
 }
 }
 else
 {
-lean_object* x_24; lean_object* x_25; lean_object* x_26; uint8_t x_27; 
-x_24 = lean_ctor_get(x_15, 0);
-x_25 = lean_ctor_get(x_15, 1);
-lean_inc(x_25);
-lean_inc(x_24);
-lean_dec(x_15);
-x_26 = lean_ctor_get(x_24, 1);
-lean_inc(x_26);
-lean_dec(x_24);
-x_27 = lean_nat_dec_eq(x_12, x_26);
-lean_dec(x_26);
-if (x_27 == 0)
+uint8_t x_56; 
+lean_dec(x_32);
+lean_dec(x_29);
+x_56 = !lean_is_exclusive(x_47);
+if (x_56 == 0)
 {
-lean_object* x_28; lean_object* x_29; 
-x_28 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__3;
-x_29 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4(x_28, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_25);
-return x_29;
+x_13 = x_47;
+goto block_28;
 }
 else
 {
-lean_object* x_30; lean_object* x_31; 
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-x_30 = lean_box(0);
-x_31 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_31, 0, x_30);
-lean_ctor_set(x_31, 1, x_25);
-return x_31;
+lean_object* x_57; lean_object* x_58; lean_object* x_59; 
+x_57 = lean_ctor_get(x_47, 0);
+x_58 = lean_ctor_get(x_47, 1);
+lean_inc(x_58);
+lean_inc(x_57);
+lean_dec(x_47);
+x_59 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_59, 0, x_57);
+lean_ctor_set(x_59, 1, x_58);
+x_13 = x_59;
+goto block_28;
 }
 }
 }
 else
 {
-uint8_t x_32; 
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-x_32 = !lean_is_exclusive(x_15);
-if (x_32 == 0)
-{
-return x_15;
+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_46, 0);
+lean_inc(x_60);
+lean_dec(x_46);
+x_61 = lean_ctor_get(x_60, 0);
+lean_inc(x_61);
+lean_dec(x_60);
+x_62 = l_Lean_Expr_getAppFn(x_61);
+x_63 = l_Lean_Expr_getAppFn(x_29);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+x_64 = l_Lean_Meta_Grind_hasSameType(x_62, x_63, x_8, x_9, x_10, x_11, x_44);
+if (lean_obj_tag(x_64) == 0)
+{
+lean_object* x_65; uint8_t x_66; 
+x_65 = lean_ctor_get(x_64, 0);
+lean_inc(x_65);
+x_66 = lean_unbox(x_65);
+lean_dec(x_65);
+if (x_66 == 0)
+{
+lean_object* x_67; lean_object* x_68; lean_object* x_69; 
+lean_dec(x_61);
+x_67 = lean_ctor_get(x_64, 1);
+lean_inc(x_67);
+lean_dec(x_64);
+x_68 = lean_box(0);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_2);
+x_69 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2(x_2, x_32, x_1, x_29, x_68, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_67);
+x_13 = x_69;
+goto block_28;
 }
 else
 {
-lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_33 = lean_ctor_get(x_15, 0);
-x_34 = lean_ctor_get(x_15, 1);
-lean_inc(x_34);
-lean_inc(x_33);
-lean_dec(x_15);
-x_35 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_35, 0, x_33);
-lean_ctor_set(x_35, 1, x_34);
-return x_35;
-}
+lean_object* x_70; lean_object* x_71; 
+x_70 = lean_ctor_get(x_64, 1);
+lean_inc(x_70);
+lean_dec(x_64);
+lean_inc(x_29);
+x_71 = l_Lean_Meta_Grind_getENode(x_29, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_70);
+if (lean_obj_tag(x_71) == 0)
+{
+lean_object* x_72; lean_object* x_73; lean_object* x_74; uint8_t x_75; 
+x_72 = lean_ctor_get(x_71, 0);
+lean_inc(x_72);
+x_73 = lean_ctor_get(x_71, 1);
+lean_inc(x_73);
+lean_dec(x_71);
+x_74 = lean_ctor_get(x_72, 3);
+lean_inc(x_74);
+lean_dec(x_72);
+x_75 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_61, x_74);
+lean_dec(x_74);
+lean_dec(x_61);
+if (x_75 == 0)
+{
+lean_object* x_76; lean_object* x_77; 
+lean_dec(x_32);
+lean_dec(x_29);
+x_76 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__9;
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_77 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1(x_76, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_73);
+x_13 = x_77;
+goto block_28;
 }
+else
+{
+lean_object* x_78; lean_object* x_79; 
+x_78 = lean_box(0);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_2);
+x_79 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2(x_2, x_32, x_1, x_29, x_78, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_73);
+x_13 = x_79;
+goto block_28;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__2___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, lean_object* x_10) {
-_start:
+else
 {
-lean_object* x_11; 
-x_11 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_11;
-}
+uint8_t x_80; 
+lean_dec(x_61);
+lean_dec(x_32);
+lean_dec(x_29);
+x_80 = !lean_is_exclusive(x_71);
+if (x_80 == 0)
+{
+x_13 = x_71;
+goto block_28;
 }
-LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___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, lean_object* x_10, lean_object* x_11) {
-_start:
+else
 {
-lean_object* x_12; 
-x_12 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-lean_dec(x_1);
-return x_12;
+lean_object* x_81; lean_object* x_82; lean_object* x_83; 
+x_81 = lean_ctor_get(x_71, 0);
+x_82 = lean_ctor_get(x_71, 1);
+lean_inc(x_82);
+lean_inc(x_81);
+lean_dec(x_71);
+x_83 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_83, 0, x_81);
+lean_ctor_set(x_83, 1, x_82);
+x_13 = x_83;
+goto block_28;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___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, lean_object* x_10) {
-_start:
-{
-lean_object* x_11; 
-x_11 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_1);
-return x_11;
 }
 }
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, size_t x_5, size_t x_6, uint8_t x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
-_start:
+else
 {
-uint8_t x_17; 
-x_17 = lean_usize_dec_lt(x_6, x_5);
-if (x_17 == 0)
+uint8_t x_84; 
+lean_dec(x_61);
+lean_dec(x_32);
+lean_dec(x_29);
+x_84 = !lean_is_exclusive(x_64);
+if (x_84 == 0)
 {
-lean_object* x_18; lean_object* x_19; 
-x_18 = lean_box(x_7);
-x_19 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_19, 0, x_18);
-lean_ctor_set(x_19, 1, x_16);
-return x_19;
+x_13 = x_64;
+goto block_28;
 }
 else
 {
-lean_object* x_20; lean_object* x_21; lean_object* x_22; 
-x_20 = lean_array_uget(x_4, x_6);
-x_21 = l_Lean_Meta_Grind_getRoot_x3f(x_20, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
-lean_dec(x_20);
-x_22 = lean_ctor_get(x_21, 0);
-lean_inc(x_22);
-if (lean_obj_tag(x_22) == 0)
-{
-lean_object* x_23; size_t x_24; size_t x_25; 
-x_23 = lean_ctor_get(x_21, 1);
-lean_inc(x_23);
-lean_dec(x_21);
-x_24 = 1;
-x_25 = lean_usize_add(x_6, x_24);
-x_6 = x_25;
-x_16 = x_23;
-goto _start;
+lean_object* x_85; lean_object* x_86; lean_object* x_87; 
+x_85 = lean_ctor_get(x_64, 0);
+x_86 = lean_ctor_get(x_64, 1);
+lean_inc(x_86);
+lean_inc(x_85);
+lean_dec(x_64);
+x_87 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_87, 0, x_85);
+lean_ctor_set(x_87, 1, x_86);
+x_13 = x_87;
+goto block_28;
+}
+}
+}
+}
+}
 }
 else
 {
-uint8_t x_27; 
-x_27 = !lean_is_exclusive(x_21);
-if (x_27 == 0)
-{
-lean_object* x_28; lean_object* x_29; lean_object* x_30; uint8_t x_31; 
-x_28 = lean_ctor_get(x_21, 1);
-x_29 = lean_ctor_get(x_21, 0);
+uint8_t x_88; 
+lean_dec(x_32);
 lean_dec(x_29);
-x_30 = lean_ctor_get(x_22, 0);
-lean_inc(x_30);
-lean_dec(x_22);
-x_31 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_30, x_1);
-lean_dec(x_30);
-if (x_31 == 0)
+x_88 = !lean_is_exclusive(x_33);
+if (x_88 == 0)
 {
-size_t x_32; size_t x_33; 
-lean_free_object(x_21);
-x_32 = 1;
-x_33 = lean_usize_add(x_6, x_32);
-x_6 = x_33;
-x_16 = x_28;
-goto _start;
+x_13 = x_33;
+goto block_28;
 }
 else
 {
-uint8_t x_35; lean_object* x_36; 
-x_35 = 1;
-x_36 = lean_box(x_35);
-lean_ctor_set(x_21, 0, x_36);
-return x_21;
+lean_object* x_89; lean_object* x_90; lean_object* x_91; 
+x_89 = lean_ctor_get(x_33, 0);
+x_90 = lean_ctor_get(x_33, 1);
+lean_inc(x_90);
+lean_inc(x_89);
+lean_dec(x_33);
+x_91 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_91, 0, x_89);
+lean_ctor_set(x_91, 1, x_90);
+x_13 = x_91;
+goto block_28;
 }
 }
-else
+block_28:
 {
-lean_object* x_37; lean_object* x_38; uint8_t x_39; 
-x_37 = lean_ctor_get(x_21, 1);
-lean_inc(x_37);
-lean_dec(x_21);
-x_38 = lean_ctor_get(x_22, 0);
-lean_inc(x_38);
-lean_dec(x_22);
-x_39 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_38, x_1);
-lean_dec(x_38);
-if (x_39 == 0)
+if (lean_obj_tag(x_13) == 0)
 {
-size_t x_40; size_t x_41; 
-x_40 = 1;
-x_41 = lean_usize_add(x_6, x_40);
-x_6 = x_41;
-x_16 = x_37;
-goto _start;
+lean_object* x_14; 
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+if (lean_obj_tag(x_14) == 0)
+{
+uint8_t x_15; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_15 = !lean_is_exclusive(x_13);
+if (x_15 == 0)
+{
+lean_object* x_16; lean_object* x_17; 
+x_16 = lean_ctor_get(x_13, 0);
+lean_dec(x_16);
+x_17 = lean_ctor_get(x_14, 0);
+lean_inc(x_17);
+lean_dec(x_14);
+lean_ctor_set(x_13, 0, x_17);
+return x_13;
 }
 else
 {
-uint8_t x_43; lean_object* x_44; lean_object* x_45; 
-x_43 = 1;
-x_44 = lean_box(x_43);
-x_45 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_45, 0, x_44);
-lean_ctor_set(x_45, 1, x_37);
-return x_45;
-}
+lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_18 = lean_ctor_get(x_13, 1);
+lean_inc(x_18);
+lean_dec(x_13);
+x_19 = lean_ctor_get(x_14, 0);
+lean_inc(x_19);
+lean_dec(x_14);
+x_20 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_20, 0, x_19);
+lean_ctor_set(x_20, 1, x_18);
+return x_20;
 }
 }
+else
+{
+lean_object* x_21; lean_object* x_22; 
+x_21 = lean_ctor_get(x_13, 1);
+lean_inc(x_21);
+lean_dec(x_13);
+x_22 = lean_ctor_get(x_14, 0);
+lean_inc(x_22);
+lean_dec(x_14);
+x_3 = x_22;
+x_12 = x_21;
+goto _start;
 }
 }
+else
+{
+uint8_t x_24; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_24 = !lean_is_exclusive(x_13);
+if (x_24 == 0)
+{
+return x_13;
 }
-static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2___closed__1() {
-_start:
+else
 {
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_instInhabitedPUnit;
-x_2 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_2, 0, x_1);
-return x_2;
+lean_object* x_25; lean_object* x_26; lean_object* x_27; 
+x_25 = lean_ctor_get(x_13, 0);
+x_26 = lean_ctor_get(x_13, 1);
+lean_inc(x_26);
+lean_inc(x_25);
+lean_dec(x_13);
+x_27 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_27, 0, x_25);
+lean_ctor_set(x_27, 1, x_26);
+return x_27;
 }
 }
-static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2___closed__2() {
+}
+}
+}
+static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__8___closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__4;
-x_2 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2___closed__1;
+x_2 = l_instInhabitedPUnit;
 x_3 = l_instInhabitedOfMonad___rarg(x_1, x_2);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2(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) {
+LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__8(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:
 {
 lean_object* x_11; lean_object* x_12; lean_object* x_13; 
-x_11 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2___closed__2;
+x_11 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__8___closed__1;
 x_12 = lean_panic_fn(x_11, x_1);
 x_13 = lean_apply_9(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 return x_13;
 }
 }
-static lean_object* _init_l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__1() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_levelZero;
-x_2 = l_Lean_Expr_sort___override(x_1);
-return x_2;
-}
-}
-static lean_object* _init_l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__2() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__1() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("found\n  ", 8, 8);
+x_1 = lean_mk_string_unchecked("root.size == size\n\n", 19, 19);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__3() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__1;
-x_2 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__2;
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__1;
 x_3 = lean_string_append(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__4() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("_private.Lean.Meta.Tactic.Grind.Inv.0.Lean.Meta.Grind.checkParents", 66, 66);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__5() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__4;
-x_2 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__4;
-x_3 = lean_unsigned_to_nat(47u);
-x_4 = lean_unsigned_to_nat(6u);
-x_5 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__3;
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4;
+x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__5;
+x_3 = lean_unsigned_to_nat(46u);
+x_4 = lean_unsigned_to_nat(2u);
+x_5 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3(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, lean_object* x_11, lean_object* x_12) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc(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:
 {
-if (lean_obj_tag(x_2) == 0)
+lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
+x_11 = lean_ctor_get(x_1, 0);
+lean_inc(x_11);
+x_12 = lean_ctor_get(x_1, 6);
+lean_inc(x_12);
+x_13 = lean_unsigned_to_nat(0u);
+lean_inc(x_11);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_11);
+lean_ctor_set(x_14, 1, x_13);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+lean_inc(x_2);
+x_15 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7(x_1, x_11, x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_1);
+if (lean_obj_tag(x_15) == 0)
+{
+uint8_t x_16; 
+x_16 = !lean_is_exclusive(x_15);
+if (x_16 == 0)
+{
+lean_object* x_17; lean_object* x_18; lean_object* x_19; uint8_t x_20; 
+x_17 = lean_ctor_get(x_15, 0);
+x_18 = lean_ctor_get(x_15, 1);
+x_19 = lean_ctor_get(x_17, 1);
+lean_inc(x_19);
+lean_dec(x_17);
+x_20 = lean_nat_dec_eq(x_12, x_19);
+lean_dec(x_19);
+lean_dec(x_12);
+if (x_20 == 0)
+{
+lean_object* x_21; lean_object* x_22; 
+lean_free_object(x_15);
+x_21 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__3;
+x_22 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__8(x_21, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_18);
+return x_22;
+}
+else
+{
+lean_object* x_23; 
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_23 = lean_box(0);
+lean_ctor_set(x_15, 0, x_23);
+return x_15;
+}
+}
+else
+{
+lean_object* x_24; lean_object* x_25; lean_object* x_26; uint8_t x_27; 
+x_24 = lean_ctor_get(x_15, 0);
+x_25 = lean_ctor_get(x_15, 1);
+lean_inc(x_25);
+lean_inc(x_24);
+lean_dec(x_15);
+x_26 = lean_ctor_get(x_24, 1);
+lean_inc(x_26);
+lean_dec(x_24);
+x_27 = lean_nat_dec_eq(x_12, x_26);
+lean_dec(x_26);
+lean_dec(x_12);
+if (x_27 == 0)
+{
+lean_object* x_28; lean_object* x_29; 
+x_28 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__3;
+x_29 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__8(x_28, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_25);
+return x_29;
+}
+else
+{
+lean_object* x_30; lean_object* x_31; 
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_30 = lean_box(0);
+x_31 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_31, 0, x_30);
+lean_ctor_set(x_31, 1, x_25);
+return x_31;
+}
+}
+}
+else
+{
+uint8_t x_32; 
+lean_dec(x_12);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_32 = !lean_is_exclusive(x_15);
+if (x_32 == 0)
+{
+return x_15;
+}
+else
+{
+lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_33 = lean_ctor_get(x_15, 0);
+x_34 = lean_ctor_get(x_15, 1);
+lean_inc(x_34);
+lean_inc(x_33);
+lean_dec(x_15);
+x_35 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_35, 0, x_33);
+lean_ctor_set(x_35, 1, x_34);
+return x_35;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__2___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_11;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAtAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__6___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) {
+_start:
+{
+lean_object* x_7; 
+x_7 = l_Lean_PersistentHashMap_findEntryAtAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__6(x_1, x_2, x_3, x_4, x_5, x_6);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_7;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+_start:
+{
+size_t x_5; lean_object* x_6; 
+x_5 = lean_unbox_usize(x_3);
+lean_dec(x_3);
+x_6 = l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5(x_1, x_2, x_5, x_4);
+return x_6;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; 
+x_14 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_4);
+lean_dec(x_1);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+lean_object* x_15; 
+x_15 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_5);
+lean_dec(x_3);
+return x_15;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_1);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, size_t x_5, size_t x_6, uint8_t x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+_start:
+{
+uint8_t x_17; 
+x_17 = lean_usize_dec_lt(x_6, x_5);
+if (x_17 == 0)
+{
+lean_object* x_18; lean_object* x_19; 
+x_18 = lean_box(x_7);
+x_19 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_19, 0, x_18);
+lean_ctor_set(x_19, 1, x_16);
+return x_19;
+}
+else
+{
+lean_object* x_20; lean_object* x_21; lean_object* x_22; 
+x_20 = lean_array_uget(x_4, x_6);
+x_21 = l_Lean_Meta_Grind_getRoot_x3f(x_20, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+lean_dec(x_20);
+x_22 = lean_ctor_get(x_21, 0);
+lean_inc(x_22);
+if (lean_obj_tag(x_22) == 0)
+{
+lean_object* x_23; size_t x_24; size_t x_25; 
+x_23 = lean_ctor_get(x_21, 1);
+lean_inc(x_23);
+lean_dec(x_21);
+x_24 = 1;
+x_25 = lean_usize_add(x_6, x_24);
+x_6 = x_25;
+x_16 = x_23;
+goto _start;
+}
+else
+{
+uint8_t x_27; 
+x_27 = !lean_is_exclusive(x_21);
+if (x_27 == 0)
+{
+lean_object* x_28; lean_object* x_29; lean_object* x_30; uint8_t x_31; 
+x_28 = lean_ctor_get(x_21, 1);
+x_29 = lean_ctor_get(x_21, 0);
+lean_dec(x_29);
+x_30 = lean_ctor_get(x_22, 0);
+lean_inc(x_30);
+lean_dec(x_22);
+x_31 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_30, x_1);
+lean_dec(x_30);
+if (x_31 == 0)
+{
+size_t x_32; size_t x_33; 
+lean_free_object(x_21);
+x_32 = 1;
+x_33 = lean_usize_add(x_6, x_32);
+x_6 = x_33;
+x_16 = x_28;
+goto _start;
+}
+else
+{
+uint8_t x_35; lean_object* x_36; 
+x_35 = 1;
+x_36 = lean_box(x_35);
+lean_ctor_set(x_21, 0, x_36);
+return x_21;
+}
+}
+else
+{
+lean_object* x_37; lean_object* x_38; uint8_t x_39; 
+x_37 = lean_ctor_get(x_21, 1);
+lean_inc(x_37);
+lean_dec(x_21);
+x_38 = lean_ctor_get(x_22, 0);
+lean_inc(x_38);
+lean_dec(x_22);
+x_39 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_38, x_1);
+lean_dec(x_38);
+if (x_39 == 0)
+{
+size_t x_40; size_t x_41; 
+x_40 = 1;
+x_41 = lean_usize_add(x_6, x_40);
+x_6 = x_41;
+x_16 = x_37;
+goto _start;
+}
+else
+{
+uint8_t x_43; lean_object* x_44; lean_object* x_45; 
+x_43 = 1;
+x_44 = lean_box(x_43);
+x_45 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_45, 0, x_44);
+lean_ctor_set(x_45, 1, x_37);
+return x_45;
+}
+}
+}
+}
+}
+}
+static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_instInhabitedPUnit;
+x_2 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_2, 0, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__4;
+x_2 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2___closed__1;
+x_3 = l_instInhabitedOfMonad___rarg(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2(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:
+{
+lean_object* x_11; lean_object* x_12; lean_object* x_13; 
+x_11 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2___closed__2;
+x_12 = lean_panic_fn(x_11, x_1);
+x_13 = lean_apply_9(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_13;
+}
+}
+static lean_object* _init_l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_levelZero;
+x_2 = l_Lean_Expr_sort___override(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("( __do_lift._@.Lean.Meta.Tactic.Grind.Inv._hyg.778.0 )\n  ", 57, 57);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1;
+x_2 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__2;
+x_3 = lean_string_append(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("_private.Lean.Meta.Tactic.Grind.Inv.0.Lean.Meta.Grind.checkParents", 66, 66);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4;
+x_2 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__4;
+x_3 = lean_unsigned_to_nat(61u);
+x_4 = lean_unsigned_to_nat(8u);
+x_5 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__3;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3(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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+if (lean_obj_tag(x_2) == 0)
+{
+lean_object* x_13; lean_object* x_14; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_13 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_13, 0, x_3);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_13);
+lean_ctor_set(x_14, 1, x_12);
+return x_14;
+}
+else
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+x_15 = lean_ctor_get(x_2, 0);
+lean_inc(x_15);
+x_16 = lean_ctor_get(x_2, 1);
+lean_inc(x_16);
+x_17 = lean_ctor_get(x_2, 3);
+lean_inc(x_17);
+lean_dec(x_2);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_18 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3(x_1, x_15, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_18) == 0)
+{
+lean_object* x_19; 
+x_19 = lean_ctor_get(x_18, 0);
+lean_inc(x_19);
+if (lean_obj_tag(x_19) == 0)
+{
+uint8_t x_20; 
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_20 = !lean_is_exclusive(x_18);
+if (x_20 == 0)
+{
+lean_object* x_21; 
+x_21 = lean_ctor_get(x_18, 0);
+lean_dec(x_21);
+return x_18;
+}
+else
+{
+lean_object* x_22; lean_object* x_23; 
+x_22 = lean_ctor_get(x_18, 1);
+lean_inc(x_22);
+lean_dec(x_18);
+x_23 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_23, 0, x_19);
+lean_ctor_set(x_23, 1, x_22);
+return x_23;
+}
+}
+else
+{
+lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; size_t x_33; size_t x_34; uint8_t x_35; lean_object* x_36; lean_object* x_37; uint8_t x_38; 
+lean_dec(x_19);
+x_24 = lean_ctor_get(x_18, 1);
+lean_inc(x_24);
+lean_dec(x_18);
+x_25 = lean_unsigned_to_nat(0u);
+x_26 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_16, x_25);
+x_27 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__1;
+lean_inc(x_26);
+x_28 = lean_mk_array(x_26, x_27);
+x_29 = lean_unsigned_to_nat(1u);
+x_30 = lean_nat_sub(x_26, x_29);
+lean_dec(x_26);
+lean_inc(x_16);
+x_31 = l___private_Lean_Expr_0__Lean_Expr_getAppArgsAux(x_16, x_28, x_30);
+x_32 = lean_box(0);
+x_33 = lean_array_size(x_31);
+x_34 = 0;
+x_35 = 0;
+x_36 = l_Array_forIn_x27Unsafe_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__1(x_1, x_31, x_32, x_31, x_33, x_34, x_35, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_24);
+lean_dec(x_31);
+x_37 = lean_ctor_get(x_36, 0);
+lean_inc(x_37);
+x_38 = lean_unbox(x_37);
+lean_dec(x_37);
+if (x_38 == 0)
+{
+lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; 
+x_39 = lean_ctor_get(x_36, 1);
+lean_inc(x_39);
+lean_dec(x_36);
+x_40 = l_Lean_Expr_getAppFn(x_16);
+lean_dec(x_16);
+x_41 = l_Lean_Meta_Grind_getRoot_x3f(x_40, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_39);
+lean_dec(x_40);
+x_42 = lean_ctor_get(x_41, 0);
+lean_inc(x_42);
+if (lean_obj_tag(x_42) == 0)
+{
+lean_object* x_43; lean_object* x_44; lean_object* x_45; 
+x_43 = lean_ctor_get(x_41, 1);
+lean_inc(x_43);
+lean_dec(x_41);
+x_44 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__5;
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_45 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2(x_44, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_43);
+if (lean_obj_tag(x_45) == 0)
+{
+lean_object* x_46; 
+x_46 = lean_ctor_get(x_45, 0);
+lean_inc(x_46);
+if (lean_obj_tag(x_46) == 0)
+{
+uint8_t x_47; 
+lean_dec(x_17);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_47 = !lean_is_exclusive(x_45);
+if (x_47 == 0)
+{
+lean_object* x_48; 
+x_48 = lean_ctor_get(x_45, 0);
+lean_dec(x_48);
+return x_45;
+}
+else
+{
+lean_object* x_49; lean_object* x_50; 
+x_49 = lean_ctor_get(x_45, 1);
+lean_inc(x_49);
+lean_dec(x_45);
+x_50 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_50, 0, x_46);
+lean_ctor_set(x_50, 1, x_49);
+return x_50;
+}
+}
+else
+{
+lean_object* x_51; lean_object* x_52; 
+x_51 = lean_ctor_get(x_45, 1);
+lean_inc(x_51);
+lean_dec(x_45);
+x_52 = lean_ctor_get(x_46, 0);
+lean_inc(x_52);
+lean_dec(x_46);
+x_2 = x_17;
+x_3 = x_52;
+x_12 = x_51;
+goto _start;
+}
+}
+else
+{
+uint8_t x_54; 
+lean_dec(x_17);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_54 = !lean_is_exclusive(x_45);
+if (x_54 == 0)
+{
+return x_45;
+}
+else
+{
+lean_object* x_55; lean_object* x_56; lean_object* x_57; 
+x_55 = lean_ctor_get(x_45, 0);
+x_56 = lean_ctor_get(x_45, 1);
+lean_inc(x_56);
+lean_inc(x_55);
+lean_dec(x_45);
+x_57 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_57, 0, x_55);
+lean_ctor_set(x_57, 1, x_56);
+return x_57;
+}
+}
+}
+else
+{
+lean_object* x_58; lean_object* x_59; uint8_t x_60; 
+x_58 = lean_ctor_get(x_41, 1);
+lean_inc(x_58);
+lean_dec(x_41);
+x_59 = lean_ctor_get(x_42, 0);
+lean_inc(x_59);
+lean_dec(x_42);
+x_60 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_59, x_1);
+lean_dec(x_59);
+if (x_60 == 0)
+{
+lean_object* x_61; lean_object* x_62; 
+x_61 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__5;
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_62 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2(x_61, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_58);
+if (lean_obj_tag(x_62) == 0)
+{
+lean_object* x_63; 
+x_63 = lean_ctor_get(x_62, 0);
+lean_inc(x_63);
+if (lean_obj_tag(x_63) == 0)
+{
+uint8_t x_64; 
+lean_dec(x_17);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_64 = !lean_is_exclusive(x_62);
+if (x_64 == 0)
+{
+lean_object* x_65; 
+x_65 = lean_ctor_get(x_62, 0);
+lean_dec(x_65);
+return x_62;
+}
+else
+{
+lean_object* x_66; lean_object* x_67; 
+x_66 = lean_ctor_get(x_62, 1);
+lean_inc(x_66);
+lean_dec(x_62);
+x_67 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_67, 0, x_63);
+lean_ctor_set(x_67, 1, x_66);
+return x_67;
+}
+}
+else
+{
+lean_object* x_68; lean_object* x_69; 
+x_68 = lean_ctor_get(x_62, 1);
+lean_inc(x_68);
+lean_dec(x_62);
+x_69 = lean_ctor_get(x_63, 0);
+lean_inc(x_69);
+lean_dec(x_63);
+x_2 = x_17;
+x_3 = x_69;
+x_12 = x_68;
+goto _start;
+}
+}
+else
+{
+uint8_t x_71; 
+lean_dec(x_17);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_71 = !lean_is_exclusive(x_62);
+if (x_71 == 0)
+{
+return x_62;
+}
+else
+{
+lean_object* x_72; lean_object* x_73; lean_object* x_74; 
+x_72 = lean_ctor_get(x_62, 0);
+x_73 = lean_ctor_get(x_62, 1);
+lean_inc(x_73);
+lean_inc(x_72);
+lean_dec(x_62);
+x_74 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_74, 0, x_72);
+lean_ctor_set(x_74, 1, x_73);
+return x_74;
+}
+}
+}
+else
+{
+lean_object* x_75; 
+x_75 = lean_box(0);
+x_2 = x_17;
+x_3 = x_75;
+x_12 = x_58;
+goto _start;
+}
+}
+}
+else
+{
+lean_object* x_77; lean_object* x_78; 
+lean_dec(x_16);
+x_77 = lean_ctor_get(x_36, 1);
+lean_inc(x_77);
+lean_dec(x_36);
+x_78 = lean_box(0);
+x_2 = x_17;
+x_3 = x_78;
+x_12 = x_77;
+goto _start;
+}
+}
+}
+else
+{
+uint8_t x_80; 
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_80 = !lean_is_exclusive(x_18);
+if (x_80 == 0)
+{
+return x_18;
+}
+else
+{
+lean_object* x_81; lean_object* x_82; lean_object* x_83; 
+x_81 = lean_ctor_get(x_18, 0);
+x_82 = lean_ctor_get(x_18, 1);
+lean_inc(x_82);
+lean_inc(x_81);
+lean_dec(x_18);
+x_83 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_83, 0, x_81);
+lean_ctor_set(x_83, 1, x_82);
+return x_83;
+}
+}
+}
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("( __do_lift._@.Lean.Meta.Tactic.Grind.Inv._hyg.791.0 ).isEmpty\n\n", 64, 64);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__1;
+x_3 = lean_string_append(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4;
+x_2 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__4;
+x_3 = lean_unsigned_to_nat(64u);
+x_4 = lean_unsigned_to_nat(4u);
+x_5 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__2;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents(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:
+{
+lean_object* x_11; lean_object* x_12; uint8_t x_13; 
+x_11 = l_Lean_Meta_Grind_isRoot(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+x_13 = lean_unbox(x_12);
+lean_dec(x_12);
+if (x_13 == 0)
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_14 = lean_ctor_get(x_11, 1);
+lean_inc(x_14);
+lean_dec(x_11);
+x_15 = l_Lean_Meta_Grind_getParents(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_14);
+x_16 = lean_ctor_get(x_15, 0);
+lean_inc(x_16);
+if (lean_obj_tag(x_16) == 0)
+{
+uint8_t x_17; 
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_17 = !lean_is_exclusive(x_15);
+if (x_17 == 0)
+{
+lean_object* x_18; lean_object* x_19; 
+x_18 = lean_ctor_get(x_15, 0);
+lean_dec(x_18);
+x_19 = lean_box(0);
+lean_ctor_set(x_15, 0, x_19);
+return x_15;
+}
+else
+{
+lean_object* x_20; lean_object* x_21; lean_object* x_22; 
+x_20 = lean_ctor_get(x_15, 1);
+lean_inc(x_20);
+lean_dec(x_15);
+x_21 = lean_box(0);
+x_22 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_22, 0, x_21);
+lean_ctor_set(x_22, 1, x_20);
+return x_22;
+}
+}
+else
+{
+lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+lean_dec(x_16);
+x_23 = lean_ctor_get(x_15, 1);
+lean_inc(x_23);
+lean_dec(x_15);
+x_24 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__3;
+x_25 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__8(x_24, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_23);
+return x_25;
+}
+}
+else
+{
+lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+x_26 = lean_ctor_get(x_11, 1);
+lean_inc(x_26);
+lean_dec(x_11);
+x_27 = l_Lean_Meta_Grind_getParents(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_26);
+x_28 = lean_ctor_get(x_27, 0);
+lean_inc(x_28);
+x_29 = lean_ctor_get(x_27, 1);
+lean_inc(x_29);
+lean_dec(x_27);
+x_30 = lean_box(0);
+x_31 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3(x_1, x_28, x_30, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_29);
+if (lean_obj_tag(x_31) == 0)
+{
+uint8_t x_32; 
+x_32 = !lean_is_exclusive(x_31);
+if (x_32 == 0)
+{
+lean_object* x_33; 
+x_33 = lean_ctor_get(x_31, 0);
+lean_dec(x_33);
+lean_ctor_set(x_31, 0, x_30);
+return x_31;
+}
+else
+{
+lean_object* x_34; lean_object* x_35; 
+x_34 = lean_ctor_get(x_31, 1);
+lean_inc(x_34);
+lean_dec(x_31);
+x_35 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_35, 0, x_30);
+lean_ctor_set(x_35, 1, x_34);
+return x_35;
+}
+}
+else
+{
+uint8_t x_36; 
+x_36 = !lean_is_exclusive(x_31);
+if (x_36 == 0)
+{
+return x_31;
+}
+else
+{
+lean_object* x_37; lean_object* x_38; lean_object* x_39; 
+x_37 = lean_ctor_get(x_31, 0);
+x_38 = lean_ctor_get(x_31, 1);
+lean_inc(x_38);
+lean_inc(x_37);
+lean_dec(x_31);
+x_39 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_39, 0, x_37);
+lean_ctor_set(x_39, 1, x_38);
+return x_39;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+_start:
+{
+size_t x_17; size_t x_18; uint8_t x_19; lean_object* x_20; 
+x_17 = lean_unbox_usize(x_5);
+lean_dec(x_5);
+x_18 = lean_unbox_usize(x_6);
+lean_dec(x_6);
+x_19 = lean_unbox(x_7);
+lean_dec(x_7);
+x_20 = l_Array_forIn_x27Unsafe_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__1(x_1, x_2, x_3, x_4, x_17, x_18, x_19, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_20;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_1);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_1);
+return x_11;
+}
+}
+static lean_object* _init_l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("!Expr.equal n₁.self n₂.self\n\n", 33, 29);
+return x_1;
+}
+}
+static lean_object* _init_l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1;
+x_2 = l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__1;
+x_3 = lean_string_append(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("_private.Lean.Meta.Tactic.Grind.Inv.0.Lean.Meta.Grind.checkPtrEqImpliesStructEq", 79, 79);
+return x_1;
+}
+}
+static lean_object* _init_l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4;
+x_2 = l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__3;
+x_3 = lean_unsigned_to_nat(75u);
+x_4 = lean_unsigned_to_nat(6u);
+x_5 = l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__2;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+static lean_object* _init_l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__5() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("!isSameExpr n₁.self n₂.self\n      -- and the two expressions must not be structurally equal\n      ", 102, 98);
+return x_1;
+}
+}
+static lean_object* _init_l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__6() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1;
+x_2 = l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__5;
+x_3 = lean_string_append(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__7() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4;
+x_2 = l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__3;
+x_3 = lean_unsigned_to_nat(73u);
+x_4 = lean_unsigned_to_nat(6u);
+x_5 = l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__6;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17) {
+_start:
+{
+lean_object* x_18; uint8_t x_19; 
+x_18 = lean_ctor_get(x_4, 1);
+x_19 = lean_nat_dec_lt(x_6, x_18);
+if (x_19 == 0)
+{
+lean_object* x_20; 
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_6);
+x_20 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_20, 0, x_5);
+lean_ctor_set(x_20, 1, x_17);
+return x_20;
+}
+else
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; uint8_t x_24; 
+lean_dec(x_5);
+x_21 = lean_array_fget(x_1, x_6);
+x_22 = lean_ctor_get(x_2, 0);
+x_23 = lean_ctor_get(x_21, 0);
+lean_inc(x_23);
+lean_dec(x_21);
+x_24 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_22, x_23);
+if (x_24 == 0)
+{
+uint8_t x_25; 
+x_25 = lean_expr_equal(x_22, x_23);
+lean_dec(x_23);
+if (x_25 == 0)
+{
+lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_26 = lean_ctor_get(x_4, 2);
+x_27 = lean_nat_add(x_6, x_26);
+lean_dec(x_6);
+x_28 = lean_box(0);
+x_5 = x_28;
+x_6 = x_27;
+x_7 = lean_box(0);
+x_8 = lean_box(0);
+goto _start;
+}
+else
+{
+lean_object* x_30; lean_object* x_31; 
+x_30 = l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__4;
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+x_31 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2(x_30, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
+if (lean_obj_tag(x_31) == 0)
+{
+lean_object* x_32; 
+x_32 = lean_ctor_get(x_31, 0);
+lean_inc(x_32);
+if (lean_obj_tag(x_32) == 0)
+{
+uint8_t x_33; 
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_6);
+x_33 = !lean_is_exclusive(x_31);
+if (x_33 == 0)
+{
+lean_object* x_34; lean_object* x_35; 
+x_34 = lean_ctor_get(x_31, 0);
+lean_dec(x_34);
+x_35 = lean_ctor_get(x_32, 0);
+lean_inc(x_35);
+lean_dec(x_32);
+lean_ctor_set(x_31, 0, x_35);
+return x_31;
+}
+else
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; 
+x_36 = lean_ctor_get(x_31, 1);
+lean_inc(x_36);
+lean_dec(x_31);
+x_37 = lean_ctor_get(x_32, 0);
+lean_inc(x_37);
+lean_dec(x_32);
+x_38 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_38, 0, x_37);
+lean_ctor_set(x_38, 1, x_36);
+return x_38;
+}
+}
+else
+{
+lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; 
+x_39 = lean_ctor_get(x_31, 1);
+lean_inc(x_39);
+lean_dec(x_31);
+x_40 = lean_ctor_get(x_32, 0);
+lean_inc(x_40);
+lean_dec(x_32);
+x_41 = lean_ctor_get(x_4, 2);
+x_42 = lean_nat_add(x_6, x_41);
+lean_dec(x_6);
+x_5 = x_40;
+x_6 = x_42;
+x_7 = lean_box(0);
+x_8 = lean_box(0);
+x_17 = x_39;
+goto _start;
+}
+}
+else
+{
+uint8_t x_44; 
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_6);
+x_44 = !lean_is_exclusive(x_31);
+if (x_44 == 0)
+{
+return x_31;
+}
+else
+{
+lean_object* x_45; lean_object* x_46; lean_object* x_47; 
+x_45 = lean_ctor_get(x_31, 0);
+x_46 = lean_ctor_get(x_31, 1);
+lean_inc(x_46);
+lean_inc(x_45);
+lean_dec(x_31);
+x_47 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_47, 0, x_45);
+lean_ctor_set(x_47, 1, x_46);
+return x_47;
+}
+}
+}
+}
+else
+{
+lean_object* x_48; lean_object* x_49; 
+lean_dec(x_23);
+x_48 = l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__7;
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+x_49 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2(x_48, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
+if (lean_obj_tag(x_49) == 0)
+{
+lean_object* x_50; 
+x_50 = lean_ctor_get(x_49, 0);
+lean_inc(x_50);
+if (lean_obj_tag(x_50) == 0)
+{
+uint8_t x_51; 
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_6);
+x_51 = !lean_is_exclusive(x_49);
+if (x_51 == 0)
+{
+lean_object* x_52; lean_object* x_53; 
+x_52 = lean_ctor_get(x_49, 0);
+lean_dec(x_52);
+x_53 = lean_ctor_get(x_50, 0);
+lean_inc(x_53);
+lean_dec(x_50);
+lean_ctor_set(x_49, 0, x_53);
+return x_49;
+}
+else
+{
+lean_object* x_54; lean_object* x_55; lean_object* x_56; 
+x_54 = lean_ctor_get(x_49, 1);
+lean_inc(x_54);
+lean_dec(x_49);
+x_55 = lean_ctor_get(x_50, 0);
+lean_inc(x_55);
+lean_dec(x_50);
+x_56 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_56, 0, x_55);
+lean_ctor_set(x_56, 1, x_54);
+return x_56;
+}
+}
+else
+{
+lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; 
+x_57 = lean_ctor_get(x_49, 1);
+lean_inc(x_57);
+lean_dec(x_49);
+x_58 = lean_ctor_get(x_50, 0);
+lean_inc(x_58);
+lean_dec(x_50);
+x_59 = lean_ctor_get(x_4, 2);
+x_60 = lean_nat_add(x_6, x_59);
+lean_dec(x_6);
+x_5 = x_58;
+x_6 = x_60;
+x_7 = lean_box(0);
+x_8 = lean_box(0);
+x_17 = x_57;
+goto _start;
+}
+}
+else
+{
+uint8_t x_62; 
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_6);
+x_62 = !lean_is_exclusive(x_49);
+if (x_62 == 0)
+{
+return x_49;
+}
+else
+{
+lean_object* x_63; lean_object* x_64; lean_object* x_65; 
+x_63 = lean_ctor_get(x_49, 0);
+x_64 = lean_ctor_get(x_49, 1);
+lean_inc(x_64);
+lean_inc(x_63);
+lean_dec(x_49);
+x_65 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_65, 0, x_63);
+lean_ctor_set(x_65, 1, x_64);
+return x_65;
+}
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__2(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17) {
+_start:
+{
+lean_object* x_18; uint8_t x_19; 
+x_18 = lean_ctor_get(x_4, 1);
+x_19 = lean_nat_dec_lt(x_6, x_18);
+if (x_19 == 0)
+{
+lean_object* x_20; 
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_6);
+lean_dec(x_2);
+x_20 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_20, 0, x_5);
+lean_ctor_set(x_20, 1, x_17);
+return x_20;
+}
+else
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+lean_dec(x_5);
+x_21 = lean_array_fget(x_1, x_6);
+x_22 = lean_unsigned_to_nat(1u);
+x_23 = lean_nat_add(x_6, x_22);
+lean_inc(x_2);
+lean_inc(x_23);
+x_24 = lean_alloc_ctor(0, 3, 0);
+lean_ctor_set(x_24, 0, x_23);
+lean_ctor_set(x_24, 1, x_2);
+lean_ctor_set(x_24, 2, x_22);
+x_25 = lean_box(0);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+x_26 = l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1(x_1, x_21, x_24, x_24, x_25, x_23, lean_box(0), lean_box(0), x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
+lean_dec(x_24);
+lean_dec(x_21);
+if (lean_obj_tag(x_26) == 0)
+{
+lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_27 = lean_ctor_get(x_26, 1);
+lean_inc(x_27);
+lean_dec(x_26);
+x_28 = lean_ctor_get(x_4, 2);
+x_29 = lean_nat_add(x_6, x_28);
+lean_dec(x_6);
+x_5 = x_25;
+x_6 = x_29;
+x_7 = lean_box(0);
+x_8 = lean_box(0);
+x_17 = x_27;
+goto _start;
+}
+else
+{
+uint8_t x_31; 
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_6);
+lean_dec(x_2);
+x_31 = !lean_is_exclusive(x_26);
+if (x_31 == 0)
+{
+return x_26;
+}
+else
+{
+lean_object* x_32; lean_object* x_33; lean_object* x_34; 
+x_32 = lean_ctor_get(x_26, 0);
+x_33 = lean_ctor_get(x_26, 1);
+lean_inc(x_33);
+lean_inc(x_32);
+lean_dec(x_26);
+x_34 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_34, 0, x_32);
+lean_ctor_set(x_34, 1, x_33);
+return x_34;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq(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; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+x_10 = l_Lean_Meta_Grind_getENodes(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+x_11 = lean_ctor_get(x_10, 0);
+lean_inc(x_11);
+x_12 = lean_ctor_get(x_10, 1);
+lean_inc(x_12);
+lean_dec(x_10);
+x_13 = lean_array_get_size(x_11);
+x_14 = lean_unsigned_to_nat(0u);
+x_15 = lean_unsigned_to_nat(1u);
+lean_inc(x_13);
+x_16 = lean_alloc_ctor(0, 3, 0);
+lean_ctor_set(x_16, 0, x_14);
+lean_ctor_set(x_16, 1, x_13);
+lean_ctor_set(x_16, 2, x_15);
+x_17 = lean_box(0);
+x_18 = l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__2(x_11, x_13, x_16, x_16, x_17, x_14, lean_box(0), lean_box(0), x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_12);
+lean_dec(x_16);
+lean_dec(x_11);
+if (lean_obj_tag(x_18) == 0)
+{
+uint8_t x_19; 
+x_19 = !lean_is_exclusive(x_18);
+if (x_19 == 0)
+{
+lean_object* x_20; 
+x_20 = lean_ctor_get(x_18, 0);
+lean_dec(x_20);
+lean_ctor_set(x_18, 0, x_17);
+return x_18;
+}
+else
+{
+lean_object* x_21; lean_object* x_22; 
+x_21 = lean_ctor_get(x_18, 1);
+lean_inc(x_21);
+lean_dec(x_18);
+x_22 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_22, 0, x_17);
+lean_ctor_set(x_22, 1, x_21);
+return x_22;
+}
+}
+else
+{
+uint8_t x_23; 
+x_23 = !lean_is_exclusive(x_18);
+if (x_23 == 0)
+{
+return x_18;
+}
+else
+{
+lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+x_24 = lean_ctor_get(x_18, 0);
+x_25 = lean_ctor_get(x_18, 1);
+lean_inc(x_25);
+lean_inc(x_24);
+lean_dec(x_18);
+x_26 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_26, 0, x_24);
+lean_ctor_set(x_26, 1, x_25);
+return x_26;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___boxed(lean_object** _args) {
+lean_object* x_1 = _args[0];
+lean_object* x_2 = _args[1];
+lean_object* x_3 = _args[2];
+lean_object* x_4 = _args[3];
+lean_object* x_5 = _args[4];
+lean_object* x_6 = _args[5];
+lean_object* x_7 = _args[6];
+lean_object* x_8 = _args[7];
+lean_object* x_9 = _args[8];
+lean_object* x_10 = _args[9];
+lean_object* x_11 = _args[10];
+lean_object* x_12 = _args[11];
+lean_object* x_13 = _args[12];
+lean_object* x_14 = _args[13];
+lean_object* x_15 = _args[14];
+lean_object* x_16 = _args[15];
+lean_object* x_17 = _args[16];
+_start:
+{
+lean_object* x_18; 
+x_18 = l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_18;
+}
+}
+LEAN_EXPORT lean_object* l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__2___boxed(lean_object** _args) {
+lean_object* x_1 = _args[0];
+lean_object* x_2 = _args[1];
+lean_object* x_3 = _args[2];
+lean_object* x_4 = _args[3];
+lean_object* x_5 = _args[4];
+lean_object* x_6 = _args[5];
+lean_object* x_7 = _args[6];
+lean_object* x_8 = _args[7];
+lean_object* x_9 = _args[8];
+lean_object* x_10 = _args[9];
+lean_object* x_11 = _args[10];
+lean_object* x_12 = _args[11];
+lean_object* x_13 = _args[12];
+lean_object* x_14 = _args[13];
+lean_object* x_15 = _args[14];
+lean_object* x_16 = _args[15];
+lean_object* x_17 = _args[16];
+_start:
+{
+lean_object* x_18; 
+x_18 = l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_1);
+return x_18;
+}
+}
+static lean_object* _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___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;
+}
+}
+static lean_object* _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("checked: ", 9, 9);
+return x_1;
+}
+}
+static lean_object* _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__2;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("", 0, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__4;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_1);
+x_13 = l_Lean_Meta_check(x_1, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; uint8_t x_17; 
+x_14 = lean_ctor_get(x_13, 1);
+lean_inc(x_14);
+lean_dec(x_13);
+lean_inc(x_2);
+x_15 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__1(x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_14);
+x_16 = lean_ctor_get(x_15, 0);
+lean_inc(x_16);
+x_17 = lean_unbox(x_16);
+lean_dec(x_16);
+if (x_17 == 0)
+{
+uint8_t x_18; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_2);
+lean_dec(x_1);
+x_18 = !lean_is_exclusive(x_15);
+if (x_18 == 0)
+{
+lean_object* x_19; lean_object* x_20; 
+x_19 = lean_ctor_get(x_15, 0);
+lean_dec(x_19);
+x_20 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__1;
+lean_ctor_set(x_15, 0, x_20);
+return x_15;
+}
+else
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; 
+x_21 = lean_ctor_get(x_15, 1);
+lean_inc(x_21);
+lean_dec(x_15);
+x_22 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__1;
+x_23 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_23, 0, x_22);
+lean_ctor_set(x_23, 1, x_21);
+return x_23;
+}
+}
+else
+{
+lean_object* x_24; lean_object* x_25; 
+x_24 = lean_ctor_get(x_15, 1);
+lean_inc(x_24);
+lean_dec(x_15);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+x_25 = lean_infer_type(x_1, x_8, x_9, x_10, x_11, x_24);
+if (lean_obj_tag(x_25) == 0)
+{
+lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; uint8_t x_34; 
+x_26 = lean_ctor_get(x_25, 0);
+lean_inc(x_26);
+x_27 = lean_ctor_get(x_25, 1);
+lean_inc(x_27);
+lean_dec(x_25);
+x_28 = l_Lean_MessageData_ofExpr(x_26);
+x_29 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__3;
+x_30 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_30, 0, x_29);
+lean_ctor_set(x_30, 1, x_28);
+x_31 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__5;
+x_32 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_32, 0, x_30);
+lean_ctor_set(x_32, 1, x_31);
+x_33 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2(x_2, x_32, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_27);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+x_34 = !lean_is_exclusive(x_33);
+if (x_34 == 0)
+{
+lean_object* x_35; lean_object* x_36; 
+x_35 = lean_ctor_get(x_33, 0);
+lean_dec(x_35);
+x_36 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__1;
+lean_ctor_set(x_33, 0, x_36);
+return x_33;
+}
+else
+{
+lean_object* x_37; lean_object* x_38; lean_object* x_39; 
+x_37 = lean_ctor_get(x_33, 1);
+lean_inc(x_37);
+lean_dec(x_33);
+x_38 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__1;
+x_39 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_39, 0, x_38);
+lean_ctor_set(x_39, 1, x_37);
+return x_39;
+}
+}
+else
+{
+uint8_t x_40; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_2);
+x_40 = !lean_is_exclusive(x_25);
+if (x_40 == 0)
+{
+return x_25;
+}
+else
+{
+lean_object* x_41; lean_object* x_42; lean_object* x_43; 
+x_41 = lean_ctor_get(x_25, 0);
+x_42 = lean_ctor_get(x_25, 1);
+lean_inc(x_42);
+lean_inc(x_41);
+lean_dec(x_25);
+x_43 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_43, 0, x_41);
+lean_ctor_set(x_43, 1, x_42);
+return x_43;
+}
+}
+}
+}
+else
+{
+uint8_t x_44; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_2);
+lean_dec(x_1);
+x_44 = !lean_is_exclusive(x_13);
+if (x_44 == 0)
+{
+return x_13;
+}
+else
+{
+lean_object* x_45; lean_object* x_46; lean_object* x_47; 
+x_45 = lean_ctor_get(x_13, 0);
+x_46 = lean_ctor_get(x_13, 1);
+lean_inc(x_46);
+lean_inc(x_45);
+lean_dec(x_13);
+x_47 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_47, 0, x_45);
+lean_ctor_set(x_47, 1, x_46);
+return x_47;
+}
+}
+}
+}
+static lean_object* _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("grind", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("debug", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("proofs", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__1;
+x_2 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__2;
+x_3 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__3;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
+}
+}
+static lean_object* _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__5() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked(" = ", 3, 3);
+return x_1;
+}
+}
+static lean_object* _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__6() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__5;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+_start:
+{
+if (lean_obj_tag(x_5) == 0)
+{
+lean_object* x_17; 
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_3);
+x_17 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_17, 0, x_6);
+lean_ctor_set(x_17, 1, x_16);
+return x_17;
+}
+else
+{
+uint8_t x_18; 
+lean_dec(x_6);
+x_18 = !lean_is_exclusive(x_5);
+if (x_18 == 0)
+{
+lean_object* x_19; lean_object* x_20; uint8_t x_21; 
+x_19 = lean_ctor_get(x_5, 0);
+x_20 = lean_ctor_get(x_5, 1);
+x_21 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_3, x_19);
+if (x_21 == 0)
+{
+lean_object* x_22; 
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_19);
+lean_inc(x_3);
+x_22 = lean_grind_mk_eq_proof(x_3, x_19, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+if (lean_obj_tag(x_22) == 0)
+{
+lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; uint8_t x_28; 
+x_23 = lean_ctor_get(x_22, 0);
+lean_inc(x_23);
+x_24 = lean_ctor_get(x_22, 1);
+lean_inc(x_24);
+lean_dec(x_22);
+x_25 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__4;
+x_26 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__1(x_25, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_24);
+x_27 = lean_ctor_get(x_26, 0);
+lean_inc(x_27);
+x_28 = lean_unbox(x_27);
+lean_dec(x_27);
+if (x_28 == 0)
+{
+lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+lean_free_object(x_5);
+lean_dec(x_19);
+x_29 = lean_ctor_get(x_26, 1);
+lean_inc(x_29);
+lean_dec(x_26);
+x_30 = lean_box(0);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+x_31 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1(x_23, x_25, x_30, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_29);
+if (lean_obj_tag(x_31) == 0)
+{
+lean_object* x_32; 
+x_32 = lean_ctor_get(x_31, 0);
+lean_inc(x_32);
+if (lean_obj_tag(x_32) == 0)
+{
+uint8_t x_33; 
+lean_dec(x_20);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_3);
+x_33 = !lean_is_exclusive(x_31);
+if (x_33 == 0)
+{
+lean_object* x_34; lean_object* x_35; 
+x_34 = lean_ctor_get(x_31, 0);
+lean_dec(x_34);
+x_35 = lean_ctor_get(x_32, 0);
+lean_inc(x_35);
+lean_dec(x_32);
+lean_ctor_set(x_31, 0, x_35);
+return x_31;
+}
+else
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; 
+x_36 = lean_ctor_get(x_31, 1);
+lean_inc(x_36);
+lean_dec(x_31);
+x_37 = lean_ctor_get(x_32, 0);
+lean_inc(x_37);
+lean_dec(x_32);
+x_38 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_38, 0, x_37);
+lean_ctor_set(x_38, 1, x_36);
+return x_38;
+}
+}
+else
+{
+lean_object* x_39; lean_object* x_40; 
+x_39 = lean_ctor_get(x_31, 1);
+lean_inc(x_39);
+lean_dec(x_31);
+x_40 = lean_ctor_get(x_32, 0);
+lean_inc(x_40);
+lean_dec(x_32);
+x_5 = x_20;
+x_6 = x_40;
+x_7 = lean_box(0);
+x_16 = x_39;
+goto _start;
+}
+}
+else
+{
+uint8_t x_42; 
+lean_dec(x_20);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_3);
+x_42 = !lean_is_exclusive(x_31);
+if (x_42 == 0)
+{
+return x_31;
+}
+else
+{
+lean_object* x_43; lean_object* x_44; lean_object* x_45; 
+x_43 = lean_ctor_get(x_31, 0);
+x_44 = lean_ctor_get(x_31, 1);
+lean_inc(x_44);
+lean_inc(x_43);
+lean_dec(x_31);
+x_45 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_45, 0, x_43);
+lean_ctor_set(x_45, 1, x_44);
+return x_45;
+}
+}
+}
+else
+{
+uint8_t x_46; 
+x_46 = !lean_is_exclusive(x_26);
+if (x_46 == 0)
+{
+lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+x_47 = lean_ctor_get(x_26, 1);
+x_48 = lean_ctor_get(x_26, 0);
+lean_dec(x_48);
+lean_inc(x_3);
+x_49 = l_Lean_MessageData_ofExpr(x_3);
+x_50 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__5;
+lean_ctor_set_tag(x_26, 7);
+lean_ctor_set(x_26, 1, x_49);
+lean_ctor_set(x_26, 0, x_50);
+x_51 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__6;
+lean_ctor_set_tag(x_5, 7);
+lean_ctor_set(x_5, 1, x_51);
+lean_ctor_set(x_5, 0, x_26);
+x_52 = l_Lean_MessageData_ofExpr(x_19);
+x_53 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_53, 0, x_5);
+lean_ctor_set(x_53, 1, x_52);
+x_54 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_54, 0, x_53);
+lean_ctor_set(x_54, 1, x_50);
+x_55 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2(x_25, x_54, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_47);
+x_56 = lean_ctor_get(x_55, 0);
+lean_inc(x_56);
+x_57 = lean_ctor_get(x_55, 1);
+lean_inc(x_57);
+lean_dec(x_55);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+x_58 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1(x_23, x_25, x_56, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_57);
+lean_dec(x_56);
+if (lean_obj_tag(x_58) == 0)
+{
+lean_object* x_59; 
+x_59 = lean_ctor_get(x_58, 0);
+lean_inc(x_59);
+if (lean_obj_tag(x_59) == 0)
+{
+uint8_t x_60; 
+lean_dec(x_20);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_3);
+x_60 = !lean_is_exclusive(x_58);
+if (x_60 == 0)
+{
+lean_object* x_61; lean_object* x_62; 
+x_61 = lean_ctor_get(x_58, 0);
+lean_dec(x_61);
+x_62 = lean_ctor_get(x_59, 0);
+lean_inc(x_62);
+lean_dec(x_59);
+lean_ctor_set(x_58, 0, x_62);
+return x_58;
+}
+else
+{
+lean_object* x_63; lean_object* x_64; lean_object* x_65; 
+x_63 = lean_ctor_get(x_58, 1);
+lean_inc(x_63);
+lean_dec(x_58);
+x_64 = lean_ctor_get(x_59, 0);
+lean_inc(x_64);
+lean_dec(x_59);
+x_65 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_65, 0, x_64);
+lean_ctor_set(x_65, 1, x_63);
+return x_65;
+}
+}
+else
+{
+lean_object* x_66; lean_object* x_67; 
+x_66 = lean_ctor_get(x_58, 1);
+lean_inc(x_66);
+lean_dec(x_58);
+x_67 = lean_ctor_get(x_59, 0);
+lean_inc(x_67);
+lean_dec(x_59);
+x_5 = x_20;
+x_6 = x_67;
+x_7 = lean_box(0);
+x_16 = x_66;
+goto _start;
+}
+}
+else
+{
+uint8_t x_69; 
+lean_dec(x_20);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_3);
+x_69 = !lean_is_exclusive(x_58);
+if (x_69 == 0)
+{
+return x_58;
+}
+else
+{
+lean_object* x_70; lean_object* x_71; lean_object* x_72; 
+x_70 = lean_ctor_get(x_58, 0);
+x_71 = lean_ctor_get(x_58, 1);
+lean_inc(x_71);
+lean_inc(x_70);
+lean_dec(x_58);
+x_72 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_72, 0, x_70);
+lean_ctor_set(x_72, 1, x_71);
+return x_72;
+}
+}
+}
+else
+{
+lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; 
+x_73 = lean_ctor_get(x_26, 1);
+lean_inc(x_73);
+lean_dec(x_26);
+lean_inc(x_3);
+x_74 = l_Lean_MessageData_ofExpr(x_3);
+x_75 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__5;
+x_76 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_76, 0, x_75);
+lean_ctor_set(x_76, 1, x_74);
+x_77 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__6;
+lean_ctor_set_tag(x_5, 7);
+lean_ctor_set(x_5, 1, x_77);
+lean_ctor_set(x_5, 0, x_76);
+x_78 = l_Lean_MessageData_ofExpr(x_19);
+x_79 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_79, 0, x_5);
+lean_ctor_set(x_79, 1, x_78);
+x_80 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_80, 0, x_79);
+lean_ctor_set(x_80, 1, x_75);
+x_81 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2(x_25, x_80, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_73);
+x_82 = lean_ctor_get(x_81, 0);
+lean_inc(x_82);
+x_83 = lean_ctor_get(x_81, 1);
+lean_inc(x_83);
+lean_dec(x_81);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+x_84 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1(x_23, x_25, x_82, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_83);
+lean_dec(x_82);
+if (lean_obj_tag(x_84) == 0)
+{
+lean_object* x_85; 
+x_85 = lean_ctor_get(x_84, 0);
+lean_inc(x_85);
+if (lean_obj_tag(x_85) == 0)
+{
+lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; 
+lean_dec(x_20);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_3);
+x_86 = lean_ctor_get(x_84, 1);
+lean_inc(x_86);
+if (lean_is_exclusive(x_84)) {
+ lean_ctor_release(x_84, 0);
+ lean_ctor_release(x_84, 1);
+ x_87 = x_84;
+} else {
+ lean_dec_ref(x_84);
+ x_87 = lean_box(0);
+}
+x_88 = lean_ctor_get(x_85, 0);
+lean_inc(x_88);
+lean_dec(x_85);
+if (lean_is_scalar(x_87)) {
+ x_89 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_89 = x_87;
+}
+lean_ctor_set(x_89, 0, x_88);
+lean_ctor_set(x_89, 1, x_86);
+return x_89;
+}
+else
+{
+lean_object* x_90; lean_object* x_91; 
+x_90 = lean_ctor_get(x_84, 1);
+lean_inc(x_90);
+lean_dec(x_84);
+x_91 = lean_ctor_get(x_85, 0);
+lean_inc(x_91);
+lean_dec(x_85);
+x_5 = x_20;
+x_6 = x_91;
+x_7 = lean_box(0);
+x_16 = x_90;
+goto _start;
+}
+}
+else
+{
+lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; 
+lean_dec(x_20);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_3);
+x_93 = lean_ctor_get(x_84, 0);
+lean_inc(x_93);
+x_94 = lean_ctor_get(x_84, 1);
+lean_inc(x_94);
+if (lean_is_exclusive(x_84)) {
+ lean_ctor_release(x_84, 0);
+ lean_ctor_release(x_84, 1);
+ x_95 = x_84;
+} else {
+ lean_dec_ref(x_84);
+ x_95 = lean_box(0);
+}
+if (lean_is_scalar(x_95)) {
+ x_96 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_96 = x_95;
+}
+lean_ctor_set(x_96, 0, x_93);
+lean_ctor_set(x_96, 1, x_94);
+return x_96;
+}
+}
+}
+}
+else
 {
-lean_object* x_13; lean_object* x_14; 
+uint8_t x_97; 
+lean_free_object(x_5);
+lean_dec(x_20);
+lean_dec(x_19);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-x_13 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_13, 0, x_3);
-x_14 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_14, 0, x_13);
-lean_ctor_set(x_14, 1, x_12);
-return x_14;
+lean_dec(x_3);
+x_97 = !lean_is_exclusive(x_22);
+if (x_97 == 0)
+{
+return x_22;
 }
 else
 {
-lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; 
-x_15 = lean_ctor_get(x_2, 0);
+lean_object* x_98; lean_object* x_99; lean_object* x_100; 
+x_98 = lean_ctor_get(x_22, 0);
+x_99 = lean_ctor_get(x_22, 1);
+lean_inc(x_99);
+lean_inc(x_98);
+lean_dec(x_22);
+x_100 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_100, 0, x_98);
+lean_ctor_set(x_100, 1, x_99);
+return x_100;
+}
+}
+}
+else
+{
+lean_object* x_101; 
+lean_free_object(x_5);
+lean_dec(x_19);
+x_101 = lean_box(0);
+x_5 = x_20;
+x_6 = x_101;
+x_7 = lean_box(0);
+goto _start;
+}
+}
+else
+{
+lean_object* x_103; lean_object* x_104; uint8_t x_105; 
+x_103 = lean_ctor_get(x_5, 0);
+x_104 = lean_ctor_get(x_5, 1);
+lean_inc(x_104);
+lean_inc(x_103);
+lean_dec(x_5);
+x_105 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_3, x_103);
+if (x_105 == 0)
+{
+lean_object* x_106; 
 lean_inc(x_15);
-x_16 = lean_ctor_get(x_2, 1);
-lean_inc(x_16);
-x_17 = lean_ctor_get(x_2, 3);
-lean_inc(x_17);
-lean_dec(x_2);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
 lean_inc(x_11);
 lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_5);
-lean_inc(x_4);
-x_18 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3(x_1, x_15, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-if (lean_obj_tag(x_18) == 0)
+lean_inc(x_103);
+lean_inc(x_3);
+x_106 = lean_grind_mk_eq_proof(x_3, x_103, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+if (lean_obj_tag(x_106) == 0)
+{
+lean_object* x_107; lean_object* x_108; lean_object* x_109; lean_object* x_110; lean_object* x_111; uint8_t x_112; 
+x_107 = lean_ctor_get(x_106, 0);
+lean_inc(x_107);
+x_108 = lean_ctor_get(x_106, 1);
+lean_inc(x_108);
+lean_dec(x_106);
+x_109 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__4;
+x_110 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__1(x_109, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_108);
+x_111 = lean_ctor_get(x_110, 0);
+lean_inc(x_111);
+x_112 = lean_unbox(x_111);
+lean_dec(x_111);
+if (x_112 == 0)
+{
+lean_object* x_113; lean_object* x_114; lean_object* x_115; 
+lean_dec(x_103);
+x_113 = lean_ctor_get(x_110, 1);
+lean_inc(x_113);
+lean_dec(x_110);
+x_114 = lean_box(0);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+x_115 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1(x_107, x_109, x_114, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_113);
+if (lean_obj_tag(x_115) == 0)
 {
-lean_object* x_19; 
-x_19 = lean_ctor_get(x_18, 0);
-lean_inc(x_19);
-if (lean_obj_tag(x_19) == 0)
+lean_object* x_116; 
+x_116 = lean_ctor_get(x_115, 0);
+lean_inc(x_116);
+if (lean_obj_tag(x_116) == 0)
 {
-uint8_t x_20; 
-lean_dec(x_17);
-lean_dec(x_16);
+lean_object* x_117; lean_object* x_118; lean_object* x_119; lean_object* x_120; 
+lean_dec(x_104);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-x_20 = !lean_is_exclusive(x_18);
-if (x_20 == 0)
+lean_dec(x_3);
+x_117 = lean_ctor_get(x_115, 1);
+lean_inc(x_117);
+if (lean_is_exclusive(x_115)) {
+ lean_ctor_release(x_115, 0);
+ lean_ctor_release(x_115, 1);
+ x_118 = x_115;
+} else {
+ lean_dec_ref(x_115);
+ x_118 = lean_box(0);
+}
+x_119 = lean_ctor_get(x_116, 0);
+lean_inc(x_119);
+lean_dec(x_116);
+if (lean_is_scalar(x_118)) {
+ x_120 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_120 = x_118;
+}
+lean_ctor_set(x_120, 0, x_119);
+lean_ctor_set(x_120, 1, x_117);
+return x_120;
+}
+else
 {
-lean_object* x_21; 
-x_21 = lean_ctor_get(x_18, 0);
-lean_dec(x_21);
-return x_18;
+lean_object* x_121; lean_object* x_122; 
+x_121 = lean_ctor_get(x_115, 1);
+lean_inc(x_121);
+lean_dec(x_115);
+x_122 = lean_ctor_get(x_116, 0);
+lean_inc(x_122);
+lean_dec(x_116);
+x_5 = x_104;
+x_6 = x_122;
+x_7 = lean_box(0);
+x_16 = x_121;
+goto _start;
+}
 }
 else
 {
-lean_object* x_22; lean_object* x_23; 
-x_22 = lean_ctor_get(x_18, 1);
-lean_inc(x_22);
-lean_dec(x_18);
-x_23 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_23, 0, x_19);
-lean_ctor_set(x_23, 1, x_22);
-return x_23;
+lean_object* x_124; lean_object* x_125; lean_object* x_126; lean_object* x_127; 
+lean_dec(x_104);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_3);
+x_124 = lean_ctor_get(x_115, 0);
+lean_inc(x_124);
+x_125 = lean_ctor_get(x_115, 1);
+lean_inc(x_125);
+if (lean_is_exclusive(x_115)) {
+ lean_ctor_release(x_115, 0);
+ lean_ctor_release(x_115, 1);
+ x_126 = x_115;
+} else {
+ lean_dec_ref(x_115);
+ x_126 = lean_box(0);
+}
+if (lean_is_scalar(x_126)) {
+ x_127 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_127 = x_126;
+}
+lean_ctor_set(x_127, 0, x_124);
+lean_ctor_set(x_127, 1, x_125);
+return x_127;
 }
 }
 else
 {
-lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; size_t x_33; size_t x_34; uint8_t x_35; lean_object* x_36; lean_object* x_37; uint8_t x_38; 
-lean_dec(x_19);
-x_24 = lean_ctor_get(x_18, 1);
-lean_inc(x_24);
-lean_dec(x_18);
-x_25 = lean_unsigned_to_nat(0u);
-x_26 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_16, x_25);
-x_27 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__1;
-lean_inc(x_26);
-x_28 = lean_mk_array(x_26, x_27);
-x_29 = lean_unsigned_to_nat(1u);
-x_30 = lean_nat_sub(x_26, x_29);
-lean_dec(x_26);
-x_31 = l___private_Lean_Expr_0__Lean_Expr_getAppArgsAux(x_16, x_28, x_30);
-x_32 = lean_box(0);
-x_33 = lean_array_size(x_31);
-x_34 = 0;
-x_35 = 0;
-x_36 = l_Array_forIn_x27Unsafe_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__1(x_1, x_31, x_32, x_31, x_33, x_34, x_35, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_24);
-lean_dec(x_31);
-x_37 = lean_ctor_get(x_36, 0);
-lean_inc(x_37);
-x_38 = lean_unbox(x_37);
-lean_dec(x_37);
-if (x_38 == 0)
+lean_object* x_128; 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_object* x_135; lean_object* x_136; lean_object* x_137; lean_object* x_138; lean_object* x_139; lean_object* x_140; lean_object* x_141; 
+x_128 = lean_ctor_get(x_110, 1);
+lean_inc(x_128);
+if (lean_is_exclusive(x_110)) {
+ lean_ctor_release(x_110, 0);
+ lean_ctor_release(x_110, 1);
+ x_129 = x_110;
+} else {
+ lean_dec_ref(x_110);
+ x_129 = lean_box(0);
+}
+lean_inc(x_3);
+x_130 = l_Lean_MessageData_ofExpr(x_3);
+x_131 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__5;
+if (lean_is_scalar(x_129)) {
+ x_132 = lean_alloc_ctor(7, 2, 0);
+} else {
+ x_132 = x_129;
+ lean_ctor_set_tag(x_132, 7);
+}
+lean_ctor_set(x_132, 0, x_131);
+lean_ctor_set(x_132, 1, x_130);
+x_133 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__6;
+x_134 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_134, 0, x_132);
+lean_ctor_set(x_134, 1, x_133);
+x_135 = l_Lean_MessageData_ofExpr(x_103);
+x_136 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_136, 0, x_134);
+lean_ctor_set(x_136, 1, x_135);
+x_137 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_137, 0, x_136);
+lean_ctor_set(x_137, 1, x_131);
+x_138 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2(x_109, x_137, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_128);
+x_139 = lean_ctor_get(x_138, 0);
+lean_inc(x_139);
+x_140 = lean_ctor_get(x_138, 1);
+lean_inc(x_140);
+lean_dec(x_138);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+x_141 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1(x_107, x_109, x_139, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_140);
+lean_dec(x_139);
+if (lean_obj_tag(x_141) == 0)
 {
-lean_object* x_39; lean_object* x_40; lean_object* x_41; 
-x_39 = lean_ctor_get(x_36, 1);
-lean_inc(x_39);
-lean_dec(x_36);
-x_40 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__5;
+lean_object* x_142; 
+x_142 = lean_ctor_get(x_141, 0);
+lean_inc(x_142);
+if (lean_obj_tag(x_142) == 0)
+{
+lean_object* x_143; lean_object* x_144; lean_object* x_145; lean_object* x_146; 
+lean_dec(x_104);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_3);
+x_143 = lean_ctor_get(x_141, 1);
+lean_inc(x_143);
+if (lean_is_exclusive(x_141)) {
+ lean_ctor_release(x_141, 0);
+ lean_ctor_release(x_141, 1);
+ x_144 = x_141;
+} else {
+ lean_dec_ref(x_141);
+ x_144 = lean_box(0);
+}
+x_145 = lean_ctor_get(x_142, 0);
+lean_inc(x_145);
+lean_dec(x_142);
+if (lean_is_scalar(x_144)) {
+ x_146 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_146 = x_144;
+}
+lean_ctor_set(x_146, 0, x_145);
+lean_ctor_set(x_146, 1, x_143);
+return x_146;
+}
+else
+{
+lean_object* x_147; lean_object* x_148; 
+x_147 = lean_ctor_get(x_141, 1);
+lean_inc(x_147);
+lean_dec(x_141);
+x_148 = lean_ctor_get(x_142, 0);
+lean_inc(x_148);
+lean_dec(x_142);
+x_5 = x_104;
+x_6 = x_148;
+x_7 = lean_box(0);
+x_16 = x_147;
+goto _start;
+}
+}
+else
+{
+lean_object* x_150; lean_object* x_151; lean_object* x_152; lean_object* x_153; 
+lean_dec(x_104);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_3);
+x_150 = lean_ctor_get(x_141, 0);
+lean_inc(x_150);
+x_151 = lean_ctor_get(x_141, 1);
+lean_inc(x_151);
+if (lean_is_exclusive(x_141)) {
+ lean_ctor_release(x_141, 0);
+ lean_ctor_release(x_141, 1);
+ x_152 = x_141;
+} else {
+ lean_dec_ref(x_141);
+ x_152 = lean_box(0);
+}
+if (lean_is_scalar(x_152)) {
+ x_153 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_153 = x_152;
+}
+lean_ctor_set(x_153, 0, x_150);
+lean_ctor_set(x_153, 1, x_151);
+return x_153;
+}
+}
+}
+else
+{
+lean_object* x_154; lean_object* x_155; lean_object* x_156; lean_object* x_157; 
+lean_dec(x_104);
+lean_dec(x_103);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_3);
+x_154 = lean_ctor_get(x_106, 0);
+lean_inc(x_154);
+x_155 = lean_ctor_get(x_106, 1);
+lean_inc(x_155);
+if (lean_is_exclusive(x_106)) {
+ lean_ctor_release(x_106, 0);
+ lean_ctor_release(x_106, 1);
+ x_156 = x_106;
+} else {
+ lean_dec_ref(x_106);
+ x_156 = lean_box(0);
+}
+if (lean_is_scalar(x_156)) {
+ x_157 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_157 = x_156;
+}
+lean_ctor_set(x_157, 0, x_154);
+lean_ctor_set(x_157, 1, x_155);
+return x_157;
+}
+}
+else
+{
+lean_object* x_158; 
+lean_dec(x_103);
+x_158 = lean_box(0);
+x_5 = x_104;
+x_6 = x_158;
+x_7 = lean_box(0);
+goto _start;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__2(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
+_start:
+{
+if (lean_obj_tag(x_4) == 0)
+{
+lean_object* x_16; 
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_1);
+x_16 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_16, 0, x_5);
+lean_ctor_set(x_16, 1, x_15);
+return x_16;
+}
+else
+{
+lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+lean_dec(x_5);
+x_17 = lean_ctor_get(x_4, 0);
+lean_inc(x_17);
+x_18 = lean_ctor_get(x_4, 1);
+lean_inc(x_18);
+lean_dec(x_4);
+x_19 = lean_box(0);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
 lean_inc(x_11);
 lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_5);
-lean_inc(x_4);
-x_41 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__2(x_40, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_39);
-if (lean_obj_tag(x_41) == 0)
+lean_inc(x_1);
+x_20 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1(x_1, x_2, x_17, x_1, x_1, x_19, lean_box(0), x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
+if (lean_obj_tag(x_20) == 0)
 {
-lean_object* x_42; 
-x_42 = lean_ctor_get(x_41, 0);
-lean_inc(x_42);
-if (lean_obj_tag(x_42) == 0)
+lean_object* x_21; 
+x_21 = lean_ctor_get(x_20, 1);
+lean_inc(x_21);
+lean_dec(x_20);
+x_4 = x_18;
+x_5 = x_19;
+x_6 = lean_box(0);
+x_15 = x_21;
+goto _start;
+}
+else
 {
-uint8_t x_43; 
-lean_dec(x_17);
+uint8_t x_23; 
+lean_dec(x_18);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-x_43 = !lean_is_exclusive(x_41);
-if (x_43 == 0)
+lean_dec(x_1);
+x_23 = !lean_is_exclusive(x_20);
+if (x_23 == 0)
 {
-lean_object* x_44; 
-x_44 = lean_ctor_get(x_41, 0);
-lean_dec(x_44);
-return x_41;
+return x_20;
 }
 else
 {
-lean_object* x_45; lean_object* x_46; 
-x_45 = lean_ctor_get(x_41, 1);
-lean_inc(x_45);
-lean_dec(x_41);
-x_46 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_46, 0, x_42);
-lean_ctor_set(x_46, 1, x_45);
-return x_46;
+lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+x_24 = lean_ctor_get(x_20, 0);
+x_25 = lean_ctor_get(x_20, 1);
+lean_inc(x_25);
+lean_inc(x_24);
+lean_dec(x_20);
+x_26 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_26, 0, x_24);
+lean_ctor_set(x_26, 1, x_25);
+return x_26;
 }
 }
-else
-{
-lean_object* x_47; lean_object* x_48; 
-x_47 = lean_ctor_get(x_41, 1);
-lean_inc(x_47);
-lean_dec(x_41);
-x_48 = lean_ctor_get(x_42, 0);
-lean_inc(x_48);
-lean_dec(x_42);
-x_2 = x_17;
-x_3 = x_48;
-x_12 = x_47;
-goto _start;
 }
 }
-else
+}
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__3(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
+_start:
 {
-uint8_t x_50; 
-lean_dec(x_17);
+if (lean_obj_tag(x_4) == 0)
+{
+lean_object* x_16; 
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-x_50 = !lean_is_exclusive(x_41);
-if (x_50 == 0)
-{
-return x_41;
+x_16 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_16, 0, x_5);
+lean_ctor_set(x_16, 1, x_15);
+return x_16;
 }
 else
 {
-lean_object* x_51; lean_object* x_52; lean_object* x_53; 
-x_51 = lean_ctor_get(x_41, 0);
-x_52 = lean_ctor_get(x_41, 1);
-lean_inc(x_52);
-lean_inc(x_51);
-lean_dec(x_41);
-x_53 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_53, 0, x_51);
-lean_ctor_set(x_53, 1, x_52);
-return x_53;
-}
-}
-}
-else
+lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+lean_dec(x_5);
+x_17 = lean_ctor_get(x_4, 0);
+lean_inc(x_17);
+x_18 = lean_ctor_get(x_4, 1);
+lean_inc(x_18);
+lean_dec(x_4);
+x_19 = lean_box(0);
+x_20 = lean_box(0);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc_n(x_17, 2);
+x_21 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__2(x_17, x_19, x_17, x_17, x_20, lean_box(0), x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
+lean_dec(x_17);
+if (lean_obj_tag(x_21) == 0)
 {
-lean_object* x_54; lean_object* x_55; 
-x_54 = lean_ctor_get(x_36, 1);
-lean_inc(x_54);
-lean_dec(x_36);
-x_55 = lean_box(0);
-x_2 = x_17;
-x_3 = x_55;
-x_12 = x_54;
+lean_object* x_22; 
+x_22 = lean_ctor_get(x_21, 1);
+lean_inc(x_22);
+lean_dec(x_21);
+x_4 = x_18;
+x_5 = x_20;
+x_6 = lean_box(0);
+x_15 = x_22;
 goto _start;
 }
-}
-}
 else
 {
-uint8_t x_57; 
-lean_dec(x_17);
-lean_dec(x_16);
+uint8_t x_24; 
+lean_dec(x_18);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-x_57 = !lean_is_exclusive(x_18);
-if (x_57 == 0)
+x_24 = !lean_is_exclusive(x_21);
+if (x_24 == 0)
 {
-return x_18;
+return x_21;
 }
 else
 {
-lean_object* x_58; lean_object* x_59; lean_object* x_60; 
-x_58 = lean_ctor_get(x_18, 0);
-x_59 = lean_ctor_get(x_18, 1);
-lean_inc(x_59);
-lean_inc(x_58);
-lean_dec(x_18);
-x_60 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_60, 0, x_58);
-lean_ctor_set(x_60, 1, x_59);
-return x_60;
-}
-}
-}
-}
+lean_object* x_25; lean_object* x_26; lean_object* x_27; 
+x_25 = lean_ctor_get(x_21, 0);
+x_26 = lean_ctor_get(x_21, 1);
+lean_inc(x_26);
+lean_inc(x_25);
+lean_dec(x_21);
+x_27 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_27, 0, x_25);
+lean_ctor_set(x_27, 1, x_26);
+return x_27;
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("( __do_lift._@.Lean.Meta.Tactic.Grind.Inv._hyg.404.0 ).isEmpty\n\n", 64, 64);
-return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__2() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__1;
-x_3 = lean_string_append(x_1, x_2);
-return x_3;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__3() {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs(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_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__4;
-x_2 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___closed__4;
-x_3 = lean_unsigned_to_nat(50u);
-x_4 = lean_unsigned_to_nat(4u);
-x_5 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__2;
-x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
-return x_6;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents(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:
+lean_object* x_10; 
+x_10 = l_Lean_Meta_Grind_getEqcs(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+if (lean_obj_tag(x_10) == 0)
 {
-lean_object* x_11; lean_object* x_12; uint8_t x_13; 
-x_11 = l_Lean_Meta_Grind_isRoot(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-x_12 = lean_ctor_get(x_11, 0);
+lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
+x_11 = lean_ctor_get(x_10, 0);
+lean_inc(x_11);
+x_12 = lean_ctor_get(x_10, 1);
 lean_inc(x_12);
-x_13 = lean_unbox(x_12);
-lean_dec(x_12);
-if (x_13 == 0)
-{
-lean_object* x_14; lean_object* x_15; lean_object* x_16; 
-x_14 = lean_ctor_get(x_11, 1);
-lean_inc(x_14);
+lean_dec(x_10);
+x_13 = lean_box(0);
+x_14 = lean_box(0);
+lean_inc(x_11);
+x_15 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__3(x_11, x_13, x_11, x_11, x_14, lean_box(0), x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_12);
 lean_dec(x_11);
-x_15 = l_Lean_Meta_Grind_getParents(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_14);
-x_16 = lean_ctor_get(x_15, 0);
-lean_inc(x_16);
-if (lean_obj_tag(x_16) == 0)
+if (lean_obj_tag(x_15) == 0)
 {
-uint8_t x_17; 
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-x_17 = !lean_is_exclusive(x_15);
-if (x_17 == 0)
+uint8_t x_16; 
+x_16 = !lean_is_exclusive(x_15);
+if (x_16 == 0)
 {
-lean_object* x_18; lean_object* x_19; 
-x_18 = lean_ctor_get(x_15, 0);
-lean_dec(x_18);
-x_19 = lean_box(0);
-lean_ctor_set(x_15, 0, x_19);
+lean_object* x_17; 
+x_17 = lean_ctor_get(x_15, 0);
+lean_dec(x_17);
+lean_ctor_set(x_15, 0, x_14);
 return x_15;
 }
 else
 {
-lean_object* x_20; lean_object* x_21; lean_object* x_22; 
-x_20 = lean_ctor_get(x_15, 1);
-lean_inc(x_20);
-lean_dec(x_15);
-x_21 = lean_box(0);
-x_22 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_22, 0, x_21);
-lean_ctor_set(x_22, 1, x_20);
-return x_22;
-}
-}
-else
-{
-lean_object* x_23; lean_object* x_24; lean_object* x_25; 
-lean_dec(x_16);
-x_23 = lean_ctor_get(x_15, 1);
-lean_inc(x_23);
+lean_object* x_18; lean_object* x_19; 
+x_18 = lean_ctor_get(x_15, 1);
+lean_inc(x_18);
 lean_dec(x_15);
-x_24 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__3;
-x_25 = l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4(x_24, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_23);
-return x_25;
+x_19 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_19, 0, x_14);
+lean_ctor_set(x_19, 1, x_18);
+return x_19;
 }
 }
 else
 {
-lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; 
-x_26 = lean_ctor_get(x_11, 1);
-lean_inc(x_26);
-lean_dec(x_11);
-x_27 = l_Lean_Meta_Grind_getParents(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_26);
-x_28 = lean_ctor_get(x_27, 0);
-lean_inc(x_28);
-x_29 = lean_ctor_get(x_27, 1);
-lean_inc(x_29);
-lean_dec(x_27);
-x_30 = lean_box(0);
-x_31 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3(x_1, x_28, x_30, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_29);
-if (lean_obj_tag(x_31) == 0)
-{
-uint8_t x_32; 
-x_32 = !lean_is_exclusive(x_31);
-if (x_32 == 0)
+uint8_t x_20; 
+x_20 = !lean_is_exclusive(x_15);
+if (x_20 == 0)
 {
-lean_object* x_33; 
-x_33 = lean_ctor_get(x_31, 0);
-lean_dec(x_33);
-lean_ctor_set(x_31, 0, x_30);
-return x_31;
+return x_15;
 }
 else
 {
-lean_object* x_34; lean_object* x_35; 
-x_34 = lean_ctor_get(x_31, 1);
-lean_inc(x_34);
-lean_dec(x_31);
-x_35 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_35, 0, x_30);
-lean_ctor_set(x_35, 1, x_34);
-return x_35;
+lean_object* x_21; lean_object* x_22; lean_object* x_23; 
+x_21 = lean_ctor_get(x_15, 0);
+x_22 = lean_ctor_get(x_15, 1);
+lean_inc(x_22);
+lean_inc(x_21);
+lean_dec(x_15);
+x_23 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_23, 0, x_21);
+lean_ctor_set(x_23, 1, x_22);
+return x_23;
+}
 }
 }
 else
 {
-uint8_t x_36; 
-x_36 = !lean_is_exclusive(x_31);
-if (x_36 == 0)
+uint8_t x_24; 
+lean_dec(x_8);
+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_24 = !lean_is_exclusive(x_10);
+if (x_24 == 0)
 {
-return x_31;
+return x_10;
 }
 else
 {
-lean_object* x_37; lean_object* x_38; lean_object* x_39; 
-x_37 = lean_ctor_get(x_31, 0);
-x_38 = lean_ctor_get(x_31, 1);
-lean_inc(x_38);
-lean_inc(x_37);
-lean_dec(x_31);
-x_39 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_39, 0, x_37);
-lean_ctor_set(x_39, 1, x_38);
-return x_39;
-}
+lean_object* x_25; lean_object* x_26; lean_object* x_27; 
+x_25 = lean_ctor_get(x_10, 0);
+x_26 = lean_ctor_get(x_10, 1);
+lean_inc(x_26);
+lean_inc(x_25);
+lean_dec(x_10);
+x_27 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_27, 0, x_25);
+lean_ctor_set(x_27, 1, x_26);
+return x_27;
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
 _start:
 {
-size_t x_17; size_t x_18; uint8_t x_19; lean_object* x_20; 
-x_17 = lean_unbox_usize(x_5);
-lean_dec(x_5);
-x_18 = lean_unbox_usize(x_6);
-lean_dec(x_6);
-x_19 = lean_unbox(x_7);
+lean_object* x_13; 
+x_13 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
 lean_dec(x_7);
-x_20 = l_Array_forIn_x27Unsafe_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__1(x_1, x_2, x_3, x_4, x_17, x_18, x_19, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
-lean_dec(x_15);
-lean_dec(x_14);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
+lean_dec(x_6);
+lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+_start:
+{
+lean_object* x_17; 
+x_17 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+lean_dec(x_4);
 lean_dec(x_2);
 lean_dec(x_1);
-return x_20;
+return x_17;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
 _start:
 {
-lean_object* x_13; 
-x_13 = l_Lean_RBNode_forIn_visit___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___spec__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-lean_dec(x_1);
-return x_13;
+lean_object* x_16; 
+x_16 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_16;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___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, lean_object* x_10) {
+LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__3___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
 _start:
 {
-lean_object* x_11; 
-x_11 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_object* x_16; 
+x_16 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
+lean_dec(x_3);
+lean_dec(x_2);
 lean_dec(x_1);
-return x_11;
+return x_16;
 }
 }
 LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Meta_Grind_checkInvariants___spec__4___rarg(lean_object* x_1, lean_object* x_2, size_t x_3, size_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
@@ -2634,19 +5414,74 @@ return x_25;
 static lean_object* _init_l_Lean_Meta_Grind_checkInvariants___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_object* x_1; 
+x_1 = l_Lean_Meta_Grind_grind_debug_proofs;
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_checkInvariants___lambda__1(uint8_t 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, lean_object* x_11) {
+_start:
+{
+if (x_1 == 0)
+{
+lean_object* x_12; lean_object* x_13; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_12 = lean_box(0);
+x_13 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_13, 0, x_12);
+lean_ctor_set(x_13, 1, x_11);
+return x_13;
+}
+else
+{
+lean_object* x_14; lean_object* x_15; uint8_t x_16; 
+x_14 = lean_ctor_get(x_9, 2);
+lean_inc(x_14);
+x_15 = l_Lean_Meta_Grind_checkInvariants___lambda__1___closed__1;
+x_16 = l_Lean_Option_get___at___private_Lean_Util_Profile_0__Lean_get__profiler___spec__1(x_14, x_15);
+lean_dec(x_14);
+if (x_16 == 0)
+{
+lean_object* x_17; lean_object* x_18; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_17 = lean_box(0);
+x_18 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_18, 0, x_17);
+lean_ctor_set(x_18, 1, x_11);
+return x_18;
 }
+else
+{
+lean_object* x_19; 
+x_19 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+return x_19;
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_checkInvariants___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, lean_object* x_11) {
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_checkInvariants___lambda__2(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, lean_object* x_11) {
 _start:
 {
 lean_object* x_12; lean_object* x_13; lean_object* x_14; 
 x_12 = lean_ctor_get(x_1, 1);
+lean_inc(x_12);
+lean_dec(x_1);
 x_13 = lean_ctor_get(x_12, 0);
+lean_inc(x_13);
 lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
@@ -2667,10 +5502,14 @@ x_16 = lean_ctor_get(x_14, 1);
 x_17 = lean_ctor_get(x_14, 0);
 lean_dec(x_17);
 x_18 = lean_ctor_get(x_12, 2);
+lean_inc(x_18);
 x_19 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_13, x_18);
+lean_dec(x_18);
+lean_dec(x_13);
 if (x_19 == 0)
 {
 lean_object* x_20; 
+lean_dec(x_12);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
@@ -2679,7 +5518,7 @@ lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
-x_20 = l_Lean_Meta_Grind_checkInvariants___lambda__1___closed__1;
+x_20 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__1;
 lean_ctor_set(x_14, 0, x_20);
 return x_14;
 }
@@ -2697,7 +5536,7 @@ if (x_22 == 0)
 lean_object* x_23; lean_object* x_24; 
 x_23 = lean_ctor_get(x_21, 0);
 lean_dec(x_23);
-x_24 = l_Lean_Meta_Grind_checkInvariants___lambda__1___closed__1;
+x_24 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__1;
 lean_ctor_set(x_21, 0, x_24);
 return x_21;
 }
@@ -2707,7 +5546,7 @@ lean_object* x_25; lean_object* x_26; lean_object* x_27;
 x_25 = lean_ctor_get(x_21, 1);
 lean_inc(x_25);
 lean_dec(x_21);
-x_26 = l_Lean_Meta_Grind_checkInvariants___lambda__1___closed__1;
+x_26 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__1;
 x_27 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_27, 0, x_26);
 lean_ctor_set(x_27, 1, x_25);
@@ -2745,10 +5584,14 @@ x_32 = lean_ctor_get(x_14, 1);
 lean_inc(x_32);
 lean_dec(x_14);
 x_33 = lean_ctor_get(x_12, 2);
+lean_inc(x_33);
 x_34 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_13, x_33);
+lean_dec(x_33);
+lean_dec(x_13);
 if (x_34 == 0)
 {
 lean_object* x_35; lean_object* x_36; 
+lean_dec(x_12);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
@@ -2757,7 +5600,7 @@ lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
-x_35 = l_Lean_Meta_Grind_checkInvariants___lambda__1___closed__1;
+x_35 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__1;
 x_36 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_36, 0, x_35);
 lean_ctor_set(x_36, 1, x_32);
@@ -2780,7 +5623,7 @@ if (lean_is_exclusive(x_37)) {
  lean_dec_ref(x_37);
  x_39 = lean_box(0);
 }
-x_40 = l_Lean_Meta_Grind_checkInvariants___lambda__1___closed__1;
+x_40 = l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__1;
 if (lean_is_scalar(x_39)) {
  x_41 = lean_alloc_ctor(0, 2, 0);
 } else {
@@ -2820,6 +5663,8 @@ return x_45;
 else
 {
 uint8_t x_46; 
+lean_dec(x_13);
+lean_dec(x_12);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
@@ -2861,95 +5706,147 @@ static lean_object* _init_l_Lean_Meta_Grind_checkInvariants___closed__2() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_checkInvariants___lambda__1___boxed), 11, 0);
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_checkInvariants___lambda__2___boxed), 11, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_checkInvariants(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_EXPORT lean_object* l_Lean_Meta_Grind_checkInvariants(uint8_t 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:
 {
-lean_object* x_10; lean_object* x_11; uint8_t x_12; 
-x_10 = lean_ctor_get(x_7, 2);
-lean_inc(x_10);
-x_11 = l_Lean_Meta_Grind_checkInvariants___closed__1;
-x_12 = l_Lean_Option_get___at___private_Lean_Util_Profile_0__Lean_get__profiler___spec__1(x_10, x_11);
-lean_dec(x_10);
-if (x_12 == 0)
+lean_object* x_11; lean_object* x_12; uint8_t x_13; 
+x_11 = lean_ctor_get(x_8, 2);
+lean_inc(x_11);
+x_12 = l_Lean_Meta_Grind_checkInvariants___closed__1;
+x_13 = l_Lean_Option_get___at___private_Lean_Util_Profile_0__Lean_get__profiler___spec__1(x_11, x_12);
+lean_dec(x_11);
+if (x_13 == 0)
 {
-lean_object* x_13; lean_object* x_14; 
-lean_dec(x_8);
-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_13 = lean_box(0);
-x_14 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_14, 0, x_13);
-lean_ctor_set(x_14, 1, x_9);
-return x_14;
+lean_object* x_14; lean_object* x_15; 
+x_14 = lean_box(0);
+x_15 = l_Lean_Meta_Grind_checkInvariants___lambda__1(x_1, x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_15;
 }
 else
 {
-lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; 
-x_15 = lean_st_ref_get(x_1, x_9);
-x_16 = lean_ctor_get(x_15, 0);
-lean_inc(x_16);
-x_17 = lean_ctor_get(x_15, 1);
+lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; 
+x_16 = lean_st_ref_get(x_2, x_10);
+x_17 = lean_ctor_get(x_16, 0);
 lean_inc(x_17);
-lean_dec(x_15);
 x_18 = lean_ctor_get(x_16, 1);
 lean_inc(x_18);
 lean_dec(x_16);
-x_19 = lean_box(0);
-x_20 = l_Lean_Meta_Grind_checkInvariants___closed__2;
-x_21 = l_Lean_PersistentHashMap_forIn___at_Lean_Meta_Grind_checkInvariants___spec__1(x_18, x_19, x_20, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_17);
-if (lean_obj_tag(x_21) == 0)
+x_19 = lean_ctor_get(x_17, 1);
+lean_inc(x_19);
+lean_dec(x_17);
+x_20 = lean_box(0);
+x_21 = l_Lean_Meta_Grind_checkInvariants___closed__2;
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+lean_inc(x_2);
+x_22 = l_Lean_PersistentHashMap_forIn___at_Lean_Meta_Grind_checkInvariants___spec__1(x_19, x_20, x_21, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_18);
+if (lean_obj_tag(x_22) == 0)
 {
-uint8_t x_22; 
-x_22 = !lean_is_exclusive(x_21);
-if (x_22 == 0)
+if (x_1 == 0)
 {
-lean_object* x_23; 
-x_23 = lean_ctor_get(x_21, 0);
-lean_dec(x_23);
-lean_ctor_set(x_21, 0, x_19);
-return x_21;
+lean_object* x_23; lean_object* x_24; 
+x_23 = lean_ctor_get(x_22, 1);
+lean_inc(x_23);
+lean_dec(x_22);
+x_24 = l_Lean_Meta_Grind_checkInvariants___lambda__1(x_1, x_20, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_23);
+return x_24;
 }
 else
 {
-lean_object* x_24; lean_object* x_25; 
-x_24 = lean_ctor_get(x_21, 1);
-lean_inc(x_24);
-lean_dec(x_21);
-x_25 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_25, 0, x_19);
-lean_ctor_set(x_25, 1, x_24);
-return x_25;
+lean_object* x_25; lean_object* x_26; 
+x_25 = lean_ctor_get(x_22, 1);
+lean_inc(x_25);
+lean_dec(x_22);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+lean_inc(x_2);
+x_26 = l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_25);
+if (lean_obj_tag(x_26) == 0)
+{
+lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_27 = lean_ctor_get(x_26, 0);
+lean_inc(x_27);
+x_28 = lean_ctor_get(x_26, 1);
+lean_inc(x_28);
+lean_dec(x_26);
+x_29 = l_Lean_Meta_Grind_checkInvariants___lambda__1(x_1, x_27, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_28);
+lean_dec(x_27);
+return x_29;
 }
+else
+{
+uint8_t x_30; 
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_30 = !lean_is_exclusive(x_26);
+if (x_30 == 0)
+{
+return x_26;
 }
 else
 {
-uint8_t x_26; 
-x_26 = !lean_is_exclusive(x_21);
-if (x_26 == 0)
+lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_31 = lean_ctor_get(x_26, 0);
+x_32 = lean_ctor_get(x_26, 1);
+lean_inc(x_32);
+lean_inc(x_31);
+lean_dec(x_26);
+x_33 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_33, 0, x_31);
+lean_ctor_set(x_33, 1, x_32);
+return x_33;
+}
+}
+}
+}
+else
 {
-return x_21;
+uint8_t x_34; 
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_34 = !lean_is_exclusive(x_22);
+if (x_34 == 0)
+{
+return x_22;
 }
 else
 {
-lean_object* x_27; lean_object* x_28; lean_object* x_29; 
-x_27 = lean_ctor_get(x_21, 0);
-x_28 = lean_ctor_get(x_21, 1);
-lean_inc(x_28);
-lean_inc(x_27);
-lean_dec(x_21);
-x_29 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_29, 0, x_27);
-lean_ctor_set(x_29, 1, x_28);
-return x_29;
+lean_object* x_35; lean_object* x_36; lean_object* x_37; 
+x_35 = lean_ctor_get(x_22, 0);
+x_36 = lean_ctor_get(x_22, 1);
+lean_inc(x_36);
+lean_inc(x_35);
+lean_dec(x_22);
+x_37 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_37, 0, x_35);
+lean_ctor_set(x_37, 1, x_36);
+return x_37;
 }
 }
 }
@@ -2991,14 +5888,35 @@ return x_15;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_checkInvariants___lambda__1___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, lean_object* x_10, lean_object* x_11) {
 _start:
 {
+uint8_t x_12; lean_object* x_13; 
+x_12 = lean_unbox(x_1);
+lean_dec(x_1);
+x_13 = l_Lean_Meta_Grind_checkInvariants___lambda__1(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_2);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_checkInvariants___lambda__2___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, lean_object* x_10, lean_object* x_11) {
+_start:
+{
 lean_object* x_12; 
-x_12 = l_Lean_Meta_Grind_checkInvariants___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+x_12 = l_Lean_Meta_Grind_checkInvariants___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
 lean_dec(x_2);
+return x_12;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_checkInvariants___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, lean_object* x_10) {
+_start:
+{
+uint8_t x_11; lean_object* x_12; 
+x_11 = lean_unbox(x_1);
 lean_dec(x_1);
+x_12 = l_Lean_Meta_Grind_checkInvariants(x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 return x_12;
 }
 }
 lean_object* initialize_Lean_Meta_Tactic_Grind_Types(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind_Proof(uint8_t builtin, lean_object*);
 static bool _G_initialized = false;
 LEAN_EXPORT lean_object* initialize_Lean_Meta_Tactic_Grind_Inv(uint8_t builtin, lean_object* w) {
 lean_object * res;
@@ -3007,6 +5925,9 @@ _G_initialized = true;
 res = initialize_Lean_Meta_Tactic_Grind_Types(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
+res = initialize_Lean_Meta_Tactic_Grind_Proof(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
 l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__1 = _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__1();
 lean_mark_persistent(l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__1);
 l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__2 = _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__2();
@@ -3021,26 +5942,46 @@ l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___
 lean_mark_persistent(l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__6);
 l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__7 = _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__7();
 lean_mark_persistent(l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__1___closed__7);
-l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__1 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__1();
-lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__1);
-l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__2 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__2();
-lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__2);
-l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__3 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__3();
-lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__3);
-l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__4 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__4();
-lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__4);
-l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__5 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__5();
-lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__5);
-l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__6 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__6();
-lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__6);
-l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__7 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__7();
-lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__7);
-l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__8 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__8();
-lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__8);
-l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__9 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__9();
-lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__3___closed__9);
-l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4___closed__1 = _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4___closed__1();
-lean_mark_persistent(l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__4___closed__1);
+l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5___closed__1 = _init_l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5___closed__1();
+l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5___closed__2 = _init_l_Lean_PersistentHashMap_findEntryAux___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__5___closed__2();
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__1);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__2 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__2();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__2);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__3 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__3();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__3);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__4);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__5 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__5();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__5);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__6 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__6();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__1___closed__6);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__1 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__1();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__1);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__2 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__2();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__2);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__3 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__3();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___lambda__2___closed__3);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__1 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__1();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__1);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__2 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__2();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__2);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__3 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__3();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__3);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__4 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__4();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__4);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__5 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__5();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__5);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__6 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__6();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__6);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__7 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__7();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__7);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__8 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__8();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__8);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__9 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__9();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__7___closed__9);
+l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__8___closed__1 = _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__8___closed__1();
+lean_mark_persistent(l_panic___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___spec__8___closed__1);
 l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__1();
 lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__1);
 l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkEqc___closed__2();
@@ -3067,6 +6008,42 @@ l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed_
 lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__2);
 l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__3();
 lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkParents___closed__3);
+l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__1 = _init_l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__1();
+lean_mark_persistent(l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__1);
+l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__2 = _init_l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__2();
+lean_mark_persistent(l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__2);
+l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__3 = _init_l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__3();
+lean_mark_persistent(l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__3);
+l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__4 = _init_l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__4();
+lean_mark_persistent(l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__4);
+l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__5 = _init_l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__5();
+lean_mark_persistent(l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__5);
+l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__6 = _init_l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__6();
+lean_mark_persistent(l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__6);
+l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__7 = _init_l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__7();
+lean_mark_persistent(l_Std_Range_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkPtrEqImpliesStructEq___spec__1___closed__7);
+l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__1 = _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__1();
+lean_mark_persistent(l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__1);
+l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__2 = _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__2();
+lean_mark_persistent(l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__2);
+l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__3 = _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__3();
+lean_mark_persistent(l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__3);
+l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__4 = _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__4();
+lean_mark_persistent(l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__4);
+l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__5 = _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__5();
+lean_mark_persistent(l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___lambda__1___closed__5);
+l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__1 = _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__1();
+lean_mark_persistent(l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__1);
+l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__2 = _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__2();
+lean_mark_persistent(l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__2);
+l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__3 = _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__3();
+lean_mark_persistent(l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__3);
+l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__4 = _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__4();
+lean_mark_persistent(l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__4);
+l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__5 = _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__5();
+lean_mark_persistent(l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__5);
+l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__6 = _init_l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__6();
+lean_mark_persistent(l_List_forIn_x27_loop___at___private_Lean_Meta_Tactic_Grind_Inv_0__Lean_Meta_Grind_checkProofs___spec__1___closed__6);
 l_Lean_Meta_Grind_checkInvariants___lambda__1___closed__1 = _init_l_Lean_Meta_Grind_checkInvariants___lambda__1___closed__1();
 lean_mark_persistent(l_Lean_Meta_Grind_checkInvariants___lambda__1___closed__1);
 l_Lean_Meta_Grind_checkInvariants___closed__1 = _init_l_Lean_Meta_Grind_checkInvariants___closed__1();
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Grind/PP.c b/stage0/stdlib/Lean/Meta/Tactic/Grind/PP.c
index eb9d0a0c1d01..d1b03fc76b9a 100644
--- a/stage0/stdlib/Lean/Meta/Tactic/Grind/PP.c
+++ b/stage0/stdlib/Lean/Meta/Tactic/Grind/PP.c
@@ -17,7 +17,6 @@ static lean_object* l_Lean_Meta_Grind_ppENodeRef___closed__3;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_ppENodeDecl___lambda__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_object*);
 lean_object* l_Lean_Meta_ppExpr(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_ppState___spec__1___closed__1;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc_go___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*);
 static lean_object* l_Lean_Meta_Grind_ppENodeDecl___closed__4;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_ppENodeDecl___lambda__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_object* l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(lean_object*, lean_object*);
@@ -32,11 +31,10 @@ lean_object* lean_mk_array(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_ppENodeDeclValue___spec__1(lean_object*, lean_object*, lean_object*, size_t, size_t, 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_mapM_loop___at_Lean_Meta_Grind_ppState___spec__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_Lean_Meta_Grind_ppENodeDecl___lambda__3(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_EXPORT lean_object* l_Lean_Meta_Grind_getEqcs(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_getEqcs(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_List_forIn_x27_loop___at_Lean_Meta_Grind_ppState___spec__3___closed__2;
 static lean_object* l_Lean_Meta_Grind_ppENodeRef___closed__2;
 static lean_object* l_Lean_Meta_Grind_ppENodeRef___closed__6;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc___boxed(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_Grind_grind_debug;
 static lean_object* l_Lean_Meta_Grind_ppENodeDecl___lambda__4___closed__1;
 lean_object* l_Lean_Meta_Grind_getTarget_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -52,10 +50,8 @@ LEAN_EXPORT lean_object* l_Lean_Meta_Grind_ppENodeDecl___lambda__2___boxed(lean_
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_ppENodeDecl___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_object*, lean_object*);
 extern lean_object* l_Lean_levelZero;
 static lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_ppState___spec__1___closed__2;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc(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_Grind_ppState(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_List_lengthTRAux___rarg(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqcs___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_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_ppState___spec__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_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_Grind_ppENodeDecl___lambda__4___closed__2;
 static lean_object* l_Lean_Meta_Grind_ppENodeDecl___closed__2;
@@ -66,14 +62,12 @@ uint8_t l_Lean_Option_get___at___private_Lean_Util_Profile_0__Lean_get__profiler
 LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_ppENodeDeclValue___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*, lean_object*);
 LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at_Lean_Meta_Grind_ppState___spec__3(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_object*);
 lean_object* l_Lean_Meta_Grind_getENodes(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* l_Lean_Meta_Grind_getNext(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_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_ppENodeDeclValue___spec__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_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_Grind_ppENodeDecl___lambda__3___closed__1;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_ppENodeDeclValue___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_Meta_Grind_ppENodeDecl___lambda__2___closed__1;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_ppENodeDecl___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_object*);
 uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc_go(lean_object*, 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_List_forIn_x27_loop___at_Lean_Meta_Grind_ppState___spec__3___closed__4;
 static lean_object* l_Lean_Meta_Grind_ppState___closed__2;
 static lean_object* l_Lean_Meta_Grind_ppENodeDeclValue___closed__1;
@@ -94,7 +88,6 @@ size_t lean_usize_add(size_t, size_t);
 LEAN_EXPORT lean_object* l_List_forIn_x27_loop___at_Lean_Meta_Grind_ppState___spec__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_object*, lean_object*);
 lean_object* lean_array_uget(lean_object*, size_t);
 size_t lean_array_size(lean_object*);
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_getEqcs___spec__1(lean_object*, lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, 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);
 static lean_object* l_Lean_Meta_Grind_ppENodeRef___closed__4;
 LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_ppENodeDeclValue___spec__2___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*);
@@ -104,7 +97,6 @@ static lean_object* l_Lean_Meta_Grind_ppState___closed__1;
 lean_object* l___private_Init_Data_Repr_0__Nat_reprFast(lean_object*);
 lean_object* l_Lean_Meta_isLitValue(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Expr_withAppAux___at_Lean_Meta_Grind_ppENodeDeclValue___spec__2(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_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_getEqcs___spec__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_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* _init_l_Lean_Meta_Grind_ppENodeRef___closed__1() {
 _start:
 {
@@ -306,323 +298,6 @@ lean_dec(x_1);
 return x_11;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc_go(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, lean_object* x_11, lean_object* x_12) {
-_start:
-{
-lean_object* x_13; 
-lean_inc(x_2);
-x_13 = l_Lean_Meta_Grind_getNext(x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-if (lean_obj_tag(x_13) == 0)
-{
-uint8_t x_14; 
-x_14 = !lean_is_exclusive(x_13);
-if (x_14 == 0)
-{
-lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; 
-x_15 = lean_ctor_get(x_13, 0);
-x_16 = lean_ctor_get(x_13, 1);
-x_17 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_17, 0, x_2);
-lean_ctor_set(x_17, 1, x_3);
-x_18 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_15);
-if (x_18 == 0)
-{
-lean_free_object(x_13);
-x_2 = x_15;
-x_3 = x_17;
-x_12 = x_16;
-goto _start;
-}
-else
-{
-lean_dec(x_15);
-lean_ctor_set(x_13, 0, x_17);
-return x_13;
-}
-}
-else
-{
-lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; 
-x_20 = lean_ctor_get(x_13, 0);
-x_21 = lean_ctor_get(x_13, 1);
-lean_inc(x_21);
-lean_inc(x_20);
-lean_dec(x_13);
-x_22 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_22, 0, x_2);
-lean_ctor_set(x_22, 1, x_3);
-x_23 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_20);
-if (x_23 == 0)
-{
-x_2 = x_20;
-x_3 = x_22;
-x_12 = x_21;
-goto _start;
-}
-else
-{
-lean_object* x_25; 
-lean_dec(x_20);
-x_25 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_25, 0, x_22);
-lean_ctor_set(x_25, 1, x_21);
-return x_25;
-}
-}
-}
-else
-{
-uint8_t x_26; 
-lean_dec(x_3);
-lean_dec(x_2);
-x_26 = !lean_is_exclusive(x_13);
-if (x_26 == 0)
-{
-return x_13;
-}
-else
-{
-lean_object* x_27; lean_object* x_28; lean_object* x_29; 
-x_27 = lean_ctor_get(x_13, 0);
-x_28 = lean_ctor_get(x_13, 1);
-lean_inc(x_28);
-lean_inc(x_27);
-lean_dec(x_13);
-x_29 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_29, 0, x_27);
-lean_ctor_set(x_29, 1, x_28);
-return x_29;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc_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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
-_start:
-{
-lean_object* x_13; 
-x_13 = l_Lean_Meta_Grind_getEqc_go(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_1);
-return x_13;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc(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:
-{
-lean_object* x_11; lean_object* x_12; 
-x_11 = lean_box(0);
-lean_inc(x_1);
-x_12 = l_Lean_Meta_Grind_getEqc_go(x_1, x_1, x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_1);
-return x_12;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc___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, lean_object* x_10) {
-_start:
-{
-lean_object* x_11; 
-x_11 = l_Lean_Meta_Grind_getEqc(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_11;
-}
-}
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_getEqcs___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, size_t x_4, size_t x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
-_start:
-{
-uint8_t x_16; 
-x_16 = lean_usize_dec_lt(x_5, x_4);
-if (x_16 == 0)
-{
-lean_object* x_17; 
-x_17 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_17, 0, x_6);
-lean_ctor_set(x_17, 1, x_15);
-return x_17;
-}
-else
-{
-lean_object* x_18; lean_object* x_19; lean_object* x_20; uint8_t x_21; 
-x_18 = lean_array_uget(x_3, x_5);
-x_19 = lean_ctor_get(x_18, 2);
-lean_inc(x_19);
-x_20 = lean_ctor_get(x_18, 0);
-lean_inc(x_20);
-lean_dec(x_18);
-x_21 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_19, x_20);
-lean_dec(x_19);
-if (x_21 == 0)
-{
-size_t x_22; size_t x_23; 
-lean_dec(x_20);
-x_22 = 1;
-x_23 = lean_usize_add(x_5, x_22);
-x_5 = x_23;
-goto _start;
-}
-else
-{
-lean_object* x_25; 
-x_25 = l_Lean_Meta_Grind_getEqc(x_20, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
-if (lean_obj_tag(x_25) == 0)
-{
-lean_object* x_26; lean_object* x_27; lean_object* x_28; size_t x_29; size_t x_30; 
-x_26 = lean_ctor_get(x_25, 0);
-lean_inc(x_26);
-x_27 = lean_ctor_get(x_25, 1);
-lean_inc(x_27);
-lean_dec(x_25);
-x_28 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_28, 0, x_26);
-lean_ctor_set(x_28, 1, x_6);
-x_29 = 1;
-x_30 = lean_usize_add(x_5, x_29);
-x_5 = x_30;
-x_6 = x_28;
-x_15 = x_27;
-goto _start;
-}
-else
-{
-uint8_t x_32; 
-lean_dec(x_6);
-x_32 = !lean_is_exclusive(x_25);
-if (x_32 == 0)
-{
-return x_25;
-}
-else
-{
-lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_33 = lean_ctor_get(x_25, 0);
-x_34 = lean_ctor_get(x_25, 1);
-lean_inc(x_34);
-lean_inc(x_33);
-lean_dec(x_25);
-x_35 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_35, 0, x_33);
-lean_ctor_set(x_35, 1, x_34);
-return x_35;
-}
-}
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqcs(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; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; size_t x_15; size_t x_16; lean_object* x_17; 
-x_10 = lean_box(0);
-x_11 = l_Lean_Meta_Grind_getENodes(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
-x_12 = lean_ctor_get(x_11, 0);
-lean_inc(x_12);
-x_13 = lean_ctor_get(x_11, 1);
-lean_inc(x_13);
-lean_dec(x_11);
-x_14 = lean_box(0);
-x_15 = lean_array_size(x_12);
-x_16 = 0;
-x_17 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_getEqcs___spec__1(x_12, x_14, x_12, x_15, x_16, x_10, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_13);
-lean_dec(x_12);
-if (lean_obj_tag(x_17) == 0)
-{
-uint8_t x_18; 
-x_18 = !lean_is_exclusive(x_17);
-if (x_18 == 0)
-{
-return x_17;
-}
-else
-{
-lean_object* x_19; lean_object* x_20; lean_object* x_21; 
-x_19 = lean_ctor_get(x_17, 0);
-x_20 = lean_ctor_get(x_17, 1);
-lean_inc(x_20);
-lean_inc(x_19);
-lean_dec(x_17);
-x_21 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_21, 0, x_19);
-lean_ctor_set(x_21, 1, x_20);
-return x_21;
-}
-}
-else
-{
-uint8_t x_22; 
-x_22 = !lean_is_exclusive(x_17);
-if (x_22 == 0)
-{
-return x_17;
-}
-else
-{
-lean_object* x_23; lean_object* x_24; lean_object* x_25; 
-x_23 = lean_ctor_get(x_17, 0);
-x_24 = lean_ctor_get(x_17, 1);
-lean_inc(x_24);
-lean_inc(x_23);
-lean_dec(x_17);
-x_25 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_25, 0, x_23);
-lean_ctor_set(x_25, 1, x_24);
-return x_25;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_getEqcs___spec__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
-_start:
-{
-size_t x_16; size_t x_17; lean_object* x_18; 
-x_16 = lean_unbox_usize(x_4);
-lean_dec(x_4);
-x_17 = lean_unbox_usize(x_5);
-lean_dec(x_5);
-x_18 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_getEqcs___spec__1(x_1, x_2, x_3, x_16, x_17, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
-lean_dec(x_14);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-return x_18;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqcs___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_Meta_Grind_getEqcs(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
-lean_dec(x_8);
-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_10;
-}
-}
 static lean_object* _init_l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_ppENodeDeclValue___spec__1___closed__1() {
 _start:
 {
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Grind/Parser.c b/stage0/stdlib/Lean/Meta/Tactic/Grind/Parser.c
new file mode 100644
index 000000000000..dd1290692d9e
--- /dev/null
+++ b/stage0/stdlib/Lean/Meta/Tactic/Grind/Parser.c
@@ -0,0 +1,820 @@
+// Lean compiler output
+// Module: Lean.Meta.Tactic.Grind.Parser
+// Imports: Lean.Parser.Command
+#include <lean/lean.h>
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Wunused-parameter"
+#pragma clang diagnostic ignored "-Wunused-label"
+#elif defined(__GNUC__) && !defined(__CLANG__)
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#pragma GCC diagnostic ignored "-Wunused-label"
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+lean_object* l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Parser_Command_grindPattern_formatter___closed__10;
+static lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__1;
+lean_object* l_Lean_Parser_mkAntiquot_parenthesizer___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_PrettyPrinter_Formatter_orelse_formatter(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__8;
+static lean_object* l_Lean_Parser_Command_grindPattern_formatter___closed__11;
+static lean_object* l_Lean_Parser_Command_grindPattern_formatter___closed__4;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Parser_Command_grindPattern;
+lean_object* l_Lean_Parser_leadingNode(lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Parser_Command_grindPattern_parenthesizer___closed__7;
+lean_object* l_Lean_Parser_darrow_formatter(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__16;
+static lean_object* l_Lean_Parser_Command_grindPattern_parenthesizer___closed__4;
+lean_object* l_Lean_Name_mkStr5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Parser_termParser_formatter___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__9;
+LEAN_EXPORT lean_object* l_Lean_Parser_Command_grindPattern_parenthesizer(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Parser_mkAntiquot_formatter___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Parser_Command_grindPattern_parenthesizer___closed__9;
+lean_object* l_Lean_Parser_ident_parenthesizer(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__6;
+static lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__4;
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__13;
+static lean_object* l_Lean_Parser_Command_grindPattern_formatter___closed__1;
+extern lean_object* l_Lean_PrettyPrinter_parenthesizerAttribute;
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__17;
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__11;
+static lean_object* l_Lean_Parser_Command_grindPattern_formatter___closed__6;
+lean_object* l_Lean_PrettyPrinter_Parenthesizer_leadingNode_parenthesizer(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_PrettyPrinter_Parenthesizer_andthen_parenthesizer(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Parser_sepBy1(lean_object*, lean_object*, lean_object*, uint8_t);
+lean_object* l_Lean_Parser_symbol(lean_object*);
+static lean_object* l_Lean_Parser_Command_grindPattern_formatter___closed__5;
+lean_object* l_Lean_Parser_symbol_formatter(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__12;
+static lean_object* l_Lean_Parser_Command_grindPattern_parenthesizer___closed__1;
+static lean_object* l_Lean_Parser_Command_grindPattern_formatter___closed__8;
+lean_object* l_Lean_Parser_withAntiquot(lean_object*, lean_object*);
+extern lean_object* l_Lean_Parser_darrow;
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__1;
+lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
+lean_object* l_Lean_Parser_darrow_parenthesizer(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Parser_Command_grindPattern_parenthesizer___closed__10;
+static lean_object* l_Lean_Parser_Command_grindPattern_parenthesizer___closed__5;
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__2;
+static lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1(lean_object*);
+lean_object* l_Lean_Parser_andthen(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Parser_Command_grindPattern_formatter(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Parser_symbol_parenthesizer(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Parser_ident_formatter(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Parser_Command_grindPattern_formatter___closed__9;
+static lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__1;
+static lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern__1___closed__1;
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__3;
+static lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern__1___closed__2;
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__4;
+static lean_object* l_Lean_Parser_Command_grindPattern_parenthesizer___closed__2;
+lean_object* l_Lean_Parser_leadingNode_formatter___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_PrettyPrinter_Parenthesizer_withAntiquot_parenthesizer(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+extern lean_object* l_Lean_Parser_ident;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern__1(lean_object*);
+lean_object* l_Lean_Parser_sepBy1_formatter___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__3;
+lean_object* l_Lean_Parser_withCache(lean_object*, lean_object*);
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__7;
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__10;
+static lean_object* l_Lean_Parser_Command_grindPattern_parenthesizer___closed__8;
+static lean_object* l_Lean_Parser_Command_grindPattern_formatter___closed__2;
+lean_object* l_Lean_Parser_termParser_parenthesizer(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_PrettyPrinter_Formatter_andthen_formatter(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__5;
+static lean_object* l_Lean_Parser_Command_grindPattern_parenthesizer___closed__11;
+lean_object* l_Lean_Parser_sepBy1_parenthesizer___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__4;
+lean_object* l_Lean_Parser_mkAntiquot(lean_object*, lean_object*, uint8_t, uint8_t);
+extern lean_object* l_Lean_PrettyPrinter_formatterAttribute;
+lean_object* l_Lean_Name_mkStr4(lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__3;
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__18;
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__14;
+lean_object* l_Lean_Parser_addBuiltinParser(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Parser_Command_grindPattern_formatter___closed__3;
+static lean_object* l_Lean_Parser_Command_grindPattern_parenthesizer___closed__3;
+static lean_object* l_Lean_Parser_Command_grindPattern_formatter___closed__7;
+static lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__2;
+static lean_object* l_Lean_Parser_Command_grindPattern_parenthesizer___closed__6;
+static lean_object* l_Lean_Parser_Command_grindPattern___closed__15;
+lean_object* l_Lean_Parser_termParser(lean_object*);
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Lean", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Parser", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Command", 7, 7);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("grindPattern", 12, 12);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__1;
+x_2 = l_Lean_Parser_Command_grindPattern___closed__2;
+x_3 = l_Lean_Parser_Command_grindPattern___closed__3;
+x_4 = l_Lean_Parser_Command_grindPattern___closed__4;
+x_5 = l_Lean_Name_mkStr4(x_1, x_2, x_3, x_4);
+return x_5;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__6() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; uint8_t x_3; uint8_t x_4; lean_object* x_5; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__4;
+x_2 = l_Lean_Parser_Command_grindPattern___closed__5;
+x_3 = 1;
+x_4 = 0;
+x_5 = l_Lean_Parser_mkAntiquot(x_1, x_2, x_3, x_4);
+return x_5;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__7() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("grind_pattern ", 14, 14);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__8() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__7;
+x_2 = l_Lean_Parser_symbol(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__9() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = lean_unsigned_to_nat(0u);
+x_2 = l_Lean_Parser_termParser(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__10() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked(",", 1, 1);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__11() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__10;
+x_2 = l_Lean_Parser_symbol(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__12() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__9;
+x_2 = l_Lean_Parser_Command_grindPattern___closed__10;
+x_3 = l_Lean_Parser_Command_grindPattern___closed__11;
+x_4 = 0;
+x_5 = l_Lean_Parser_sepBy1(x_1, x_2, x_3, x_4);
+return x_5;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__13() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Parser_darrow;
+x_2 = l_Lean_Parser_Command_grindPattern___closed__12;
+x_3 = l_Lean_Parser_andthen(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__14() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Parser_ident;
+x_2 = l_Lean_Parser_Command_grindPattern___closed__13;
+x_3 = l_Lean_Parser_andthen(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__15() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__8;
+x_2 = l_Lean_Parser_Command_grindPattern___closed__14;
+x_3 = l_Lean_Parser_andthen(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__16() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__5;
+x_2 = lean_unsigned_to_nat(1024u);
+x_3 = l_Lean_Parser_Command_grindPattern___closed__15;
+x_4 = l_Lean_Parser_leadingNode(x_1, x_2, x_3);
+return x_4;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__17() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__6;
+x_2 = l_Lean_Parser_Command_grindPattern___closed__16;
+x_3 = l_Lean_Parser_withAntiquot(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern___closed__18() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__5;
+x_2 = l_Lean_Parser_Command_grindPattern___closed__17;
+x_3 = l_Lean_Parser_withCache(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__18;
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Parser_Command_grindPattern__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("command", 7, 7);
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Parser_Command_grindPattern__1___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___regBuiltin_Lean_Parser_Command_grindPattern__1___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern__1(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; 
+x_2 = l___regBuiltin_Lean_Parser_Command_grindPattern__1___closed__2;
+x_3 = l_Lean_Parser_Command_grindPattern___closed__5;
+x_4 = 1;
+x_5 = l_Lean_Parser_Command_grindPattern;
+x_6 = lean_unsigned_to_nat(1000u);
+x_7 = l_Lean_Parser_addBuiltinParser(x_2, x_3, x_4, x_5, x_6, x_1);
+return x_7;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_formatter___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; uint8_t x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__4;
+x_2 = l_Lean_Parser_Command_grindPattern___closed__5;
+x_3 = 1;
+x_4 = 0;
+x_5 = lean_box(x_3);
+x_6 = lean_box(x_4);
+x_7 = lean_alloc_closure((void*)(l_Lean_Parser_mkAntiquot_formatter___boxed), 9, 4);
+lean_closure_set(x_7, 0, x_1);
+lean_closure_set(x_7, 1, x_2);
+lean_closure_set(x_7, 2, x_5);
+lean_closure_set(x_7, 3, x_6);
+return x_7;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_formatter___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__7;
+x_2 = lean_alloc_closure((void*)(l_Lean_Parser_symbol_formatter), 6, 1);
+lean_closure_set(x_2, 0, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_formatter___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__10;
+x_2 = lean_alloc_closure((void*)(l_Lean_Parser_symbol_formatter), 6, 1);
+lean_closure_set(x_2, 0, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_formatter___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Parser_termParser_formatter___rarg), 5, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_formatter___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Parser_Command_grindPattern_formatter___closed__4;
+x_2 = l_Lean_Parser_Command_grindPattern___closed__10;
+x_3 = l_Lean_Parser_Command_grindPattern_formatter___closed__3;
+x_4 = 0;
+x_5 = lean_box(x_4);
+x_6 = lean_alloc_closure((void*)(l_Lean_Parser_sepBy1_formatter___boxed), 9, 4);
+lean_closure_set(x_6, 0, x_1);
+lean_closure_set(x_6, 1, x_2);
+lean_closure_set(x_6, 2, x_3);
+lean_closure_set(x_6, 3, x_5);
+return x_6;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_formatter___closed__6() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Parser_darrow_formatter), 5, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_formatter___closed__7() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Parser_Command_grindPattern_formatter___closed__6;
+x_2 = l_Lean_Parser_Command_grindPattern_formatter___closed__5;
+x_3 = lean_alloc_closure((void*)(l_Lean_PrettyPrinter_Formatter_andthen_formatter), 7, 2);
+lean_closure_set(x_3, 0, x_1);
+lean_closure_set(x_3, 1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_formatter___closed__8() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Parser_ident_formatter), 5, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_formatter___closed__9() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Parser_Command_grindPattern_formatter___closed__8;
+x_2 = l_Lean_Parser_Command_grindPattern_formatter___closed__7;
+x_3 = lean_alloc_closure((void*)(l_Lean_PrettyPrinter_Formatter_andthen_formatter), 7, 2);
+lean_closure_set(x_3, 0, x_1);
+lean_closure_set(x_3, 1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_formatter___closed__10() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Parser_Command_grindPattern_formatter___closed__2;
+x_2 = l_Lean_Parser_Command_grindPattern_formatter___closed__9;
+x_3 = lean_alloc_closure((void*)(l_Lean_PrettyPrinter_Formatter_andthen_formatter), 7, 2);
+lean_closure_set(x_3, 0, x_1);
+lean_closure_set(x_3, 1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_formatter___closed__11() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__5;
+x_2 = lean_unsigned_to_nat(1024u);
+x_3 = l_Lean_Parser_Command_grindPattern_formatter___closed__10;
+x_4 = lean_alloc_closure((void*)(l_Lean_Parser_leadingNode_formatter___boxed), 8, 3);
+lean_closure_set(x_4, 0, x_1);
+lean_closure_set(x_4, 1, x_2);
+lean_closure_set(x_4, 2, x_3);
+return x_4;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Parser_Command_grindPattern_formatter(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
+_start:
+{
+lean_object* x_6; lean_object* x_7; lean_object* x_8; 
+x_6 = l_Lean_Parser_Command_grindPattern_formatter___closed__1;
+x_7 = l_Lean_Parser_Command_grindPattern_formatter___closed__11;
+x_8 = l_Lean_PrettyPrinter_Formatter_orelse_formatter(x_6, x_7, x_1, x_2, x_3, x_4, x_5);
+return x_8;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("formatter", 9, 9);
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__1;
+x_2 = l_Lean_Parser_Command_grindPattern___closed__2;
+x_3 = l_Lean_Parser_Command_grindPattern___closed__3;
+x_4 = l_Lean_Parser_Command_grindPattern___closed__4;
+x_5 = l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__1;
+x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_PrettyPrinter_formatterAttribute;
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Parser_Command_grindPattern_formatter), 5, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_2 = l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__3;
+x_3 = l_Lean_Parser_Command_grindPattern___closed__5;
+x_4 = l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__2;
+x_5 = l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__4;
+x_6 = l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(x_2, x_3, x_4, x_5, x_1);
+return x_6;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; uint8_t x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__4;
+x_2 = l_Lean_Parser_Command_grindPattern___closed__5;
+x_3 = 1;
+x_4 = 0;
+x_5 = lean_box(x_3);
+x_6 = lean_box(x_4);
+x_7 = lean_alloc_closure((void*)(l_Lean_Parser_mkAntiquot_parenthesizer___boxed), 9, 4);
+lean_closure_set(x_7, 0, x_1);
+lean_closure_set(x_7, 1, x_2);
+lean_closure_set(x_7, 2, x_5);
+lean_closure_set(x_7, 3, x_6);
+return x_7;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__7;
+x_2 = lean_alloc_closure((void*)(l_Lean_Parser_symbol_parenthesizer), 6, 1);
+lean_closure_set(x_2, 0, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = lean_unsigned_to_nat(0u);
+x_2 = lean_alloc_closure((void*)(l_Lean_Parser_termParser_parenthesizer), 6, 1);
+lean_closure_set(x_2, 0, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__10;
+x_2 = lean_alloc_closure((void*)(l_Lean_Parser_symbol_parenthesizer), 6, 1);
+lean_closure_set(x_2, 0, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Parser_Command_grindPattern_parenthesizer___closed__3;
+x_2 = l_Lean_Parser_Command_grindPattern___closed__10;
+x_3 = l_Lean_Parser_Command_grindPattern_parenthesizer___closed__4;
+x_4 = 0;
+x_5 = lean_box(x_4);
+x_6 = lean_alloc_closure((void*)(l_Lean_Parser_sepBy1_parenthesizer___boxed), 9, 4);
+lean_closure_set(x_6, 0, x_1);
+lean_closure_set(x_6, 1, x_2);
+lean_closure_set(x_6, 2, x_3);
+lean_closure_set(x_6, 3, x_5);
+return x_6;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__6() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Parser_darrow_parenthesizer), 5, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__7() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Parser_Command_grindPattern_parenthesizer___closed__6;
+x_2 = l_Lean_Parser_Command_grindPattern_parenthesizer___closed__5;
+x_3 = lean_alloc_closure((void*)(l_Lean_PrettyPrinter_Parenthesizer_andthen_parenthesizer), 7, 2);
+lean_closure_set(x_3, 0, x_1);
+lean_closure_set(x_3, 1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__8() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Parser_ident_parenthesizer), 5, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__9() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Parser_Command_grindPattern_parenthesizer___closed__8;
+x_2 = l_Lean_Parser_Command_grindPattern_parenthesizer___closed__7;
+x_3 = lean_alloc_closure((void*)(l_Lean_PrettyPrinter_Parenthesizer_andthen_parenthesizer), 7, 2);
+lean_closure_set(x_3, 0, x_1);
+lean_closure_set(x_3, 1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__10() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Parser_Command_grindPattern_parenthesizer___closed__2;
+x_2 = l_Lean_Parser_Command_grindPattern_parenthesizer___closed__9;
+x_3 = lean_alloc_closure((void*)(l_Lean_PrettyPrinter_Parenthesizer_andthen_parenthesizer), 7, 2);
+lean_closure_set(x_3, 0, x_1);
+lean_closure_set(x_3, 1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__11() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__5;
+x_2 = lean_unsigned_to_nat(1024u);
+x_3 = l_Lean_Parser_Command_grindPattern_parenthesizer___closed__10;
+x_4 = lean_alloc_closure((void*)(l_Lean_PrettyPrinter_Parenthesizer_leadingNode_parenthesizer), 8, 3);
+lean_closure_set(x_4, 0, x_1);
+lean_closure_set(x_4, 1, x_2);
+lean_closure_set(x_4, 2, x_3);
+return x_4;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Parser_Command_grindPattern_parenthesizer(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
+_start:
+{
+lean_object* x_6; lean_object* x_7; lean_object* x_8; 
+x_6 = l_Lean_Parser_Command_grindPattern_parenthesizer___closed__1;
+x_7 = l_Lean_Parser_Command_grindPattern_parenthesizer___closed__11;
+x_8 = l_Lean_PrettyPrinter_Parenthesizer_withAntiquot_parenthesizer(x_6, x_7, x_1, x_2, x_3, x_4, x_5);
+return x_8;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("parenthesizer", 13, 13);
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Parser_Command_grindPattern___closed__1;
+x_2 = l_Lean_Parser_Command_grindPattern___closed__2;
+x_3 = l_Lean_Parser_Command_grindPattern___closed__3;
+x_4 = l_Lean_Parser_Command_grindPattern___closed__4;
+x_5 = l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__1;
+x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_PrettyPrinter_parenthesizerAttribute;
+return x_1;
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Parser_Command_grindPattern_parenthesizer), 5, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_2 = l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__3;
+x_3 = l_Lean_Parser_Command_grindPattern___closed__5;
+x_4 = l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__2;
+x_5 = l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__4;
+x_6 = l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(x_2, x_3, x_4, x_5, x_1);
+return x_6;
+}
+}
+lean_object* initialize_Lean_Parser_Command(uint8_t builtin, lean_object*);
+static bool _G_initialized = false;
+LEAN_EXPORT lean_object* initialize_Lean_Meta_Tactic_Grind_Parser(uint8_t builtin, lean_object* w) {
+lean_object * res;
+if (_G_initialized) return lean_io_result_mk_ok(lean_box(0));
+_G_initialized = true;
+res = initialize_Lean_Parser_Command(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+l_Lean_Parser_Command_grindPattern___closed__1 = _init_l_Lean_Parser_Command_grindPattern___closed__1();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__1);
+l_Lean_Parser_Command_grindPattern___closed__2 = _init_l_Lean_Parser_Command_grindPattern___closed__2();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__2);
+l_Lean_Parser_Command_grindPattern___closed__3 = _init_l_Lean_Parser_Command_grindPattern___closed__3();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__3);
+l_Lean_Parser_Command_grindPattern___closed__4 = _init_l_Lean_Parser_Command_grindPattern___closed__4();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__4);
+l_Lean_Parser_Command_grindPattern___closed__5 = _init_l_Lean_Parser_Command_grindPattern___closed__5();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__5);
+l_Lean_Parser_Command_grindPattern___closed__6 = _init_l_Lean_Parser_Command_grindPattern___closed__6();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__6);
+l_Lean_Parser_Command_grindPattern___closed__7 = _init_l_Lean_Parser_Command_grindPattern___closed__7();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__7);
+l_Lean_Parser_Command_grindPattern___closed__8 = _init_l_Lean_Parser_Command_grindPattern___closed__8();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__8);
+l_Lean_Parser_Command_grindPattern___closed__9 = _init_l_Lean_Parser_Command_grindPattern___closed__9();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__9);
+l_Lean_Parser_Command_grindPattern___closed__10 = _init_l_Lean_Parser_Command_grindPattern___closed__10();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__10);
+l_Lean_Parser_Command_grindPattern___closed__11 = _init_l_Lean_Parser_Command_grindPattern___closed__11();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__11);
+l_Lean_Parser_Command_grindPattern___closed__12 = _init_l_Lean_Parser_Command_grindPattern___closed__12();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__12);
+l_Lean_Parser_Command_grindPattern___closed__13 = _init_l_Lean_Parser_Command_grindPattern___closed__13();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__13);
+l_Lean_Parser_Command_grindPattern___closed__14 = _init_l_Lean_Parser_Command_grindPattern___closed__14();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__14);
+l_Lean_Parser_Command_grindPattern___closed__15 = _init_l_Lean_Parser_Command_grindPattern___closed__15();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__15);
+l_Lean_Parser_Command_grindPattern___closed__16 = _init_l_Lean_Parser_Command_grindPattern___closed__16();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__16);
+l_Lean_Parser_Command_grindPattern___closed__17 = _init_l_Lean_Parser_Command_grindPattern___closed__17();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__17);
+l_Lean_Parser_Command_grindPattern___closed__18 = _init_l_Lean_Parser_Command_grindPattern___closed__18();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern___closed__18);
+l_Lean_Parser_Command_grindPattern = _init_l_Lean_Parser_Command_grindPattern();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern);
+l___regBuiltin_Lean_Parser_Command_grindPattern__1___closed__1 = _init_l___regBuiltin_Lean_Parser_Command_grindPattern__1___closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Parser_Command_grindPattern__1___closed__1);
+l___regBuiltin_Lean_Parser_Command_grindPattern__1___closed__2 = _init_l___regBuiltin_Lean_Parser_Command_grindPattern__1___closed__2();
+lean_mark_persistent(l___regBuiltin_Lean_Parser_Command_grindPattern__1___closed__2);
+if (builtin) {res = l___regBuiltin_Lean_Parser_Command_grindPattern__1(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l_Lean_Parser_Command_grindPattern_formatter___closed__1 = _init_l_Lean_Parser_Command_grindPattern_formatter___closed__1();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_formatter___closed__1);
+l_Lean_Parser_Command_grindPattern_formatter___closed__2 = _init_l_Lean_Parser_Command_grindPattern_formatter___closed__2();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_formatter___closed__2);
+l_Lean_Parser_Command_grindPattern_formatter___closed__3 = _init_l_Lean_Parser_Command_grindPattern_formatter___closed__3();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_formatter___closed__3);
+l_Lean_Parser_Command_grindPattern_formatter___closed__4 = _init_l_Lean_Parser_Command_grindPattern_formatter___closed__4();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_formatter___closed__4);
+l_Lean_Parser_Command_grindPattern_formatter___closed__5 = _init_l_Lean_Parser_Command_grindPattern_formatter___closed__5();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_formatter___closed__5);
+l_Lean_Parser_Command_grindPattern_formatter___closed__6 = _init_l_Lean_Parser_Command_grindPattern_formatter___closed__6();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_formatter___closed__6);
+l_Lean_Parser_Command_grindPattern_formatter___closed__7 = _init_l_Lean_Parser_Command_grindPattern_formatter___closed__7();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_formatter___closed__7);
+l_Lean_Parser_Command_grindPattern_formatter___closed__8 = _init_l_Lean_Parser_Command_grindPattern_formatter___closed__8();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_formatter___closed__8);
+l_Lean_Parser_Command_grindPattern_formatter___closed__9 = _init_l_Lean_Parser_Command_grindPattern_formatter___closed__9();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_formatter___closed__9);
+l_Lean_Parser_Command_grindPattern_formatter___closed__10 = _init_l_Lean_Parser_Command_grindPattern_formatter___closed__10();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_formatter___closed__10);
+l_Lean_Parser_Command_grindPattern_formatter___closed__11 = _init_l_Lean_Parser_Command_grindPattern_formatter___closed__11();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_formatter___closed__11);
+l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__1 = _init_l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__1);
+l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__2 = _init_l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__2();
+lean_mark_persistent(l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__2);
+l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__3 = _init_l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__3();
+lean_mark_persistent(l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__3);
+l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__4 = _init_l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__4();
+lean_mark_persistent(l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1___closed__4);
+if (builtin) {res = l___regBuiltin_Lean_Parser_Command_grindPattern_formatter__1(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l_Lean_Parser_Command_grindPattern_parenthesizer___closed__1 = _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__1();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_parenthesizer___closed__1);
+l_Lean_Parser_Command_grindPattern_parenthesizer___closed__2 = _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__2();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_parenthesizer___closed__2);
+l_Lean_Parser_Command_grindPattern_parenthesizer___closed__3 = _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__3();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_parenthesizer___closed__3);
+l_Lean_Parser_Command_grindPattern_parenthesizer___closed__4 = _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__4();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_parenthesizer___closed__4);
+l_Lean_Parser_Command_grindPattern_parenthesizer___closed__5 = _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__5();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_parenthesizer___closed__5);
+l_Lean_Parser_Command_grindPattern_parenthesizer___closed__6 = _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__6();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_parenthesizer___closed__6);
+l_Lean_Parser_Command_grindPattern_parenthesizer___closed__7 = _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__7();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_parenthesizer___closed__7);
+l_Lean_Parser_Command_grindPattern_parenthesizer___closed__8 = _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__8();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_parenthesizer___closed__8);
+l_Lean_Parser_Command_grindPattern_parenthesizer___closed__9 = _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__9();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_parenthesizer___closed__9);
+l_Lean_Parser_Command_grindPattern_parenthesizer___closed__10 = _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__10();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_parenthesizer___closed__10);
+l_Lean_Parser_Command_grindPattern_parenthesizer___closed__11 = _init_l_Lean_Parser_Command_grindPattern_parenthesizer___closed__11();
+lean_mark_persistent(l_Lean_Parser_Command_grindPattern_parenthesizer___closed__11);
+l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__1 = _init_l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__1);
+l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__2 = _init_l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__2();
+lean_mark_persistent(l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__2);
+l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__3 = _init_l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__3();
+lean_mark_persistent(l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__3);
+l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__4 = _init_l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__4();
+lean_mark_persistent(l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1___closed__4);
+if (builtin) {res = l___regBuiltin_Lean_Parser_Command_grindPattern_parenthesizer__1(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}return lean_io_result_mk_ok(lean_box(0));
+}
+#ifdef __cplusplus
+}
+#endif
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Grind/Preprocessor.c b/stage0/stdlib/Lean/Meta/Tactic/Grind/Preprocessor.c
index b2e21df73aef..3e7d841bf4ee 100644
--- a/stage0/stdlib/Lean/Meta/Tactic/Grind/Preprocessor.c
+++ b/stage0/stdlib/Lean/Meta/Tactic/Grind/Preprocessor.c
@@ -1,6 +1,6 @@
 // Lean compiler output
 // Module: Lean.Meta.Tactic.Grind.Preprocessor
-// Imports: Init.Grind.Lemmas Lean.Meta.Canonicalizer Lean.Meta.Tactic.Util Lean.Meta.Tactic.Intro Lean.Meta.Tactic.Simp.Main Lean.Meta.Tactic.Grind.Attr Lean.Meta.Tactic.Grind.RevertAll Lean.Meta.Tactic.Grind.Types Lean.Meta.Tactic.Grind.Util Lean.Meta.Tactic.Grind.Cases Lean.Meta.Tactic.Grind.Injection Lean.Meta.Tactic.Grind.Core Lean.Meta.Tactic.Grind.Simp
+// Imports: Init.Grind.Lemmas Lean.Meta.Canonicalizer Lean.Meta.Tactic.Util Lean.Meta.Tactic.Intro Lean.Meta.Tactic.Simp.Main Lean.Meta.Tactic.Grind.Attr Lean.Meta.Tactic.Grind.RevertAll Lean.Meta.Tactic.Grind.Types Lean.Meta.Tactic.Grind.Util Lean.Meta.Tactic.Grind.Cases Lean.Meta.Tactic.Grind.Injection Lean.Meta.Tactic.Grind.Core Lean.Meta.Tactic.Grind.Simp Lean.Meta.Tactic.Grind.Run
 #include <lean/lean.h>
 #if defined(__clang__)
 #pragma clang diagnostic ignored "-Wunused-parameter"
@@ -18,11 +18,11 @@ lean_object* l_Lean_Expr_bindingName_x21(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_preprocess___lambda__1(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_const___override(lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_injection_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_loop___lambda__4___boxed(lean_object**);
 static lean_object* l_Lean_Meta_Grind_Preprocessor_preprocess___closed__3;
 LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2___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_object* lean_mk_empty_array_with_capacity(lean_object*);
 lean_object* l_Lean_mkAppN(lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_Preprocessor_loop___closed__1;
 lean_object* l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg(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_Grind_Preprocessor_introNext___lambda__5___closed__2;
 lean_object* l_Lean_Meta_mkFreshExprMVarAt(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -33,26 +33,33 @@ LEAN_EXPORT lean_object* l_Lean_mkFreshFVarId___at_Lean_Meta_Grind_Preprocessor_
 lean_object* l_Lean_Meta_isProp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, size_t, size_t, 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_Grind_Preprocessor_instInhabitedState___closed__4;
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__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_EXPORT lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7(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_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___lambda__1(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_Grind_Preprocessor_preprocess___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t l_Lean_Expr_isLet(lean_object*);
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_PersistentArray_push___rarg(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_mkFreshId___at_Lean_Meta_Grind_Preprocessor_introNext___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t lean_usize_dec_eq(size_t, size_t);
+LEAN_EXPORT lean_object* l_List_filterTR_loop___at_Lean_Meta_Grind_main___spec__1(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__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_Lean_Meta_Grind_preprocessAndProbe(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_MVarId_getTag(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_applyCases_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_withoutModifyingMCtx___at_Lean_Meta_Grind_preprocessAndProbe___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static size_t l_Lean_Meta_Grind_Preprocessor_instInhabitedState___closed__3;
 size_t lean_usize_of_nat(lean_object*);
-LEAN_EXPORT lean_object* l_List_mapTR_loop___at_Lean_Meta_Grind_main___spec__1(lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_getMainDeclName___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_PersistentArray_toList___rarg(lean_object*);
 lean_object* l_Lean_MVarId_revertAll(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__6(lean_object*, lean_object*, lean_object*, lean_object*, size_t, size_t, 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_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__6___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_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Meta_Grind_Preprocessor_preprocessAndProbe___spec__5(lean_object*, lean_object*, size_t, size_t, 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_Grind_Preprocessor_preprocess___closed__5;
 LEAN_EXPORT lean_object* l_ReaderT_bind___at_Lean_Meta_Grind_Preprocessor_introNext___spec__1(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__4(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_Grind_Preprocessor_loop___lambda__4(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*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Name_mkStr3(lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_Grind_Preprocessor_instInhabitedState___closed__2;
 LEAN_EXPORT lean_object* l_ReaderT_bind___at_Lean_Meta_Grind_Preprocessor_introNext___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -60,29 +67,31 @@ size_t lean_usize_of_nat(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_loop___lambda__2(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_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__3___boxed(lean_object**);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static double l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__1;
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5(lean_object*, lean_object*, lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_st_ref_take(lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_loop(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_isTracingEnabledFor___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__1___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_Meta_Grind_Preprocessor_preprocess___closed__1;
 LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Meta_Grind_Preprocessor_preprocessAndProbe___spec__3(lean_object*, lean_object*, size_t, size_t, 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_Grind_Preprocessor_introNext___lambda__2(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*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__2(lean_object*, 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*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_StateRefT_x27_lift___rarg___boxed(lean_object*, lean_object*);
 lean_object* l_Lean_MVarId_getType(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_withoutModifyingMCtx___at_Lean_Meta_Grind_preprocessAndProbe___spec__1(lean_object*);
 static lean_object* l_Lean_Meta_Grind_Preprocessor_PreM_run___rarg___closed__1;
 LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___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*, lean_object*);
 static lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___closed__1;
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l___private_Lean_CoreM_0__Lean_Core_mkFreshNameImp(lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_MessageData_ofFormat(lean_object*);
 lean_object* l_Lean_MVarId_withContext___at___private_Lean_Meta_SynthInstance_0__Lean_Meta_synthPendingImp___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_Preprocessor_loop___lambda__4___closed__1;
 static lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5___closed__3;
 static lean_object* l_Lean_Meta_Grind_Preprocessor_PreM_run___rarg___closed__3;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_preprocess(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_FVarId_getDecl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Meta_Grind_Preprocessor_preprocessAndProbe___spec__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_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5(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*, 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_Lean_Meta_Grind_Preprocessor_introNext___lambda__5(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*, 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_st_ref_get(lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__1;
 lean_object* lean_st_mk_ref(lean_object*, lean_object*);
@@ -90,6 +99,9 @@ LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_pushResult___boxed(lean_
 lean_object* l___private_Lean_Meta_Basic_0__Lean_Meta_withMVarContextImp___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Name_num___override(lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_isGrindCasesTarget(lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_main___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_checkInvariants(uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___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_Grind_Preprocessor_ppGoals___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_ppState(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_FVarId_getType(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -115,40 +127,45 @@ lean_object* l_Lean_MVarId_assert(lean_object*, lean_object*, lean_object*, lean
 LEAN_EXPORT lean_object* l_Lean_mkFreshId___at_Lean_Meta_Grind_Preprocessor_introNext___spec__4___rarg___boxed(lean_object*, lean_object*);
 lean_object* l_Lean_LocalContext_mkLocalDecl(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, uint8_t);
 LEAN_EXPORT lean_object* l_List_mapTR_loop___at_Lean_Meta_Grind_Preprocessor_applyCases_x3f___spec__1(lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___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_Grind_main___closed__1;
+LEAN_EXPORT lean_object* l_List_mapTR_loop___at_Lean_Meta_Grind_main___spec__2(lean_object*, lean_object*);
 double l_Float_ofScientific(lean_object*, uint8_t, lean_object*);
 lean_object* l_Lean_LocalDecl_userName(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_PreM_run(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_main(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, size_t, size_t, 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_Grind_Preprocessor_isCasesCandidate___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__3(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_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2(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_bindingDomain_x21(lean_object*);
 lean_object* l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(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_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__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_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_MVarId_withContext___at_Lean_Meta_Grind_Preprocessor_introNext___spec__2___rarg(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_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__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_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_MVarId_ensureNoMVar(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__1___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*);
 static lean_object* l_Lean_Meta_Grind_Preprocessor_preprocess___closed__6;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_applyCases_x3f___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_main___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_PersistentHashMap_insert___at_Lean_MVarId_assign___spec__1(lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_getLocalInstances(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Name_mkStr2(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__6___boxed(lean_object**);
+static double l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__1;
 LEAN_EXPORT lean_object* l_Lean_PersistentArray_forMAux___at_Lean_Meta_Grind_Preprocessor_preprocessAndProbe___spec__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_Lean_mkFreshFVarId___at_Lean_Meta_Grind_Preprocessor_introNext___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_preprocess___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*);
 lean_object* l_Lean_LocalDecl_type(lean_object*);
+static lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5___closed__1;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__1___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_Meta_Grind_Preprocessor_pushResult(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_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__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_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__5(lean_object*, lean_object*, lean_object*, lean_object*, size_t, size_t, 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_Grind_Preprocessor_applyInjection_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_MVarId_transformTarget(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_resetCache___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Expr_getAppFn(lean_object*);
-static lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__2;
 lean_object* l_List_reverse___rarg(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_MVarId_assign___at_Lean_Meta_Grind_Preprocessor_introNext___spec__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_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -170,7 +187,7 @@ lean_object* l_Lean_Expr_bindingBody_x21(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__3___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_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2___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_Lean_Meta_Grind_Preprocessor_introNext___lambda__3(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_Grind_Preprocessor_introNext___lambda__6(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, 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*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__6(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, 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*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_MVarId_withContext___at_Lean_Meta_Grind_Preprocessor_introNext___spec__2(lean_object*);
 lean_object* l_Lean_Meta_Grind_addHyp(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_Grind_Preprocessor_instInhabitedState___closed__1;
@@ -195,8 +212,10 @@ LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_isCasesCandidate(lean_ob
 lean_object* l_Lean_Expr_bindingInfo_x21(lean_object*);
 uint8_t l_Lean_Expr_isForall(lean_object*);
 lean_object* l_Lean_Expr_mvarId_x21(lean_object*);
+static lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__2;
 lean_object* l_Lean_MVarId_betaReduce___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_loop___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__4___boxed(lean_object**);
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___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_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__2___boxed(lean_object**);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_applyCases_x3f___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -922,202 +941,208 @@ x_10 = l_Lean_FVarId_getDecl(x_1, x_5, x_6, x_7, x_8, x_9);
 return x_10;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__2(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, uint8_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18, lean_object* x_19) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__2(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, uint8_t x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18, lean_object* x_19, lean_object* x_20) {
 _start:
 {
-lean_object* x_20; lean_object* x_21; 
-x_20 = l_Lean_LocalDecl_type(x_10);
+lean_object* x_21; lean_object* x_22; 
+x_21 = l_Lean_LocalDecl_type(x_11);
+lean_inc(x_19);
 lean_inc(x_18);
 lean_inc(x_17);
 lean_inc(x_16);
-lean_inc(x_15);
-lean_inc(x_20);
-x_21 = l_Lean_Meta_isProp(x_20, x_15, x_16, x_17, x_18, x_19);
-if (lean_obj_tag(x_21) == 0)
+lean_inc(x_21);
+x_22 = l_Lean_Meta_isProp(x_21, x_16, x_17, x_18, x_19, x_20);
+if (lean_obj_tag(x_22) == 0)
 {
-lean_object* x_22; uint8_t x_23; 
-x_22 = lean_ctor_get(x_21, 0);
-lean_inc(x_22);
-x_23 = lean_unbox(x_22);
-lean_dec(x_22);
-if (x_23 == 0)
+lean_object* x_23; uint8_t x_24; 
+x_23 = lean_ctor_get(x_22, 0);
+lean_inc(x_23);
+x_24 = lean_unbox(x_23);
+lean_dec(x_23);
+if (x_24 == 0)
 {
-uint8_t x_24; 
-lean_dec(x_20);
+uint8_t x_25; 
+lean_dec(x_21);
+lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
-lean_dec(x_15);
-x_24 = !lean_is_exclusive(x_21);
-if (x_24 == 0)
+x_25 = !lean_is_exclusive(x_22);
+if (x_25 == 0)
 {
-lean_object* x_25; lean_object* x_26; lean_object* x_27; 
-x_25 = lean_ctor_get(x_21, 0);
-lean_dec(x_25);
-x_26 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_26, 0, x_1);
-lean_ctor_set(x_26, 1, x_2);
-lean_ctor_set(x_26, 2, x_3);
-lean_ctor_set(x_26, 3, x_4);
-lean_ctor_set(x_26, 4, x_5);
-lean_ctor_set(x_26, 5, x_7);
-lean_ctor_set(x_26, 6, x_8);
-lean_ctor_set_uint8(x_26, sizeof(void*)*7, x_6);
-x_27 = lean_alloc_ctor(3, 2, 0);
-lean_ctor_set(x_27, 0, x_9);
-lean_ctor_set(x_27, 1, x_26);
-lean_ctor_set(x_21, 0, x_27);
-return x_21;
+lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_26 = lean_ctor_get(x_22, 0);
+lean_dec(x_26);
+x_27 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_27, 0, x_1);
+lean_ctor_set(x_27, 1, x_2);
+lean_ctor_set(x_27, 2, x_3);
+lean_ctor_set(x_27, 3, x_4);
+lean_ctor_set(x_27, 4, x_5);
+lean_ctor_set(x_27, 5, x_6);
+lean_ctor_set(x_27, 6, x_8);
+lean_ctor_set(x_27, 7, x_9);
+lean_ctor_set_uint8(x_27, sizeof(void*)*8, x_7);
+x_28 = lean_alloc_ctor(3, 2, 0);
+lean_ctor_set(x_28, 0, x_10);
+lean_ctor_set(x_28, 1, x_27);
+lean_ctor_set(x_22, 0, x_28);
+return x_22;
 }
 else
 {
-lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; 
-x_28 = lean_ctor_get(x_21, 1);
-lean_inc(x_28);
-lean_dec(x_21);
-x_29 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_29, 0, x_1);
-lean_ctor_set(x_29, 1, x_2);
-lean_ctor_set(x_29, 2, x_3);
-lean_ctor_set(x_29, 3, x_4);
-lean_ctor_set(x_29, 4, x_5);
-lean_ctor_set(x_29, 5, x_7);
-lean_ctor_set(x_29, 6, x_8);
-lean_ctor_set_uint8(x_29, sizeof(void*)*7, x_6);
-x_30 = lean_alloc_ctor(3, 2, 0);
-lean_ctor_set(x_30, 0, x_9);
-lean_ctor_set(x_30, 1, x_29);
-x_31 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_31, 0, x_30);
-lean_ctor_set(x_31, 1, x_28);
-return x_31;
+lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; 
+x_29 = lean_ctor_get(x_22, 1);
+lean_inc(x_29);
+lean_dec(x_22);
+x_30 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_30, 0, x_1);
+lean_ctor_set(x_30, 1, x_2);
+lean_ctor_set(x_30, 2, x_3);
+lean_ctor_set(x_30, 3, x_4);
+lean_ctor_set(x_30, 4, x_5);
+lean_ctor_set(x_30, 5, x_6);
+lean_ctor_set(x_30, 6, x_8);
+lean_ctor_set(x_30, 7, x_9);
+lean_ctor_set_uint8(x_30, sizeof(void*)*8, x_7);
+x_31 = lean_alloc_ctor(3, 2, 0);
+lean_ctor_set(x_31, 0, x_10);
+lean_ctor_set(x_31, 1, x_30);
+x_32 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_32, 0, x_31);
+lean_ctor_set(x_32, 1, x_29);
+return x_32;
 }
 }
 else
 {
-lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; 
-x_32 = lean_ctor_get(x_21, 1);
-lean_inc(x_32);
-lean_dec(x_21);
-x_33 = l_Lean_LocalDecl_userName(x_10);
-x_34 = l___private_Lean_CoreM_0__Lean_Core_mkFreshNameImp(x_33, x_17, x_18, x_32);
-x_35 = lean_ctor_get(x_34, 0);
-lean_inc(x_35);
-x_36 = lean_ctor_get(x_34, 1);
+lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; 
+x_33 = lean_ctor_get(x_22, 1);
+lean_inc(x_33);
+lean_dec(x_22);
+x_34 = l_Lean_LocalDecl_userName(x_11);
+x_35 = l___private_Lean_CoreM_0__Lean_Core_mkFreshNameImp(x_34, x_18, x_19, x_33);
+x_36 = lean_ctor_get(x_35, 0);
 lean_inc(x_36);
-lean_dec(x_34);
-x_37 = l_Lean_Expr_fvar___override(x_9);
-x_38 = l_Lean_MVarId_assert(x_1, x_35, x_20, x_37, x_15, x_16, x_17, x_18, x_36);
-if (lean_obj_tag(x_38) == 0)
-{
-uint8_t x_39; 
-x_39 = !lean_is_exclusive(x_38);
-if (x_39 == 0)
-{
-lean_object* x_40; lean_object* x_41; lean_object* x_42; 
-x_40 = lean_ctor_get(x_38, 0);
-x_41 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_41, 0, x_40);
-lean_ctor_set(x_41, 1, x_2);
-lean_ctor_set(x_41, 2, x_3);
-lean_ctor_set(x_41, 3, x_4);
-lean_ctor_set(x_41, 4, x_5);
-lean_ctor_set(x_41, 5, x_7);
-lean_ctor_set(x_41, 6, x_8);
-lean_ctor_set_uint8(x_41, sizeof(void*)*7, x_6);
-x_42 = lean_alloc_ctor(2, 1, 0);
+x_37 = lean_ctor_get(x_35, 1);
+lean_inc(x_37);
+lean_dec(x_35);
+x_38 = l_Lean_Expr_fvar___override(x_10);
+x_39 = l_Lean_MVarId_assert(x_1, x_36, x_21, x_38, x_16, x_17, x_18, x_19, x_37);
+if (lean_obj_tag(x_39) == 0)
+{
+uint8_t x_40; 
+x_40 = !lean_is_exclusive(x_39);
+if (x_40 == 0)
+{
+lean_object* x_41; lean_object* x_42; lean_object* x_43; 
+x_41 = lean_ctor_get(x_39, 0);
+x_42 = lean_alloc_ctor(0, 8, 1);
 lean_ctor_set(x_42, 0, x_41);
-lean_ctor_set(x_38, 0, x_42);
-return x_38;
+lean_ctor_set(x_42, 1, x_2);
+lean_ctor_set(x_42, 2, x_3);
+lean_ctor_set(x_42, 3, x_4);
+lean_ctor_set(x_42, 4, x_5);
+lean_ctor_set(x_42, 5, x_6);
+lean_ctor_set(x_42, 6, x_8);
+lean_ctor_set(x_42, 7, x_9);
+lean_ctor_set_uint8(x_42, sizeof(void*)*8, x_7);
+x_43 = lean_alloc_ctor(2, 1, 0);
+lean_ctor_set(x_43, 0, x_42);
+lean_ctor_set(x_39, 0, x_43);
+return x_39;
 }
 else
 {
-lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; 
-x_43 = lean_ctor_get(x_38, 0);
-x_44 = lean_ctor_get(x_38, 1);
+lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; 
+x_44 = lean_ctor_get(x_39, 0);
+x_45 = lean_ctor_get(x_39, 1);
+lean_inc(x_45);
 lean_inc(x_44);
-lean_inc(x_43);
-lean_dec(x_38);
-x_45 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_45, 0, x_43);
-lean_ctor_set(x_45, 1, x_2);
-lean_ctor_set(x_45, 2, x_3);
-lean_ctor_set(x_45, 3, x_4);
-lean_ctor_set(x_45, 4, x_5);
-lean_ctor_set(x_45, 5, x_7);
-lean_ctor_set(x_45, 6, x_8);
-lean_ctor_set_uint8(x_45, sizeof(void*)*7, x_6);
-x_46 = lean_alloc_ctor(2, 1, 0);
-lean_ctor_set(x_46, 0, x_45);
-x_47 = lean_alloc_ctor(0, 2, 0);
+lean_dec(x_39);
+x_46 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_46, 0, x_44);
+lean_ctor_set(x_46, 1, x_2);
+lean_ctor_set(x_46, 2, x_3);
+lean_ctor_set(x_46, 3, x_4);
+lean_ctor_set(x_46, 4, x_5);
+lean_ctor_set(x_46, 5, x_6);
+lean_ctor_set(x_46, 6, x_8);
+lean_ctor_set(x_46, 7, x_9);
+lean_ctor_set_uint8(x_46, sizeof(void*)*8, x_7);
+x_47 = lean_alloc_ctor(2, 1, 0);
 lean_ctor_set(x_47, 0, x_46);
-lean_ctor_set(x_47, 1, x_44);
-return x_47;
+x_48 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_48, 0, x_47);
+lean_ctor_set(x_48, 1, x_45);
+return x_48;
 }
 }
 else
 {
-uint8_t x_48; 
+uint8_t x_49; 
+lean_dec(x_9);
 lean_dec(x_8);
-lean_dec(x_7);
+lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-x_48 = !lean_is_exclusive(x_38);
-if (x_48 == 0)
+x_49 = !lean_is_exclusive(x_39);
+if (x_49 == 0)
 {
-return x_38;
+return x_39;
 }
 else
 {
-lean_object* x_49; lean_object* x_50; lean_object* x_51; 
-x_49 = lean_ctor_get(x_38, 0);
-x_50 = lean_ctor_get(x_38, 1);
+lean_object* x_50; lean_object* x_51; lean_object* x_52; 
+x_50 = lean_ctor_get(x_39, 0);
+x_51 = lean_ctor_get(x_39, 1);
+lean_inc(x_51);
 lean_inc(x_50);
-lean_inc(x_49);
-lean_dec(x_38);
-x_51 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_51, 0, x_49);
-lean_ctor_set(x_51, 1, x_50);
-return x_51;
+lean_dec(x_39);
+x_52 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_52, 0, x_50);
+lean_ctor_set(x_52, 1, x_51);
+return x_52;
 }
 }
 }
 }
 else
 {
-uint8_t x_52; 
-lean_dec(x_20);
+uint8_t x_53; 
+lean_dec(x_21);
+lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
-lean_dec(x_15);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
-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_52 = !lean_is_exclusive(x_21);
-if (x_52 == 0)
+x_53 = !lean_is_exclusive(x_22);
+if (x_53 == 0)
 {
-return x_21;
+return x_22;
 }
 else
 {
-lean_object* x_53; lean_object* x_54; lean_object* x_55; 
-x_53 = lean_ctor_get(x_21, 0);
-x_54 = lean_ctor_get(x_21, 1);
+lean_object* x_54; lean_object* x_55; lean_object* x_56; 
+x_54 = lean_ctor_get(x_22, 0);
+x_55 = lean_ctor_get(x_22, 1);
+lean_inc(x_55);
 lean_inc(x_54);
-lean_inc(x_53);
-lean_dec(x_21);
-x_55 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_55, 0, x_53);
-lean_ctor_set(x_55, 1, x_54);
-return x_55;
+lean_dec(x_22);
+x_56 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_56, 0, x_54);
+lean_ctor_set(x_56, 1, x_55);
+return x_56;
 }
 }
 }
@@ -1176,78 +1201,77 @@ x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
 return x_4;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5(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, 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_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18, lean_object* x_19, lean_object* x_20, lean_object* x_21, lean_object* x_22, lean_object* x_23, lean_object* x_24, lean_object* x_25) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5(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, uint8_t x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18, lean_object* x_19, lean_object* x_20, lean_object* x_21, lean_object* x_22, lean_object* x_23, lean_object* x_24, lean_object* x_25, lean_object* x_26) {
 _start:
 {
 if (lean_obj_tag(x_1) == 0)
 {
-lean_object* x_26; uint8_t x_27; 
+lean_object* x_27; uint8_t x_28; 
+lean_dec(x_16);
 lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
-lean_dec(x_12);
-x_26 = l_Lean_MVarId_assign___at_Lean_Meta_Grind_Preprocessor_introNext___spec__5(x_2, x_16, x_17, x_18, x_19, x_20, x_21, x_22, x_23, x_24, x_25);
-x_27 = !lean_is_exclusive(x_26);
-if (x_27 == 0)
+x_27 = l_Lean_MVarId_assign___at_Lean_Meta_Grind_Preprocessor_introNext___spec__5(x_2, x_17, x_18, x_19, x_20, x_21, x_22, x_23, x_24, x_25, x_26);
+x_28 = !lean_is_exclusive(x_27);
+if (x_28 == 0)
 {
-lean_object* x_28; lean_object* x_29; lean_object* x_30; 
-x_28 = lean_ctor_get(x_26, 0);
-lean_dec(x_28);
-x_29 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_29, 0, x_3);
-lean_ctor_set(x_29, 1, x_4);
-lean_ctor_set(x_29, 2, x_5);
-lean_ctor_set(x_29, 3, x_6);
-lean_ctor_set(x_29, 4, x_7);
-lean_ctor_set(x_29, 5, x_9);
-lean_ctor_set(x_29, 6, x_10);
-lean_ctor_set_uint8(x_29, sizeof(void*)*7, x_8);
-x_30 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_30, 0, x_11);
-lean_ctor_set(x_30, 1, x_29);
-lean_ctor_set(x_26, 0, x_30);
-return x_26;
+lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+x_29 = lean_ctor_get(x_27, 0);
+lean_dec(x_29);
+x_30 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_30, 0, x_3);
+lean_ctor_set(x_30, 1, x_4);
+lean_ctor_set(x_30, 2, x_5);
+lean_ctor_set(x_30, 3, x_6);
+lean_ctor_set(x_30, 4, x_7);
+lean_ctor_set(x_30, 5, x_8);
+lean_ctor_set(x_30, 6, x_10);
+lean_ctor_set(x_30, 7, x_11);
+lean_ctor_set_uint8(x_30, sizeof(void*)*8, x_9);
+x_31 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_31, 0, x_12);
+lean_ctor_set(x_31, 1, x_30);
+lean_ctor_set(x_27, 0, x_31);
+return x_27;
 }
 else
 {
-lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; 
-x_31 = lean_ctor_get(x_26, 1);
-lean_inc(x_31);
-lean_dec(x_26);
-x_32 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_32, 0, x_3);
-lean_ctor_set(x_32, 1, x_4);
-lean_ctor_set(x_32, 2, x_5);
-lean_ctor_set(x_32, 3, x_6);
-lean_ctor_set(x_32, 4, x_7);
-lean_ctor_set(x_32, 5, x_9);
-lean_ctor_set(x_32, 6, x_10);
-lean_ctor_set_uint8(x_32, sizeof(void*)*7, x_8);
-x_33 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_33, 0, x_11);
-lean_ctor_set(x_33, 1, x_32);
-x_34 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_34, 0, x_33);
-lean_ctor_set(x_34, 1, x_31);
-return x_34;
+lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_32 = lean_ctor_get(x_27, 1);
+lean_inc(x_32);
+lean_dec(x_27);
+x_33 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_33, 0, x_3);
+lean_ctor_set(x_33, 1, x_4);
+lean_ctor_set(x_33, 2, x_5);
+lean_ctor_set(x_33, 3, x_6);
+lean_ctor_set(x_33, 4, x_7);
+lean_ctor_set(x_33, 5, x_8);
+lean_ctor_set(x_33, 6, x_10);
+lean_ctor_set(x_33, 7, x_11);
+lean_ctor_set_uint8(x_33, sizeof(void*)*8, x_9);
+x_34 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_34, 0, x_12);
+lean_ctor_set(x_34, 1, x_33);
+x_35 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_35, 0, x_34);
+lean_ctor_set(x_35, 1, x_32);
+return x_35;
 }
 }
 else
 {
-lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; uint8_t x_46; 
-x_35 = lean_ctor_get(x_1, 0);
-x_36 = l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5___closed__4;
-lean_inc(x_12);
-x_37 = l_Lean_Expr_const___override(x_36, x_12);
-x_38 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_38, 0, x_16);
-lean_ctor_set(x_38, 1, x_12);
-lean_inc(x_35);
+lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; uint8_t x_47; 
+x_36 = lean_ctor_get(x_1, 0);
+x_37 = l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5___closed__4;
+lean_inc(x_13);
+x_38 = l_Lean_Expr_const___override(x_37, x_13);
 x_39 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_39, 0, x_35);
-lean_ctor_set(x_39, 1, x_38);
+lean_ctor_set(x_39, 0, x_17);
+lean_ctor_set(x_39, 1, x_13);
+lean_inc(x_36);
 x_40 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_40, 0, x_13);
+lean_ctor_set(x_40, 0, x_36);
 lean_ctor_set(x_40, 1, x_39);
 x_41 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_41, 0, x_14);
@@ -1255,346 +1279,358 @@ lean_ctor_set(x_41, 1, x_40);
 x_42 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_42, 0, x_15);
 lean_ctor_set(x_42, 1, x_41);
-x_43 = lean_array_mk(x_42);
-x_44 = l_Lean_mkAppN(x_37, x_43);
-lean_dec(x_43);
-x_45 = l_Lean_MVarId_assign___at_Lean_Meta_Grind_Preprocessor_introNext___spec__5(x_2, x_44, x_17, x_18, x_19, x_20, x_21, x_22, x_23, x_24, x_25);
-x_46 = !lean_is_exclusive(x_45);
-if (x_46 == 0)
-{
-lean_object* x_47; lean_object* x_48; lean_object* x_49; 
-x_47 = lean_ctor_get(x_45, 0);
-lean_dec(x_47);
-x_48 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_48, 0, x_3);
-lean_ctor_set(x_48, 1, x_4);
-lean_ctor_set(x_48, 2, x_5);
-lean_ctor_set(x_48, 3, x_6);
-lean_ctor_set(x_48, 4, x_7);
-lean_ctor_set(x_48, 5, x_9);
-lean_ctor_set(x_48, 6, x_10);
-lean_ctor_set_uint8(x_48, sizeof(void*)*7, x_8);
-x_49 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_49, 0, x_11);
-lean_ctor_set(x_49, 1, x_48);
-lean_ctor_set(x_45, 0, x_49);
-return x_45;
-}
-else
+x_43 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_43, 0, x_16);
+lean_ctor_set(x_43, 1, x_42);
+x_44 = lean_array_mk(x_43);
+x_45 = l_Lean_mkAppN(x_38, x_44);
+lean_dec(x_44);
+x_46 = l_Lean_MVarId_assign___at_Lean_Meta_Grind_Preprocessor_introNext___spec__5(x_2, x_45, x_18, x_19, x_20, x_21, x_22, x_23, x_24, x_25, x_26);
+x_47 = !lean_is_exclusive(x_46);
+if (x_47 == 0)
 {
-lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; 
-x_50 = lean_ctor_get(x_45, 1);
-lean_inc(x_50);
-lean_dec(x_45);
-x_51 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_51, 0, x_3);
-lean_ctor_set(x_51, 1, x_4);
-lean_ctor_set(x_51, 2, x_5);
-lean_ctor_set(x_51, 3, x_6);
-lean_ctor_set(x_51, 4, x_7);
-lean_ctor_set(x_51, 5, x_9);
-lean_ctor_set(x_51, 6, x_10);
-lean_ctor_set_uint8(x_51, sizeof(void*)*7, x_8);
-x_52 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_52, 0, x_11);
-lean_ctor_set(x_52, 1, x_51);
-x_53 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_53, 0, x_52);
-lean_ctor_set(x_53, 1, x_50);
-return x_53;
+lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_48 = lean_ctor_get(x_46, 0);
+lean_dec(x_48);
+x_49 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_49, 0, x_3);
+lean_ctor_set(x_49, 1, x_4);
+lean_ctor_set(x_49, 2, x_5);
+lean_ctor_set(x_49, 3, x_6);
+lean_ctor_set(x_49, 4, x_7);
+lean_ctor_set(x_49, 5, x_8);
+lean_ctor_set(x_49, 6, x_10);
+lean_ctor_set(x_49, 7, x_11);
+lean_ctor_set_uint8(x_49, sizeof(void*)*8, x_9);
+x_50 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_50, 0, x_12);
+lean_ctor_set(x_50, 1, x_49);
+lean_ctor_set(x_46, 0, x_50);
+return x_46;
+}
+else
+{
+lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_51 = lean_ctor_get(x_46, 1);
+lean_inc(x_51);
+lean_dec(x_46);
+x_52 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_52, 0, x_3);
+lean_ctor_set(x_52, 1, x_4);
+lean_ctor_set(x_52, 2, x_5);
+lean_ctor_set(x_52, 3, x_6);
+lean_ctor_set(x_52, 4, x_7);
+lean_ctor_set(x_52, 5, x_8);
+lean_ctor_set(x_52, 6, x_10);
+lean_ctor_set(x_52, 7, x_11);
+lean_ctor_set_uint8(x_52, sizeof(void*)*8, x_9);
+x_53 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_53, 0, x_12);
+lean_ctor_set(x_53, 1, x_52);
+x_54 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_54, 0, x_53);
+lean_ctor_set(x_54, 1, x_51);
+return x_54;
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__6(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, uint8_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, uint8_t x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18, lean_object* x_19, lean_object* x_20) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__6(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, uint8_t x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, uint8_t x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18, lean_object* x_19, lean_object* x_20, lean_object* x_21) {
 _start:
 {
-if (x_11 == 0)
+if (x_12 == 0)
 {
-uint8_t x_21; lean_object* x_22; 
+uint8_t x_22; lean_object* x_23; 
+lean_dec(x_16);
 lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_10);
-x_21 = 1;
-x_22 = l_Lean_Meta_intro1Core(x_1, x_21, x_16, x_17, x_18, x_19, x_20);
-if (lean_obj_tag(x_22) == 0)
+lean_dec(x_11);
+x_22 = 1;
+x_23 = l_Lean_Meta_intro1Core(x_1, x_22, x_17, x_18, x_19, x_20, x_21);
+if (lean_obj_tag(x_23) == 0)
 {
-uint8_t x_23; 
-x_23 = !lean_is_exclusive(x_22);
-if (x_23 == 0)
+uint8_t x_24; 
+x_24 = !lean_is_exclusive(x_23);
+if (x_24 == 0)
 {
-lean_object* x_24; uint8_t x_25; 
-x_24 = lean_ctor_get(x_22, 0);
-x_25 = !lean_is_exclusive(x_24);
-if (x_25 == 0)
+lean_object* x_25; uint8_t x_26; 
+x_25 = lean_ctor_get(x_23, 0);
+x_26 = !lean_is_exclusive(x_25);
+if (x_26 == 0)
 {
-lean_object* x_26; lean_object* x_27; 
-x_26 = lean_ctor_get(x_24, 1);
-x_27 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_27, 0, x_26);
-lean_ctor_set(x_27, 1, x_2);
-lean_ctor_set(x_27, 2, x_3);
-lean_ctor_set(x_27, 3, x_4);
-lean_ctor_set(x_27, 4, x_5);
-lean_ctor_set(x_27, 5, x_7);
-lean_ctor_set(x_27, 6, x_8);
-lean_ctor_set_uint8(x_27, sizeof(void*)*7, x_6);
-lean_ctor_set_tag(x_24, 3);
-lean_ctor_set(x_24, 1, x_27);
-return x_22;
+lean_object* x_27; lean_object* x_28; 
+x_27 = lean_ctor_get(x_25, 1);
+x_28 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_28, 0, x_27);
+lean_ctor_set(x_28, 1, x_2);
+lean_ctor_set(x_28, 2, x_3);
+lean_ctor_set(x_28, 3, x_4);
+lean_ctor_set(x_28, 4, x_5);
+lean_ctor_set(x_28, 5, x_6);
+lean_ctor_set(x_28, 6, x_8);
+lean_ctor_set(x_28, 7, x_9);
+lean_ctor_set_uint8(x_28, sizeof(void*)*8, x_7);
+lean_ctor_set_tag(x_25, 3);
+lean_ctor_set(x_25, 1, x_28);
+return x_23;
 }
 else
 {
-lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; 
-x_28 = lean_ctor_get(x_24, 0);
-x_29 = lean_ctor_get(x_24, 1);
+lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; 
+x_29 = lean_ctor_get(x_25, 0);
+x_30 = lean_ctor_get(x_25, 1);
+lean_inc(x_30);
 lean_inc(x_29);
-lean_inc(x_28);
-lean_dec(x_24);
-x_30 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_30, 0, x_29);
-lean_ctor_set(x_30, 1, x_2);
-lean_ctor_set(x_30, 2, x_3);
-lean_ctor_set(x_30, 3, x_4);
-lean_ctor_set(x_30, 4, x_5);
-lean_ctor_set(x_30, 5, x_7);
-lean_ctor_set(x_30, 6, x_8);
-lean_ctor_set_uint8(x_30, sizeof(void*)*7, x_6);
-x_31 = lean_alloc_ctor(3, 2, 0);
-lean_ctor_set(x_31, 0, x_28);
-lean_ctor_set(x_31, 1, x_30);
-lean_ctor_set(x_22, 0, x_31);
-return x_22;
+lean_dec(x_25);
+x_31 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_31, 0, x_30);
+lean_ctor_set(x_31, 1, x_2);
+lean_ctor_set(x_31, 2, x_3);
+lean_ctor_set(x_31, 3, x_4);
+lean_ctor_set(x_31, 4, x_5);
+lean_ctor_set(x_31, 5, x_6);
+lean_ctor_set(x_31, 6, x_8);
+lean_ctor_set(x_31, 7, x_9);
+lean_ctor_set_uint8(x_31, sizeof(void*)*8, x_7);
+x_32 = lean_alloc_ctor(3, 2, 0);
+lean_ctor_set(x_32, 0, x_29);
+lean_ctor_set(x_32, 1, x_31);
+lean_ctor_set(x_23, 0, x_32);
+return x_23;
 }
 }
 else
 {
-lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; 
-x_32 = lean_ctor_get(x_22, 0);
-x_33 = lean_ctor_get(x_22, 1);
-lean_inc(x_33);
-lean_inc(x_32);
-lean_dec(x_22);
-x_34 = lean_ctor_get(x_32, 0);
+lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+x_33 = lean_ctor_get(x_23, 0);
+x_34 = lean_ctor_get(x_23, 1);
 lean_inc(x_34);
-x_35 = lean_ctor_get(x_32, 1);
+lean_inc(x_33);
+lean_dec(x_23);
+x_35 = lean_ctor_get(x_33, 0);
 lean_inc(x_35);
-if (lean_is_exclusive(x_32)) {
- lean_ctor_release(x_32, 0);
- lean_ctor_release(x_32, 1);
- x_36 = x_32;
+x_36 = lean_ctor_get(x_33, 1);
+lean_inc(x_36);
+if (lean_is_exclusive(x_33)) {
+ lean_ctor_release(x_33, 0);
+ lean_ctor_release(x_33, 1);
+ x_37 = x_33;
 } else {
- lean_dec_ref(x_32);
- x_36 = lean_box(0);
-}
-x_37 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_37, 0, x_35);
-lean_ctor_set(x_37, 1, x_2);
-lean_ctor_set(x_37, 2, x_3);
-lean_ctor_set(x_37, 3, x_4);
-lean_ctor_set(x_37, 4, x_5);
-lean_ctor_set(x_37, 5, x_7);
-lean_ctor_set(x_37, 6, x_8);
-lean_ctor_set_uint8(x_37, sizeof(void*)*7, x_6);
-if (lean_is_scalar(x_36)) {
- x_38 = lean_alloc_ctor(3, 2, 0);
+ lean_dec_ref(x_33);
+ x_37 = lean_box(0);
+}
+x_38 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_38, 0, x_36);
+lean_ctor_set(x_38, 1, x_2);
+lean_ctor_set(x_38, 2, x_3);
+lean_ctor_set(x_38, 3, x_4);
+lean_ctor_set(x_38, 4, x_5);
+lean_ctor_set(x_38, 5, x_6);
+lean_ctor_set(x_38, 6, x_8);
+lean_ctor_set(x_38, 7, x_9);
+lean_ctor_set_uint8(x_38, sizeof(void*)*8, x_7);
+if (lean_is_scalar(x_37)) {
+ x_39 = lean_alloc_ctor(3, 2, 0);
 } else {
- x_38 = x_36;
- lean_ctor_set_tag(x_38, 3);
+ x_39 = x_37;
+ lean_ctor_set_tag(x_39, 3);
 }
-lean_ctor_set(x_38, 0, x_34);
-lean_ctor_set(x_38, 1, x_37);
-x_39 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_39, 0, x_38);
-lean_ctor_set(x_39, 1, x_33);
-return x_39;
+lean_ctor_set(x_39, 0, x_35);
+lean_ctor_set(x_39, 1, x_38);
+x_40 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_40, 0, x_39);
+lean_ctor_set(x_40, 1, x_34);
+return x_40;
 }
 }
 else
 {
-uint8_t x_40; 
+uint8_t x_41; 
+lean_dec(x_9);
 lean_dec(x_8);
-lean_dec(x_7);
+lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-x_40 = !lean_is_exclusive(x_22);
-if (x_40 == 0)
+x_41 = !lean_is_exclusive(x_23);
+if (x_41 == 0)
 {
-return x_22;
+return x_23;
 }
 else
 {
-lean_object* x_41; lean_object* x_42; lean_object* x_43; 
-x_41 = lean_ctor_get(x_22, 0);
-x_42 = lean_ctor_get(x_22, 1);
+lean_object* x_42; lean_object* x_43; lean_object* x_44; 
+x_42 = lean_ctor_get(x_23, 0);
+x_43 = lean_ctor_get(x_23, 1);
+lean_inc(x_43);
 lean_inc(x_42);
-lean_inc(x_41);
-lean_dec(x_22);
-x_43 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_43, 0, x_41);
-lean_ctor_set(x_43, 1, x_42);
-return x_43;
+lean_dec(x_23);
+x_44 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_44, 0, x_42);
+lean_ctor_set(x_44, 1, x_43);
+return x_44;
 }
 }
 }
 else
 {
-lean_object* x_44; 
+lean_object* x_45; 
 lean_inc(x_1);
-x_44 = l_Lean_MVarId_getTag(x_1, x_16, x_17, x_18, x_19, x_20);
-if (lean_obj_tag(x_44) == 0)
+x_45 = l_Lean_MVarId_getTag(x_1, x_17, x_18, x_19, x_20, x_21);
+if (lean_obj_tag(x_45) == 0)
 {
-lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; 
-x_45 = lean_ctor_get(x_44, 0);
-lean_inc(x_45);
-x_46 = lean_ctor_get(x_44, 1);
+lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; 
+x_46 = lean_ctor_get(x_45, 0);
 lean_inc(x_46);
-lean_dec(x_44);
-x_47 = l_Lean_Expr_bindingBody_x21(x_9);
+x_47 = lean_ctor_get(x_45, 1);
+lean_inc(x_47);
+lean_dec(x_45);
+x_48 = l_Lean_Expr_bindingBody_x21(x_10);
+lean_inc(x_20);
 lean_inc(x_19);
 lean_inc(x_18);
 lean_inc(x_17);
-lean_inc(x_16);
-lean_inc(x_14);
-lean_inc(x_10);
-x_48 = l_Lean_Meta_Grind_pre(x_10, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_46);
-if (lean_obj_tag(x_48) == 0)
+lean_inc(x_15);
+lean_inc(x_11);
+x_49 = l_Lean_Meta_Grind_pre(x_11, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_47);
+if (lean_obj_tag(x_49) == 0)
 {
-lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; uint8_t x_59; uint8_t x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; uint8_t x_65; lean_object* x_66; lean_object* x_67; uint8_t x_68; 
-x_49 = lean_ctor_get(x_48, 0);
-lean_inc(x_49);
-x_50 = lean_ctor_get(x_48, 1);
+lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; uint8_t x_60; uint8_t x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; uint8_t x_66; lean_object* x_67; lean_object* x_68; uint8_t x_69; 
+x_50 = lean_ctor_get(x_49, 0);
 lean_inc(x_50);
-lean_dec(x_48);
-x_51 = l_Lean_mkFreshFVarId___at_Lean_Meta_Grind_Preprocessor_introNext___spec__3(x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_50);
-x_52 = lean_ctor_get(x_51, 0);
-lean_inc(x_52);
-x_53 = lean_ctor_get(x_51, 1);
+x_51 = lean_ctor_get(x_49, 1);
+lean_inc(x_51);
+lean_dec(x_49);
+x_52 = l_Lean_mkFreshFVarId___at_Lean_Meta_Grind_Preprocessor_introNext___spec__3(x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_51);
+x_53 = lean_ctor_get(x_52, 0);
 lean_inc(x_53);
-lean_dec(x_51);
-x_54 = lean_ctor_get(x_16, 2);
+x_54 = lean_ctor_get(x_52, 1);
 lean_inc(x_54);
-x_55 = l_Lean_Expr_bindingName_x21(x_9);
-x_56 = lean_ctor_get(x_49, 0);
-lean_inc(x_56);
-x_57 = lean_ctor_get(x_49, 1);
+lean_dec(x_52);
+x_55 = lean_ctor_get(x_17, 2);
+lean_inc(x_55);
+x_56 = l_Lean_Expr_bindingName_x21(x_10);
+x_57 = lean_ctor_get(x_50, 0);
 lean_inc(x_57);
-lean_dec(x_49);
-x_58 = l_Lean_Expr_bindingInfo_x21(x_9);
-x_59 = lean_unbox(x_58);
-lean_dec(x_58);
-x_60 = 0;
-lean_inc(x_56);
-lean_inc(x_52);
-x_61 = l_Lean_LocalContext_mkLocalDecl(x_54, x_52, x_55, x_56, x_59, x_60);
-x_62 = l_Lean_Meta_getLocalInstances(x_16, x_17, x_18, x_19, x_53);
-x_63 = lean_ctor_get(x_62, 0);
-lean_inc(x_63);
-x_64 = lean_ctor_get(x_62, 1);
+x_58 = lean_ctor_get(x_50, 1);
+lean_inc(x_58);
+lean_dec(x_50);
+x_59 = l_Lean_Expr_bindingInfo_x21(x_10);
+x_60 = lean_unbox(x_59);
+lean_dec(x_59);
+x_61 = 0;
+lean_inc(x_57);
+lean_inc(x_53);
+x_62 = l_Lean_LocalContext_mkLocalDecl(x_55, x_53, x_56, x_57, x_60, x_61);
+x_63 = l_Lean_Meta_getLocalInstances(x_17, x_18, x_19, x_20, x_54);
+x_64 = lean_ctor_get(x_63, 0);
 lean_inc(x_64);
-lean_dec(x_62);
-x_65 = 2;
-x_66 = lean_unsigned_to_nat(0u);
-lean_inc(x_47);
-x_67 = l_Lean_Meta_mkFreshExprMVarAt(x_61, x_63, x_47, x_65, x_45, x_66, x_16, x_17, x_18, x_19, x_64);
-x_68 = !lean_is_exclusive(x_67);
-if (x_68 == 0)
-{
-lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; 
-x_69 = lean_ctor_get(x_67, 0);
-x_70 = lean_ctor_get(x_67, 1);
-x_71 = l_Lean_Expr_mvarId_x21(x_69);
-lean_inc(x_52);
-x_72 = l_Lean_Expr_fvar___override(x_52);
-x_73 = lean_box(0);
-lean_ctor_set_tag(x_67, 1);
-lean_ctor_set(x_67, 1, x_73);
-lean_ctor_set(x_67, 0, x_72);
-x_74 = lean_array_mk(x_67);
-x_75 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__4___boxed), 10, 2);
-lean_closure_set(x_75, 0, x_74);
-lean_closure_set(x_75, 1, x_69);
-x_76 = lean_alloc_closure((void*)(l_StateRefT_x27_lift___rarg___boxed), 2, 1);
+x_65 = lean_ctor_get(x_63, 1);
+lean_inc(x_65);
+lean_dec(x_63);
+x_66 = 2;
+x_67 = lean_unsigned_to_nat(0u);
+lean_inc(x_48);
+x_68 = l_Lean_Meta_mkFreshExprMVarAt(x_62, x_64, x_48, x_66, x_46, x_67, x_17, x_18, x_19, x_20, x_65);
+x_69 = !lean_is_exclusive(x_68);
+if (x_69 == 0)
+{
+lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; 
+x_70 = lean_ctor_get(x_68, 0);
+x_71 = lean_ctor_get(x_68, 1);
+x_72 = l_Lean_Expr_mvarId_x21(x_70);
+lean_inc(x_53);
+x_73 = l_Lean_Expr_fvar___override(x_53);
+x_74 = lean_box(0);
+lean_ctor_set_tag(x_68, 1);
+lean_ctor_set(x_68, 1, x_74);
+lean_ctor_set(x_68, 0, x_73);
+x_75 = lean_array_mk(x_68);
+x_76 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__4___boxed), 10, 2);
 lean_closure_set(x_76, 0, x_75);
-x_77 = lean_box(x_6);
-lean_inc(x_71);
-x_78 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5___boxed), 25, 15);
-lean_closure_set(x_78, 0, x_57);
-lean_closure_set(x_78, 1, x_1);
-lean_closure_set(x_78, 2, x_71);
-lean_closure_set(x_78, 3, x_2);
-lean_closure_set(x_78, 4, x_3);
-lean_closure_set(x_78, 5, x_4);
-lean_closure_set(x_78, 6, x_5);
-lean_closure_set(x_78, 7, x_77);
-lean_closure_set(x_78, 8, x_7);
-lean_closure_set(x_78, 9, x_8);
-lean_closure_set(x_78, 10, x_52);
-lean_closure_set(x_78, 11, x_73);
-lean_closure_set(x_78, 12, x_47);
-lean_closure_set(x_78, 13, x_56);
-lean_closure_set(x_78, 14, x_10);
-x_79 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_Preprocessor_introNext___spec__1___rarg), 11, 2);
-lean_closure_set(x_79, 0, x_76);
-lean_closure_set(x_79, 1, x_78);
-x_80 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_Preprocessor_introNext___spec__2___rarg(x_71, x_79, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_70);
-return x_80;
+lean_closure_set(x_76, 1, x_70);
+x_77 = lean_alloc_closure((void*)(l_StateRefT_x27_lift___rarg___boxed), 2, 1);
+lean_closure_set(x_77, 0, x_76);
+x_78 = lean_box(x_7);
+lean_inc(x_72);
+x_79 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5___boxed), 26, 16);
+lean_closure_set(x_79, 0, x_58);
+lean_closure_set(x_79, 1, x_1);
+lean_closure_set(x_79, 2, x_72);
+lean_closure_set(x_79, 3, x_2);
+lean_closure_set(x_79, 4, x_3);
+lean_closure_set(x_79, 5, x_4);
+lean_closure_set(x_79, 6, x_5);
+lean_closure_set(x_79, 7, x_6);
+lean_closure_set(x_79, 8, x_78);
+lean_closure_set(x_79, 9, x_8);
+lean_closure_set(x_79, 10, x_9);
+lean_closure_set(x_79, 11, x_53);
+lean_closure_set(x_79, 12, x_74);
+lean_closure_set(x_79, 13, x_48);
+lean_closure_set(x_79, 14, x_57);
+lean_closure_set(x_79, 15, x_11);
+x_80 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_Preprocessor_introNext___spec__1___rarg), 11, 2);
+lean_closure_set(x_80, 0, x_77);
+lean_closure_set(x_80, 1, x_79);
+x_81 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_Preprocessor_introNext___spec__2___rarg(x_72, x_80, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_71);
+return x_81;
 }
 else
 {
-lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; 
-x_81 = lean_ctor_get(x_67, 0);
-x_82 = lean_ctor_get(x_67, 1);
+lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; 
+x_82 = lean_ctor_get(x_68, 0);
+x_83 = lean_ctor_get(x_68, 1);
+lean_inc(x_83);
 lean_inc(x_82);
-lean_inc(x_81);
-lean_dec(x_67);
-x_83 = l_Lean_Expr_mvarId_x21(x_81);
-lean_inc(x_52);
-x_84 = l_Lean_Expr_fvar___override(x_52);
-x_85 = lean_box(0);
-x_86 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_86, 0, x_84);
-lean_ctor_set(x_86, 1, x_85);
-x_87 = lean_array_mk(x_86);
-x_88 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__4___boxed), 10, 2);
-lean_closure_set(x_88, 0, x_87);
-lean_closure_set(x_88, 1, x_81);
-x_89 = lean_alloc_closure((void*)(l_StateRefT_x27_lift___rarg___boxed), 2, 1);
+lean_dec(x_68);
+x_84 = l_Lean_Expr_mvarId_x21(x_82);
+lean_inc(x_53);
+x_85 = l_Lean_Expr_fvar___override(x_53);
+x_86 = lean_box(0);
+x_87 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_87, 0, x_85);
+lean_ctor_set(x_87, 1, x_86);
+x_88 = lean_array_mk(x_87);
+x_89 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__4___boxed), 10, 2);
 lean_closure_set(x_89, 0, x_88);
-x_90 = lean_box(x_6);
-lean_inc(x_83);
-x_91 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5___boxed), 25, 15);
-lean_closure_set(x_91, 0, x_57);
-lean_closure_set(x_91, 1, x_1);
-lean_closure_set(x_91, 2, x_83);
-lean_closure_set(x_91, 3, x_2);
-lean_closure_set(x_91, 4, x_3);
-lean_closure_set(x_91, 5, x_4);
-lean_closure_set(x_91, 6, x_5);
-lean_closure_set(x_91, 7, x_90);
-lean_closure_set(x_91, 8, x_7);
-lean_closure_set(x_91, 9, x_8);
-lean_closure_set(x_91, 10, x_52);
-lean_closure_set(x_91, 11, x_85);
-lean_closure_set(x_91, 12, x_47);
-lean_closure_set(x_91, 13, x_56);
-lean_closure_set(x_91, 14, x_10);
-x_92 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_Preprocessor_introNext___spec__1___rarg), 11, 2);
-lean_closure_set(x_92, 0, x_89);
-lean_closure_set(x_92, 1, x_91);
-x_93 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_Preprocessor_introNext___spec__2___rarg(x_83, x_92, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_82);
-return x_93;
+lean_closure_set(x_89, 1, x_82);
+x_90 = lean_alloc_closure((void*)(l_StateRefT_x27_lift___rarg___boxed), 2, 1);
+lean_closure_set(x_90, 0, x_89);
+x_91 = lean_box(x_7);
+lean_inc(x_84);
+x_92 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5___boxed), 26, 16);
+lean_closure_set(x_92, 0, x_58);
+lean_closure_set(x_92, 1, x_1);
+lean_closure_set(x_92, 2, x_84);
+lean_closure_set(x_92, 3, x_2);
+lean_closure_set(x_92, 4, x_3);
+lean_closure_set(x_92, 5, x_4);
+lean_closure_set(x_92, 6, x_5);
+lean_closure_set(x_92, 7, x_6);
+lean_closure_set(x_92, 8, x_91);
+lean_closure_set(x_92, 9, x_8);
+lean_closure_set(x_92, 10, x_9);
+lean_closure_set(x_92, 11, x_53);
+lean_closure_set(x_92, 12, x_86);
+lean_closure_set(x_92, 13, x_48);
+lean_closure_set(x_92, 14, x_57);
+lean_closure_set(x_92, 15, x_11);
+x_93 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_Preprocessor_introNext___spec__1___rarg), 11, 2);
+lean_closure_set(x_93, 0, x_90);
+lean_closure_set(x_93, 1, x_92);
+x_94 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_Preprocessor_introNext___spec__2___rarg(x_84, x_93, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_83);
+return x_94;
 }
 }
 else
 {
-uint8_t x_94; 
-lean_dec(x_47);
-lean_dec(x_45);
+uint8_t x_95; 
+lean_dec(x_48);
+lean_dec(x_46);
+lean_dec(x_20);
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
@@ -1602,38 +1638,39 @@ lean_dec(x_16);
 lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_10);
+lean_dec(x_11);
+lean_dec(x_9);
 lean_dec(x_8);
-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_94 = !lean_is_exclusive(x_48);
-if (x_94 == 0)
+x_95 = !lean_is_exclusive(x_49);
+if (x_95 == 0)
 {
-return x_48;
+return x_49;
 }
 else
 {
-lean_object* x_95; lean_object* x_96; lean_object* x_97; 
-x_95 = lean_ctor_get(x_48, 0);
-x_96 = lean_ctor_get(x_48, 1);
+lean_object* x_96; lean_object* x_97; lean_object* x_98; 
+x_96 = lean_ctor_get(x_49, 0);
+x_97 = lean_ctor_get(x_49, 1);
+lean_inc(x_97);
 lean_inc(x_96);
-lean_inc(x_95);
-lean_dec(x_48);
-x_97 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_97, 0, x_95);
-lean_ctor_set(x_97, 1, x_96);
-return x_97;
+lean_dec(x_49);
+x_98 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_98, 0, x_96);
+lean_ctor_set(x_98, 1, x_97);
+return x_98;
 }
 }
 }
 else
 {
-uint8_t x_98; 
+uint8_t x_99; 
+lean_dec(x_20);
 lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
@@ -1641,32 +1678,32 @@ lean_dec(x_16);
 lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_10);
+lean_dec(x_11);
+lean_dec(x_9);
 lean_dec(x_8);
-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_98 = !lean_is_exclusive(x_44);
-if (x_98 == 0)
+x_99 = !lean_is_exclusive(x_45);
+if (x_99 == 0)
 {
-return x_44;
+return x_45;
 }
 else
 {
-lean_object* x_99; lean_object* x_100; lean_object* x_101; 
-x_99 = lean_ctor_get(x_44, 0);
-x_100 = lean_ctor_get(x_44, 1);
+lean_object* x_100; lean_object* x_101; lean_object* x_102; 
+x_100 = lean_ctor_get(x_45, 0);
+x_101 = lean_ctor_get(x_45, 1);
+lean_inc(x_101);
 lean_inc(x_100);
-lean_inc(x_99);
-lean_dec(x_44);
-x_101 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_101, 0, x_99);
-lean_ctor_set(x_101, 1, x_100);
-return x_101;
+lean_dec(x_45);
+x_102 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_102, 0, x_100);
+lean_ctor_set(x_102, 1, x_101);
+return x_102;
 }
 }
 }
@@ -1675,7 +1712,7 @@ return x_101;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext(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:
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; uint8_t x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; 
 x_11 = lean_ctor_get(x_1, 0);
 lean_inc(x_11);
 x_12 = lean_ctor_get(x_1, 1);
@@ -1686,38 +1723,41 @@ x_14 = lean_ctor_get(x_1, 3);
 lean_inc(x_14);
 x_15 = lean_ctor_get(x_1, 4);
 lean_inc(x_15);
-x_16 = lean_ctor_get_uint8(x_1, sizeof(void*)*7);
-x_17 = lean_ctor_get(x_1, 5);
-lean_inc(x_17);
+x_16 = lean_ctor_get(x_1, 5);
+lean_inc(x_16);
+x_17 = lean_ctor_get_uint8(x_1, sizeof(void*)*8);
 x_18 = lean_ctor_get(x_1, 6);
 lean_inc(x_18);
+x_19 = lean_ctor_get(x_1, 7);
+lean_inc(x_19);
 lean_dec(x_1);
 lean_inc(x_11);
-x_19 = l_Lean_MVarId_getType(x_11, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_19) == 0)
-{
-uint8_t x_20; 
-x_20 = !lean_is_exclusive(x_19);
-if (x_20 == 0)
+x_20 = l_Lean_MVarId_getType(x_11, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_20) == 0)
 {
-lean_object* x_21; lean_object* x_22; lean_object* x_23; uint8_t x_41; 
-x_21 = lean_ctor_get(x_19, 0);
-x_22 = lean_ctor_get(x_19, 1);
-x_41 = l_Lean_Expr_isArrow(x_21);
-if (x_41 == 0)
+uint8_t x_21; 
+x_21 = !lean_is_exclusive(x_20);
+if (x_21 == 0)
 {
-uint8_t x_42; 
-x_42 = l_Lean_Expr_isLet(x_21);
+lean_object* x_22; lean_object* x_23; lean_object* x_24; uint8_t x_42; 
+x_22 = lean_ctor_get(x_20, 0);
+x_23 = lean_ctor_get(x_20, 1);
+x_42 = l_Lean_Expr_isArrow(x_22);
 if (x_42 == 0)
 {
 uint8_t x_43; 
-x_43 = l_Lean_Expr_isForall(x_21);
-lean_dec(x_21);
+x_43 = l_Lean_Expr_isLet(x_22);
 if (x_43 == 0)
 {
-lean_object* x_44; 
+uint8_t x_44; 
+x_44 = l_Lean_Expr_isForall(x_22);
+lean_dec(x_22);
+if (x_44 == 0)
+{
+lean_object* x_45; 
+lean_dec(x_19);
 lean_dec(x_18);
-lean_dec(x_17);
+lean_dec(x_16);
 lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
@@ -1731,109 +1771,112 @@ lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-x_44 = lean_box(0);
-lean_ctor_set(x_19, 0, x_44);
-return x_19;
+x_45 = lean_box(0);
+lean_ctor_set(x_20, 0, x_45);
+return x_20;
 }
 else
 {
-lean_object* x_45; 
-lean_free_object(x_19);
-x_45 = lean_box(0);
-x_23 = x_45;
-goto block_40;
+lean_object* x_46; 
+lean_free_object(x_20);
+x_46 = lean_box(0);
+x_24 = x_46;
+goto block_41;
 }
 }
 else
 {
-lean_object* x_46; 
-lean_free_object(x_19);
-lean_dec(x_21);
-x_46 = lean_box(0);
-x_23 = x_46;
-goto block_40;
+lean_object* x_47; 
+lean_free_object(x_20);
+lean_dec(x_22);
+x_47 = lean_box(0);
+x_24 = x_47;
+goto block_41;
 }
 }
 else
 {
-lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; 
-lean_free_object(x_19);
-x_47 = l_Lean_Expr_bindingDomain_x21(x_21);
-lean_inc(x_47);
-x_48 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__3___boxed), 9, 1);
-lean_closure_set(x_48, 0, x_47);
-x_49 = lean_alloc_closure((void*)(l_StateRefT_x27_lift___rarg___boxed), 2, 1);
+lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+lean_free_object(x_20);
+x_48 = l_Lean_Expr_bindingDomain_x21(x_22);
+lean_inc(x_48);
+x_49 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__3___boxed), 9, 1);
 lean_closure_set(x_49, 0, x_48);
-x_50 = lean_box(x_16);
+x_50 = lean_alloc_closure((void*)(l_StateRefT_x27_lift___rarg___boxed), 2, 1);
+lean_closure_set(x_50, 0, x_49);
+x_51 = lean_box(x_17);
 lean_inc(x_11);
-x_51 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__6___boxed), 20, 10);
-lean_closure_set(x_51, 0, x_11);
-lean_closure_set(x_51, 1, x_12);
-lean_closure_set(x_51, 2, x_13);
-lean_closure_set(x_51, 3, x_14);
-lean_closure_set(x_51, 4, x_15);
-lean_closure_set(x_51, 5, x_50);
-lean_closure_set(x_51, 6, x_17);
-lean_closure_set(x_51, 7, x_18);
-lean_closure_set(x_51, 8, x_21);
-lean_closure_set(x_51, 9, x_47);
-x_52 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_Preprocessor_introNext___spec__1___rarg), 11, 2);
-lean_closure_set(x_52, 0, x_49);
-lean_closure_set(x_52, 1, x_51);
-x_53 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_Preprocessor_introNext___spec__2___rarg(x_11, x_52, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_22);
-return x_53;
-}
-block_40:
-{
-uint8_t x_24; lean_object* x_25; 
-lean_dec(x_23);
-x_24 = 1;
+x_52 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__6___boxed), 21, 11);
+lean_closure_set(x_52, 0, x_11);
+lean_closure_set(x_52, 1, x_12);
+lean_closure_set(x_52, 2, x_13);
+lean_closure_set(x_52, 3, x_14);
+lean_closure_set(x_52, 4, x_15);
+lean_closure_set(x_52, 5, x_16);
+lean_closure_set(x_52, 6, x_51);
+lean_closure_set(x_52, 7, x_18);
+lean_closure_set(x_52, 8, x_19);
+lean_closure_set(x_52, 9, x_22);
+lean_closure_set(x_52, 10, x_48);
+x_53 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_Preprocessor_introNext___spec__1___rarg), 11, 2);
+lean_closure_set(x_53, 0, x_50);
+lean_closure_set(x_53, 1, x_52);
+x_54 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_Preprocessor_introNext___spec__2___rarg(x_11, x_53, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_23);
+return x_54;
+}
+block_41:
+{
+uint8_t x_25; lean_object* x_26; 
+lean_dec(x_24);
+x_25 = 1;
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
-x_25 = l_Lean_Meta_intro1Core(x_11, x_24, x_6, x_7, x_8, x_9, x_22);
-if (lean_obj_tag(x_25) == 0)
+x_26 = l_Lean_Meta_intro1Core(x_11, x_25, x_6, x_7, x_8, x_9, x_23);
+if (lean_obj_tag(x_26) == 0)
 {
-lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_26 = lean_ctor_get(x_25, 0);
-lean_inc(x_26);
-x_27 = lean_ctor_get(x_25, 1);
+lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_27 = lean_ctor_get(x_26, 0);
 lean_inc(x_27);
-lean_dec(x_25);
-x_28 = lean_ctor_get(x_26, 0);
+x_28 = lean_ctor_get(x_26, 1);
 lean_inc(x_28);
-x_29 = lean_ctor_get(x_26, 1);
-lean_inc(x_29);
 lean_dec(x_26);
-lean_inc(x_28);
-x_30 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__1___boxed), 9, 1);
-lean_closure_set(x_30, 0, x_28);
-x_31 = lean_alloc_closure((void*)(l_StateRefT_x27_lift___rarg___boxed), 2, 1);
-lean_closure_set(x_31, 0, x_30);
-x_32 = lean_box(x_16);
+x_29 = lean_ctor_get(x_27, 0);
 lean_inc(x_29);
-x_33 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__2___boxed), 19, 9);
-lean_closure_set(x_33, 0, x_29);
-lean_closure_set(x_33, 1, x_12);
-lean_closure_set(x_33, 2, x_13);
-lean_closure_set(x_33, 3, x_14);
-lean_closure_set(x_33, 4, x_15);
-lean_closure_set(x_33, 5, x_32);
-lean_closure_set(x_33, 6, x_17);
-lean_closure_set(x_33, 7, x_18);
-lean_closure_set(x_33, 8, x_28);
-x_34 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_Preprocessor_introNext___spec__1___rarg), 11, 2);
-lean_closure_set(x_34, 0, x_31);
-lean_closure_set(x_34, 1, x_33);
-x_35 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_Preprocessor_introNext___spec__2___rarg(x_29, x_34, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_27);
-return x_35;
+x_30 = lean_ctor_get(x_27, 1);
+lean_inc(x_30);
+lean_dec(x_27);
+lean_inc(x_29);
+x_31 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__1___boxed), 9, 1);
+lean_closure_set(x_31, 0, x_29);
+x_32 = lean_alloc_closure((void*)(l_StateRefT_x27_lift___rarg___boxed), 2, 1);
+lean_closure_set(x_32, 0, x_31);
+x_33 = lean_box(x_17);
+lean_inc(x_30);
+x_34 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__2___boxed), 20, 10);
+lean_closure_set(x_34, 0, x_30);
+lean_closure_set(x_34, 1, x_12);
+lean_closure_set(x_34, 2, x_13);
+lean_closure_set(x_34, 3, x_14);
+lean_closure_set(x_34, 4, x_15);
+lean_closure_set(x_34, 5, x_16);
+lean_closure_set(x_34, 6, x_33);
+lean_closure_set(x_34, 7, x_18);
+lean_closure_set(x_34, 8, x_19);
+lean_closure_set(x_34, 9, x_29);
+x_35 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_Preprocessor_introNext___spec__1___rarg), 11, 2);
+lean_closure_set(x_35, 0, x_32);
+lean_closure_set(x_35, 1, x_34);
+x_36 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_Preprocessor_introNext___spec__2___rarg(x_30, x_35, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_28);
+return x_36;
 }
 else
 {
-uint8_t x_36; 
+uint8_t x_37; 
+lean_dec(x_19);
 lean_dec(x_18);
-lean_dec(x_17);
+lean_dec(x_16);
 lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
@@ -1846,50 +1889,51 @@ lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-x_36 = !lean_is_exclusive(x_25);
-if (x_36 == 0)
+x_37 = !lean_is_exclusive(x_26);
+if (x_37 == 0)
 {
-return x_25;
+return x_26;
 }
 else
 {
-lean_object* x_37; lean_object* x_38; lean_object* x_39; 
-x_37 = lean_ctor_get(x_25, 0);
-x_38 = lean_ctor_get(x_25, 1);
+lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+x_38 = lean_ctor_get(x_26, 0);
+x_39 = lean_ctor_get(x_26, 1);
+lean_inc(x_39);
 lean_inc(x_38);
-lean_inc(x_37);
-lean_dec(x_25);
-x_39 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_39, 0, x_37);
-lean_ctor_set(x_39, 1, x_38);
-return x_39;
+lean_dec(x_26);
+x_40 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_40, 0, x_38);
+lean_ctor_set(x_40, 1, x_39);
+return x_40;
 }
 }
 }
 }
 else
 {
-lean_object* x_54; lean_object* x_55; lean_object* x_56; uint8_t x_74; 
-x_54 = lean_ctor_get(x_19, 0);
-x_55 = lean_ctor_get(x_19, 1);
+lean_object* x_55; lean_object* x_56; lean_object* x_57; uint8_t x_75; 
+x_55 = lean_ctor_get(x_20, 0);
+x_56 = lean_ctor_get(x_20, 1);
+lean_inc(x_56);
 lean_inc(x_55);
-lean_inc(x_54);
-lean_dec(x_19);
-x_74 = l_Lean_Expr_isArrow(x_54);
-if (x_74 == 0)
-{
-uint8_t x_75; 
-x_75 = l_Lean_Expr_isLet(x_54);
+lean_dec(x_20);
+x_75 = l_Lean_Expr_isArrow(x_55);
 if (x_75 == 0)
 {
 uint8_t x_76; 
-x_76 = l_Lean_Expr_isForall(x_54);
-lean_dec(x_54);
+x_76 = l_Lean_Expr_isLet(x_55);
 if (x_76 == 0)
 {
-lean_object* x_77; lean_object* x_78; 
+uint8_t x_77; 
+x_77 = l_Lean_Expr_isForall(x_55);
+lean_dec(x_55);
+if (x_77 == 0)
+{
+lean_object* x_78; lean_object* x_79; 
+lean_dec(x_19);
 lean_dec(x_18);
-lean_dec(x_17);
+lean_dec(x_16);
 lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
@@ -1903,108 +1947,111 @@ lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-x_77 = lean_box(0);
-x_78 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_78, 0, x_77);
-lean_ctor_set(x_78, 1, x_55);
-return x_78;
+x_78 = lean_box(0);
+x_79 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_79, 0, x_78);
+lean_ctor_set(x_79, 1, x_56);
+return x_79;
 }
 else
 {
-lean_object* x_79; 
-x_79 = lean_box(0);
-x_56 = x_79;
-goto block_73;
+lean_object* x_80; 
+x_80 = lean_box(0);
+x_57 = x_80;
+goto block_74;
 }
 }
 else
 {
-lean_object* x_80; 
-lean_dec(x_54);
-x_80 = lean_box(0);
-x_56 = x_80;
-goto block_73;
+lean_object* x_81; 
+lean_dec(x_55);
+x_81 = lean_box(0);
+x_57 = x_81;
+goto block_74;
 }
 }
 else
 {
-lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; 
-x_81 = l_Lean_Expr_bindingDomain_x21(x_54);
-lean_inc(x_81);
-x_82 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__3___boxed), 9, 1);
-lean_closure_set(x_82, 0, x_81);
-x_83 = lean_alloc_closure((void*)(l_StateRefT_x27_lift___rarg___boxed), 2, 1);
+lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; 
+x_82 = l_Lean_Expr_bindingDomain_x21(x_55);
+lean_inc(x_82);
+x_83 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__3___boxed), 9, 1);
 lean_closure_set(x_83, 0, x_82);
-x_84 = lean_box(x_16);
+x_84 = lean_alloc_closure((void*)(l_StateRefT_x27_lift___rarg___boxed), 2, 1);
+lean_closure_set(x_84, 0, x_83);
+x_85 = lean_box(x_17);
 lean_inc(x_11);
-x_85 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__6___boxed), 20, 10);
-lean_closure_set(x_85, 0, x_11);
-lean_closure_set(x_85, 1, x_12);
-lean_closure_set(x_85, 2, x_13);
-lean_closure_set(x_85, 3, x_14);
-lean_closure_set(x_85, 4, x_15);
-lean_closure_set(x_85, 5, x_84);
-lean_closure_set(x_85, 6, x_17);
-lean_closure_set(x_85, 7, x_18);
-lean_closure_set(x_85, 8, x_54);
-lean_closure_set(x_85, 9, x_81);
-x_86 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_Preprocessor_introNext___spec__1___rarg), 11, 2);
-lean_closure_set(x_86, 0, x_83);
-lean_closure_set(x_86, 1, x_85);
-x_87 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_Preprocessor_introNext___spec__2___rarg(x_11, x_86, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_55);
-return x_87;
-}
-block_73:
-{
-uint8_t x_57; lean_object* x_58; 
-lean_dec(x_56);
-x_57 = 1;
+x_86 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__6___boxed), 21, 11);
+lean_closure_set(x_86, 0, x_11);
+lean_closure_set(x_86, 1, x_12);
+lean_closure_set(x_86, 2, x_13);
+lean_closure_set(x_86, 3, x_14);
+lean_closure_set(x_86, 4, x_15);
+lean_closure_set(x_86, 5, x_16);
+lean_closure_set(x_86, 6, x_85);
+lean_closure_set(x_86, 7, x_18);
+lean_closure_set(x_86, 8, x_19);
+lean_closure_set(x_86, 9, x_55);
+lean_closure_set(x_86, 10, x_82);
+x_87 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_Preprocessor_introNext___spec__1___rarg), 11, 2);
+lean_closure_set(x_87, 0, x_84);
+lean_closure_set(x_87, 1, x_86);
+x_88 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_Preprocessor_introNext___spec__2___rarg(x_11, x_87, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_56);
+return x_88;
+}
+block_74:
+{
+uint8_t x_58; lean_object* x_59; 
+lean_dec(x_57);
+x_58 = 1;
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
-x_58 = l_Lean_Meta_intro1Core(x_11, x_57, x_6, x_7, x_8, x_9, x_55);
-if (lean_obj_tag(x_58) == 0)
+x_59 = l_Lean_Meta_intro1Core(x_11, x_58, x_6, x_7, x_8, x_9, x_56);
+if (lean_obj_tag(x_59) == 0)
 {
-lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; 
-x_59 = lean_ctor_get(x_58, 0);
-lean_inc(x_59);
-x_60 = lean_ctor_get(x_58, 1);
+lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; 
+x_60 = lean_ctor_get(x_59, 0);
 lean_inc(x_60);
-lean_dec(x_58);
-x_61 = lean_ctor_get(x_59, 0);
+x_61 = lean_ctor_get(x_59, 1);
 lean_inc(x_61);
-x_62 = lean_ctor_get(x_59, 1);
-lean_inc(x_62);
 lean_dec(x_59);
-lean_inc(x_61);
-x_63 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__1___boxed), 9, 1);
-lean_closure_set(x_63, 0, x_61);
-x_64 = lean_alloc_closure((void*)(l_StateRefT_x27_lift___rarg___boxed), 2, 1);
-lean_closure_set(x_64, 0, x_63);
-x_65 = lean_box(x_16);
+x_62 = lean_ctor_get(x_60, 0);
 lean_inc(x_62);
-x_66 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__2___boxed), 19, 9);
-lean_closure_set(x_66, 0, x_62);
-lean_closure_set(x_66, 1, x_12);
-lean_closure_set(x_66, 2, x_13);
-lean_closure_set(x_66, 3, x_14);
-lean_closure_set(x_66, 4, x_15);
-lean_closure_set(x_66, 5, x_65);
-lean_closure_set(x_66, 6, x_17);
-lean_closure_set(x_66, 7, x_18);
-lean_closure_set(x_66, 8, x_61);
-x_67 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_Preprocessor_introNext___spec__1___rarg), 11, 2);
-lean_closure_set(x_67, 0, x_64);
-lean_closure_set(x_67, 1, x_66);
-x_68 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_Preprocessor_introNext___spec__2___rarg(x_62, x_67, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_60);
-return x_68;
-}
-else
-{
-lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; 
+x_63 = lean_ctor_get(x_60, 1);
+lean_inc(x_63);
+lean_dec(x_60);
+lean_inc(x_62);
+x_64 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__1___boxed), 9, 1);
+lean_closure_set(x_64, 0, x_62);
+x_65 = lean_alloc_closure((void*)(l_StateRefT_x27_lift___rarg___boxed), 2, 1);
+lean_closure_set(x_65, 0, x_64);
+x_66 = lean_box(x_17);
+lean_inc(x_63);
+x_67 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__2___boxed), 20, 10);
+lean_closure_set(x_67, 0, x_63);
+lean_closure_set(x_67, 1, x_12);
+lean_closure_set(x_67, 2, x_13);
+lean_closure_set(x_67, 3, x_14);
+lean_closure_set(x_67, 4, x_15);
+lean_closure_set(x_67, 5, x_16);
+lean_closure_set(x_67, 6, x_66);
+lean_closure_set(x_67, 7, x_18);
+lean_closure_set(x_67, 8, x_19);
+lean_closure_set(x_67, 9, x_62);
+x_68 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_Preprocessor_introNext___spec__1___rarg), 11, 2);
+lean_closure_set(x_68, 0, x_65);
+lean_closure_set(x_68, 1, x_67);
+x_69 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_Preprocessor_introNext___spec__2___rarg(x_63, x_68, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_61);
+return x_69;
+}
+else
+{
+lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; 
+lean_dec(x_19);
 lean_dec(x_18);
-lean_dec(x_17);
+lean_dec(x_16);
 lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
@@ -2017,35 +2064,36 @@ lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-x_69 = lean_ctor_get(x_58, 0);
-lean_inc(x_69);
-x_70 = lean_ctor_get(x_58, 1);
+x_70 = lean_ctor_get(x_59, 0);
 lean_inc(x_70);
-if (lean_is_exclusive(x_58)) {
- lean_ctor_release(x_58, 0);
- lean_ctor_release(x_58, 1);
- x_71 = x_58;
+x_71 = lean_ctor_get(x_59, 1);
+lean_inc(x_71);
+if (lean_is_exclusive(x_59)) {
+ lean_ctor_release(x_59, 0);
+ lean_ctor_release(x_59, 1);
+ x_72 = x_59;
 } else {
- lean_dec_ref(x_58);
- x_71 = lean_box(0);
+ lean_dec_ref(x_59);
+ x_72 = lean_box(0);
 }
-if (lean_is_scalar(x_71)) {
- x_72 = lean_alloc_ctor(1, 2, 0);
+if (lean_is_scalar(x_72)) {
+ x_73 = lean_alloc_ctor(1, 2, 0);
 } else {
- x_72 = x_71;
+ x_73 = x_72;
 }
-lean_ctor_set(x_72, 0, x_69);
-lean_ctor_set(x_72, 1, x_70);
-return x_72;
+lean_ctor_set(x_73, 0, x_70);
+lean_ctor_set(x_73, 1, x_71);
+return x_73;
 }
 }
 }
 }
 else
 {
-uint8_t x_88; 
+uint8_t x_89; 
+lean_dec(x_19);
 lean_dec(x_18);
-lean_dec(x_17);
+lean_dec(x_16);
 lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
@@ -2059,23 +2107,23 @@ lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-x_88 = !lean_is_exclusive(x_19);
-if (x_88 == 0)
+x_89 = !lean_is_exclusive(x_20);
+if (x_89 == 0)
 {
-return x_19;
+return x_20;
 }
 else
 {
-lean_object* x_89; lean_object* x_90; lean_object* x_91; 
-x_89 = lean_ctor_get(x_19, 0);
-x_90 = lean_ctor_get(x_19, 1);
+lean_object* x_90; lean_object* x_91; lean_object* x_92; 
+x_90 = lean_ctor_get(x_20, 0);
+x_91 = lean_ctor_get(x_20, 1);
+lean_inc(x_91);
 lean_inc(x_90);
-lean_inc(x_89);
-lean_dec(x_19);
-x_91 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_91, 0, x_89);
-lean_ctor_set(x_91, 1, x_90);
-return x_91;
+lean_dec(x_20);
+x_92 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_92, 0, x_90);
+lean_ctor_set(x_92, 1, x_91);
+return x_92;
 }
 }
 }
@@ -2170,18 +2218,19 @@ lean_object* x_16 = _args[15];
 lean_object* x_17 = _args[16];
 lean_object* x_18 = _args[17];
 lean_object* x_19 = _args[18];
+lean_object* x_20 = _args[19];
 _start:
 {
-uint8_t x_20; lean_object* x_21; 
-x_20 = lean_unbox(x_6);
-lean_dec(x_6);
-x_21 = l_Lean_Meta_Grind_Preprocessor_introNext___lambda__2(x_1, x_2, x_3, x_4, x_5, x_20, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19);
+uint8_t x_21; lean_object* x_22; 
+x_21 = lean_unbox(x_7);
+lean_dec(x_7);
+x_22 = l_Lean_Meta_Grind_Preprocessor_introNext___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_21, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
+lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
 lean_dec(x_11);
-lean_dec(x_10);
-return x_21;
+return x_22;
 }
 }
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__3___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) {
@@ -2237,12 +2286,14 @@ lean_object* x_22 = _args[21];
 lean_object* x_23 = _args[22];
 lean_object* x_24 = _args[23];
 lean_object* x_25 = _args[24];
+lean_object* x_26 = _args[25];
 _start:
 {
-uint8_t x_26; lean_object* x_27; 
-x_26 = lean_unbox(x_8);
-lean_dec(x_8);
-x_27 = l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_26, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_21, x_22, x_23, x_24, x_25);
+uint8_t x_27; lean_object* x_28; 
+x_27 = lean_unbox(x_9);
+lean_dec(x_9);
+x_28 = l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_27, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_21, x_22, x_23, x_24, x_25, x_26);
+lean_dec(x_25);
 lean_dec(x_24);
 lean_dec(x_23);
 lean_dec(x_22);
@@ -2250,9 +2301,8 @@ lean_dec(x_21);
 lean_dec(x_20);
 lean_dec(x_19);
 lean_dec(x_18);
-lean_dec(x_17);
 lean_dec(x_1);
-return x_27;
+return x_28;
 }
 }
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_introNext___lambda__6___boxed(lean_object** _args) {
@@ -2276,16 +2326,17 @@ lean_object* x_17 = _args[16];
 lean_object* x_18 = _args[17];
 lean_object* x_19 = _args[18];
 lean_object* x_20 = _args[19];
+lean_object* x_21 = _args[20];
 _start:
 {
-uint8_t x_21; uint8_t x_22; lean_object* x_23; 
-x_21 = lean_unbox(x_6);
-lean_dec(x_6);
-x_22 = lean_unbox(x_11);
-lean_dec(x_11);
-x_23 = l_Lean_Meta_Grind_Preprocessor_introNext___lambda__6(x_1, x_2, x_3, x_4, x_5, x_21, x_7, x_8, x_9, x_10, x_22, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
-lean_dec(x_9);
-return x_23;
+uint8_t x_22; uint8_t x_23; lean_object* x_24; 
+x_22 = lean_unbox(x_7);
+lean_dec(x_7);
+x_23 = lean_unbox(x_12);
+lean_dec(x_12);
+x_24 = l_Lean_Meta_Grind_Preprocessor_introNext___lambda__6(x_1, x_2, x_3, x_4, x_5, x_6, x_22, x_8, x_9, x_10, x_11, x_23, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20, x_21);
+lean_dec(x_10);
+return x_24;
 }
 }
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_pushResult(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) {
@@ -2460,33 +2511,36 @@ uint8_t x_5;
 x_5 = !lean_is_exclusive(x_2);
 if (x_5 == 0)
 {
-lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; uint8_t x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
+lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; 
 x_6 = lean_ctor_get(x_2, 0);
 x_7 = lean_ctor_get(x_2, 1);
 x_8 = lean_ctor_get(x_1, 1);
 x_9 = lean_ctor_get(x_1, 2);
 x_10 = lean_ctor_get(x_1, 3);
 x_11 = lean_ctor_get(x_1, 4);
-x_12 = lean_ctor_get_uint8(x_1, sizeof(void*)*7);
-x_13 = lean_ctor_get(x_1, 5);
+x_12 = lean_ctor_get(x_1, 5);
+x_13 = lean_ctor_get_uint8(x_1, sizeof(void*)*8);
 x_14 = lean_ctor_get(x_1, 6);
+x_15 = lean_ctor_get(x_1, 7);
+lean_inc(x_15);
 lean_inc(x_14);
-lean_inc(x_13);
+lean_inc(x_12);
 lean_inc(x_11);
 lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
-x_15 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_15, 0, x_6);
-lean_ctor_set(x_15, 1, x_8);
-lean_ctor_set(x_15, 2, x_9);
-lean_ctor_set(x_15, 3, x_10);
-lean_ctor_set(x_15, 4, x_11);
-lean_ctor_set(x_15, 5, x_13);
-lean_ctor_set(x_15, 6, x_14);
-lean_ctor_set_uint8(x_15, sizeof(void*)*7, x_12);
+x_16 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_16, 0, x_6);
+lean_ctor_set(x_16, 1, x_8);
+lean_ctor_set(x_16, 2, x_9);
+lean_ctor_set(x_16, 3, x_10);
+lean_ctor_set(x_16, 4, x_11);
+lean_ctor_set(x_16, 5, x_12);
+lean_ctor_set(x_16, 6, x_14);
+lean_ctor_set(x_16, 7, x_15);
+lean_ctor_set_uint8(x_16, sizeof(void*)*8, x_13);
 lean_ctor_set(x_2, 1, x_3);
-lean_ctor_set(x_2, 0, x_15);
+lean_ctor_set(x_2, 0, x_16);
 {
 lean_object* _tmp_1 = x_7;
 lean_object* _tmp_2 = x_2;
@@ -2497,39 +2551,42 @@ goto _start;
 }
 else
 {
-lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; 
-x_17 = lean_ctor_get(x_2, 0);
-x_18 = lean_ctor_get(x_2, 1);
+lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; uint8_t x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_18 = lean_ctor_get(x_2, 0);
+x_19 = lean_ctor_get(x_2, 1);
+lean_inc(x_19);
 lean_inc(x_18);
-lean_inc(x_17);
 lean_dec(x_2);
-x_19 = lean_ctor_get(x_1, 1);
-x_20 = lean_ctor_get(x_1, 2);
-x_21 = lean_ctor_get(x_1, 3);
-x_22 = lean_ctor_get(x_1, 4);
-x_23 = lean_ctor_get_uint8(x_1, sizeof(void*)*7);
+x_20 = lean_ctor_get(x_1, 1);
+x_21 = lean_ctor_get(x_1, 2);
+x_22 = lean_ctor_get(x_1, 3);
+x_23 = lean_ctor_get(x_1, 4);
 x_24 = lean_ctor_get(x_1, 5);
-x_25 = lean_ctor_get(x_1, 6);
-lean_inc(x_25);
+x_25 = lean_ctor_get_uint8(x_1, sizeof(void*)*8);
+x_26 = lean_ctor_get(x_1, 6);
+x_27 = lean_ctor_get(x_1, 7);
+lean_inc(x_27);
+lean_inc(x_26);
 lean_inc(x_24);
+lean_inc(x_23);
 lean_inc(x_22);
 lean_inc(x_21);
 lean_inc(x_20);
-lean_inc(x_19);
-x_26 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_26, 0, x_17);
-lean_ctor_set(x_26, 1, x_19);
-lean_ctor_set(x_26, 2, x_20);
-lean_ctor_set(x_26, 3, x_21);
-lean_ctor_set(x_26, 4, x_22);
-lean_ctor_set(x_26, 5, x_24);
-lean_ctor_set(x_26, 6, x_25);
-lean_ctor_set_uint8(x_26, sizeof(void*)*7, x_23);
-x_27 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_27, 0, x_26);
-lean_ctor_set(x_27, 1, x_3);
-x_2 = x_18;
-x_3 = x_27;
+x_28 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_28, 0, x_18);
+lean_ctor_set(x_28, 1, x_20);
+lean_ctor_set(x_28, 2, x_21);
+lean_ctor_set(x_28, 3, x_22);
+lean_ctor_set(x_28, 4, x_23);
+lean_ctor_set(x_28, 5, x_24);
+lean_ctor_set(x_28, 6, x_26);
+lean_ctor_set(x_28, 7, x_27);
+lean_ctor_set_uint8(x_28, sizeof(void*)*8, x_25);
+x_29 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_29, 0, x_28);
+lean_ctor_set(x_29, 1, x_3);
+x_2 = x_19;
+x_3 = x_29;
 goto _start;
 }
 }
@@ -2715,7 +2772,7 @@ uint8_t x_8;
 x_8 = !lean_is_exclusive(x_1);
 if (x_8 == 0)
 {
-lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; 
 x_9 = lean_ctor_get(x_1, 0);
 x_10 = lean_ctor_get(x_1, 1);
 x_11 = lean_ctor_get(x_1, 2);
@@ -2723,265 +2780,273 @@ x_12 = lean_ctor_get(x_1, 3);
 x_13 = lean_ctor_get(x_1, 4);
 x_14 = lean_ctor_get(x_1, 5);
 x_15 = lean_ctor_get(x_1, 6);
-x_16 = l_Lean_Meta_Grind_injection_x3f(x_9, x_2, x_3, x_4, x_5, x_6, x_7);
-if (lean_obj_tag(x_16) == 0)
-{
-lean_object* x_17; 
-x_17 = lean_ctor_get(x_16, 0);
-lean_inc(x_17);
+x_16 = lean_ctor_get(x_1, 7);
+x_17 = l_Lean_Meta_Grind_injection_x3f(x_9, x_2, x_3, x_4, x_5, x_6, x_7);
 if (lean_obj_tag(x_17) == 0)
 {
-uint8_t x_18; 
+lean_object* x_18; 
+x_18 = lean_ctor_get(x_17, 0);
+lean_inc(x_18);
+if (lean_obj_tag(x_18) == 0)
+{
+uint8_t x_19; 
 lean_free_object(x_1);
+lean_dec(x_16);
 lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
 lean_dec(x_11);
 lean_dec(x_10);
-x_18 = !lean_is_exclusive(x_16);
-if (x_18 == 0)
+x_19 = !lean_is_exclusive(x_17);
+if (x_19 == 0)
 {
-lean_object* x_19; lean_object* x_20; 
-x_19 = lean_ctor_get(x_16, 0);
-lean_dec(x_19);
-x_20 = lean_box(0);
-lean_ctor_set(x_16, 0, x_20);
-return x_16;
+lean_object* x_20; lean_object* x_21; 
+x_20 = lean_ctor_get(x_17, 0);
+lean_dec(x_20);
+x_21 = lean_box(0);
+lean_ctor_set(x_17, 0, x_21);
+return x_17;
 }
 else
 {
-lean_object* x_21; lean_object* x_22; lean_object* x_23; 
-x_21 = lean_ctor_get(x_16, 1);
-lean_inc(x_21);
-lean_dec(x_16);
-x_22 = lean_box(0);
-x_23 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_23, 0, x_22);
-lean_ctor_set(x_23, 1, x_21);
-return x_23;
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_22 = lean_ctor_get(x_17, 1);
+lean_inc(x_22);
+lean_dec(x_17);
+x_23 = lean_box(0);
+x_24 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_24, 0, x_23);
+lean_ctor_set(x_24, 1, x_22);
+return x_24;
 }
 }
 else
 {
-uint8_t x_24; 
-x_24 = !lean_is_exclusive(x_16);
-if (x_24 == 0)
+uint8_t x_25; 
+x_25 = !lean_is_exclusive(x_17);
+if (x_25 == 0)
 {
-lean_object* x_25; uint8_t x_26; 
-x_25 = lean_ctor_get(x_16, 0);
-lean_dec(x_25);
-x_26 = !lean_is_exclusive(x_17);
-if (x_26 == 0)
+lean_object* x_26; uint8_t x_27; 
+x_26 = lean_ctor_get(x_17, 0);
+lean_dec(x_26);
+x_27 = !lean_is_exclusive(x_18);
+if (x_27 == 0)
 {
-lean_object* x_27; 
-x_27 = lean_ctor_get(x_17, 0);
-lean_ctor_set(x_1, 0, x_27);
-lean_ctor_set(x_17, 0, x_1);
-return x_16;
+lean_object* x_28; 
+x_28 = lean_ctor_get(x_18, 0);
+lean_ctor_set(x_1, 0, x_28);
+lean_ctor_set(x_18, 0, x_1);
+return x_17;
 }
 else
 {
-lean_object* x_28; lean_object* x_29; 
-x_28 = lean_ctor_get(x_17, 0);
-lean_inc(x_28);
-lean_dec(x_17);
-lean_ctor_set(x_1, 0, x_28);
-x_29 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_29, 0, x_1);
-lean_ctor_set(x_16, 0, x_29);
-return x_16;
+lean_object* x_29; lean_object* x_30; 
+x_29 = lean_ctor_get(x_18, 0);
+lean_inc(x_29);
+lean_dec(x_18);
+lean_ctor_set(x_1, 0, x_29);
+x_30 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_30, 0, x_1);
+lean_ctor_set(x_17, 0, x_30);
+return x_17;
 }
 }
 else
 {
-lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; 
-x_30 = lean_ctor_get(x_16, 1);
-lean_inc(x_30);
-lean_dec(x_16);
-x_31 = lean_ctor_get(x_17, 0);
+lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_31 = lean_ctor_get(x_17, 1);
 lean_inc(x_31);
-if (lean_is_exclusive(x_17)) {
- lean_ctor_release(x_17, 0);
- x_32 = x_17;
+lean_dec(x_17);
+x_32 = lean_ctor_get(x_18, 0);
+lean_inc(x_32);
+if (lean_is_exclusive(x_18)) {
+ lean_ctor_release(x_18, 0);
+ x_33 = x_18;
 } else {
- lean_dec_ref(x_17);
- x_32 = lean_box(0);
+ lean_dec_ref(x_18);
+ x_33 = lean_box(0);
 }
-lean_ctor_set(x_1, 0, x_31);
-if (lean_is_scalar(x_32)) {
- x_33 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_1, 0, x_32);
+if (lean_is_scalar(x_33)) {
+ x_34 = lean_alloc_ctor(1, 1, 0);
 } else {
- x_33 = x_32;
+ x_34 = x_33;
 }
-lean_ctor_set(x_33, 0, x_1);
-x_34 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_34, 0, x_33);
-lean_ctor_set(x_34, 1, x_30);
-return x_34;
+lean_ctor_set(x_34, 0, x_1);
+x_35 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_35, 0, x_34);
+lean_ctor_set(x_35, 1, x_31);
+return x_35;
 }
 }
 }
 else
 {
-uint8_t x_35; 
+uint8_t x_36; 
 lean_free_object(x_1);
+lean_dec(x_16);
 lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
 lean_dec(x_11);
 lean_dec(x_10);
-x_35 = !lean_is_exclusive(x_16);
-if (x_35 == 0)
+x_36 = !lean_is_exclusive(x_17);
+if (x_36 == 0)
 {
-return x_16;
+return x_17;
 }
 else
 {
-lean_object* x_36; lean_object* x_37; lean_object* x_38; 
-x_36 = lean_ctor_get(x_16, 0);
-x_37 = lean_ctor_get(x_16, 1);
+lean_object* x_37; lean_object* x_38; lean_object* x_39; 
+x_37 = lean_ctor_get(x_17, 0);
+x_38 = lean_ctor_get(x_17, 1);
+lean_inc(x_38);
 lean_inc(x_37);
-lean_inc(x_36);
-lean_dec(x_16);
-x_38 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_38, 0, x_36);
-lean_ctor_set(x_38, 1, x_37);
-return x_38;
+lean_dec(x_17);
+x_39 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_39, 0, x_37);
+lean_ctor_set(x_39, 1, x_38);
+return x_39;
 }
 }
 }
 else
 {
-lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; uint8_t x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; 
-x_39 = lean_ctor_get(x_1, 0);
-x_40 = lean_ctor_get(x_1, 1);
-x_41 = lean_ctor_get(x_1, 2);
-x_42 = lean_ctor_get(x_1, 3);
-x_43 = lean_ctor_get(x_1, 4);
-x_44 = lean_ctor_get_uint8(x_1, sizeof(void*)*7);
+lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; uint8_t x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; 
+x_40 = lean_ctor_get(x_1, 0);
+x_41 = lean_ctor_get(x_1, 1);
+x_42 = lean_ctor_get(x_1, 2);
+x_43 = lean_ctor_get(x_1, 3);
+x_44 = lean_ctor_get(x_1, 4);
 x_45 = lean_ctor_get(x_1, 5);
-x_46 = lean_ctor_get(x_1, 6);
-lean_inc(x_46);
+x_46 = lean_ctor_get_uint8(x_1, sizeof(void*)*8);
+x_47 = lean_ctor_get(x_1, 6);
+x_48 = lean_ctor_get(x_1, 7);
+lean_inc(x_48);
+lean_inc(x_47);
 lean_inc(x_45);
+lean_inc(x_44);
 lean_inc(x_43);
 lean_inc(x_42);
 lean_inc(x_41);
 lean_inc(x_40);
-lean_inc(x_39);
 lean_dec(x_1);
-x_47 = l_Lean_Meta_Grind_injection_x3f(x_39, x_2, x_3, x_4, x_5, x_6, x_7);
-if (lean_obj_tag(x_47) == 0)
+x_49 = l_Lean_Meta_Grind_injection_x3f(x_40, x_2, x_3, x_4, x_5, x_6, x_7);
+if (lean_obj_tag(x_49) == 0)
 {
-lean_object* x_48; 
-x_48 = lean_ctor_get(x_47, 0);
-lean_inc(x_48);
-if (lean_obj_tag(x_48) == 0)
+lean_object* x_50; 
+x_50 = lean_ctor_get(x_49, 0);
+lean_inc(x_50);
+if (lean_obj_tag(x_50) == 0)
 {
-lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; 
-lean_dec(x_46);
+lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+lean_dec(x_48);
+lean_dec(x_47);
 lean_dec(x_45);
+lean_dec(x_44);
 lean_dec(x_43);
 lean_dec(x_42);
 lean_dec(x_41);
-lean_dec(x_40);
-x_49 = lean_ctor_get(x_47, 1);
-lean_inc(x_49);
-if (lean_is_exclusive(x_47)) {
- lean_ctor_release(x_47, 0);
- lean_ctor_release(x_47, 1);
- x_50 = x_47;
+x_51 = lean_ctor_get(x_49, 1);
+lean_inc(x_51);
+if (lean_is_exclusive(x_49)) {
+ lean_ctor_release(x_49, 0);
+ lean_ctor_release(x_49, 1);
+ x_52 = x_49;
 } else {
- lean_dec_ref(x_47);
- x_50 = lean_box(0);
+ lean_dec_ref(x_49);
+ x_52 = lean_box(0);
 }
-x_51 = lean_box(0);
-if (lean_is_scalar(x_50)) {
- x_52 = lean_alloc_ctor(0, 2, 0);
+x_53 = lean_box(0);
+if (lean_is_scalar(x_52)) {
+ x_54 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_52 = x_50;
+ x_54 = x_52;
 }
-lean_ctor_set(x_52, 0, x_51);
-lean_ctor_set(x_52, 1, x_49);
-return x_52;
+lean_ctor_set(x_54, 0, x_53);
+lean_ctor_set(x_54, 1, x_51);
+return x_54;
 }
 else
 {
-lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; 
-x_53 = lean_ctor_get(x_47, 1);
-lean_inc(x_53);
-if (lean_is_exclusive(x_47)) {
- lean_ctor_release(x_47, 0);
- lean_ctor_release(x_47, 1);
- x_54 = x_47;
-} else {
- lean_dec_ref(x_47);
- x_54 = lean_box(0);
-}
-x_55 = lean_ctor_get(x_48, 0);
+lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; 
+x_55 = lean_ctor_get(x_49, 1);
 lean_inc(x_55);
-if (lean_is_exclusive(x_48)) {
- lean_ctor_release(x_48, 0);
- x_56 = x_48;
+if (lean_is_exclusive(x_49)) {
+ lean_ctor_release(x_49, 0);
+ lean_ctor_release(x_49, 1);
+ x_56 = x_49;
 } else {
- lean_dec_ref(x_48);
+ lean_dec_ref(x_49);
  x_56 = lean_box(0);
 }
-x_57 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_57, 0, x_55);
-lean_ctor_set(x_57, 1, x_40);
-lean_ctor_set(x_57, 2, x_41);
-lean_ctor_set(x_57, 3, x_42);
-lean_ctor_set(x_57, 4, x_43);
-lean_ctor_set(x_57, 5, x_45);
-lean_ctor_set(x_57, 6, x_46);
-lean_ctor_set_uint8(x_57, sizeof(void*)*7, x_44);
-if (lean_is_scalar(x_56)) {
- x_58 = lean_alloc_ctor(1, 1, 0);
+x_57 = lean_ctor_get(x_50, 0);
+lean_inc(x_57);
+if (lean_is_exclusive(x_50)) {
+ lean_ctor_release(x_50, 0);
+ x_58 = x_50;
+} else {
+ lean_dec_ref(x_50);
+ x_58 = lean_box(0);
+}
+x_59 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_59, 0, x_57);
+lean_ctor_set(x_59, 1, x_41);
+lean_ctor_set(x_59, 2, x_42);
+lean_ctor_set(x_59, 3, x_43);
+lean_ctor_set(x_59, 4, x_44);
+lean_ctor_set(x_59, 5, x_45);
+lean_ctor_set(x_59, 6, x_47);
+lean_ctor_set(x_59, 7, x_48);
+lean_ctor_set_uint8(x_59, sizeof(void*)*8, x_46);
+if (lean_is_scalar(x_58)) {
+ x_60 = lean_alloc_ctor(1, 1, 0);
 } else {
- x_58 = x_56;
+ x_60 = x_58;
 }
-lean_ctor_set(x_58, 0, x_57);
-if (lean_is_scalar(x_54)) {
- x_59 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_60, 0, x_59);
+if (lean_is_scalar(x_56)) {
+ x_61 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_59 = x_54;
+ x_61 = x_56;
 }
-lean_ctor_set(x_59, 0, x_58);
-lean_ctor_set(x_59, 1, x_53);
-return x_59;
+lean_ctor_set(x_61, 0, x_60);
+lean_ctor_set(x_61, 1, x_55);
+return x_61;
 }
 }
 else
 {
-lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; 
-lean_dec(x_46);
+lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; 
+lean_dec(x_48);
+lean_dec(x_47);
 lean_dec(x_45);
+lean_dec(x_44);
 lean_dec(x_43);
 lean_dec(x_42);
 lean_dec(x_41);
-lean_dec(x_40);
-x_60 = lean_ctor_get(x_47, 0);
-lean_inc(x_60);
-x_61 = lean_ctor_get(x_47, 1);
-lean_inc(x_61);
-if (lean_is_exclusive(x_47)) {
- lean_ctor_release(x_47, 0);
- lean_ctor_release(x_47, 1);
- x_62 = x_47;
+x_62 = lean_ctor_get(x_49, 0);
+lean_inc(x_62);
+x_63 = lean_ctor_get(x_49, 1);
+lean_inc(x_63);
+if (lean_is_exclusive(x_49)) {
+ lean_ctor_release(x_49, 0);
+ lean_ctor_release(x_49, 1);
+ x_64 = x_49;
 } else {
- lean_dec_ref(x_47);
- x_62 = lean_box(0);
+ lean_dec_ref(x_49);
+ x_64 = lean_box(0);
 }
-if (lean_is_scalar(x_62)) {
- x_63 = lean_alloc_ctor(1, 2, 0);
+if (lean_is_scalar(x_64)) {
+ x_65 = lean_alloc_ctor(1, 2, 0);
 } else {
- x_63 = x_62;
+ x_65 = x_64;
 }
-lean_ctor_set(x_63, 0, x_60);
-lean_ctor_set(x_63, 1, x_61);
-return x_63;
+lean_ctor_set(x_65, 0, x_62);
+lean_ctor_set(x_65, 1, x_63);
+return x_65;
 }
 }
 }
@@ -3223,7 +3288,7 @@ return x_13;
 }
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_Preprocessor_loop___closed__1() {
+static lean_object* _init_l_Lean_Meta_Grind_Preprocessor_loop___lambda__4___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -3231,448 +3296,1794 @@ x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_loop___lambda__3
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_loop(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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_loop___lambda__4(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, 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_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17, lean_object* x_18, lean_object* x_19, lean_object* x_20) {
 _start:
 {
-lean_object* x_11; 
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_5);
-lean_inc(x_4);
-lean_inc(x_3);
-lean_inc(x_2);
+lean_object* x_21; 
+lean_inc(x_19);
+lean_inc(x_18);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
 lean_inc(x_1);
-x_11 = l_Lean_Meta_Grind_Preprocessor_introNext(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_11) == 0)
+x_21 = l_Lean_Meta_Grind_Preprocessor_introNext(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
+if (lean_obj_tag(x_21) == 0)
 {
-lean_object* x_12; 
-x_12 = lean_ctor_get(x_11, 0);
-lean_inc(x_12);
-switch (lean_obj_tag(x_12)) {
+lean_object* x_22; 
+x_22 = lean_ctor_get(x_21, 0);
+lean_inc(x_22);
+switch (lean_obj_tag(x_22)) {
 case 0:
 {
-lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; 
-x_13 = lean_ctor_get(x_11, 1);
-lean_inc(x_13);
-lean_dec(x_11);
-x_14 = lean_ctor_get(x_1, 0);
-lean_inc(x_14);
-x_15 = lean_ctor_get(x_1, 1);
-lean_inc(x_15);
-x_16 = lean_ctor_get(x_1, 2);
-lean_inc(x_16);
-x_17 = lean_ctor_get(x_1, 3);
-lean_inc(x_17);
-x_18 = lean_ctor_get(x_1, 4);
+lean_object* x_23; lean_object* x_24; 
+x_23 = lean_ctor_get(x_21, 1);
+lean_inc(x_23);
+lean_dec(x_21);
+lean_inc(x_19);
 lean_inc(x_18);
-x_19 = lean_ctor_get_uint8(x_1, sizeof(void*)*7);
-x_20 = lean_ctor_get(x_1, 5);
-lean_inc(x_20);
-x_21 = lean_ctor_get(x_1, 6);
-lean_inc(x_21);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-x_22 = l_Lean_MVarId_byContra_x3f(x_14, x_6, x_7, x_8, x_9, x_13);
-if (lean_obj_tag(x_22) == 0)
+lean_inc(x_17);
+lean_inc(x_16);
+x_24 = l_Lean_MVarId_byContra_x3f(x_2, x_16, x_17, x_18, x_19, x_23);
+if (lean_obj_tag(x_24) == 0)
 {
-lean_object* x_23; 
-x_23 = lean_ctor_get(x_22, 0);
-lean_inc(x_23);
-if (lean_obj_tag(x_23) == 0)
+lean_object* x_25; 
+x_25 = lean_ctor_get(x_24, 0);
+lean_inc(x_25);
+if (lean_obj_tag(x_25) == 0)
 {
-lean_object* x_24; lean_object* x_25; 
-lean_dec(x_21);
-lean_dec(x_20);
-lean_dec(x_18);
-lean_dec(x_17);
-lean_dec(x_16);
-lean_dec(x_15);
-x_24 = lean_ctor_get(x_22, 1);
-lean_inc(x_24);
-lean_dec(x_22);
-x_25 = l_Lean_Meta_Grind_Preprocessor_pushResult(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_24);
+lean_object* x_26; lean_object* x_27; 
+lean_dec(x_10);
 lean_dec(x_9);
-lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
-lean_dec(x_2);
-return x_25;
+x_26 = lean_ctor_get(x_24, 1);
+lean_inc(x_26);
+lean_dec(x_24);
+x_27 = l_Lean_Meta_Grind_Preprocessor_pushResult(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_26);
+lean_dec(x_19);
+lean_dec(x_18);
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+return x_27;
 }
 else
 {
-uint8_t x_26; 
-x_26 = !lean_is_exclusive(x_1);
-if (x_26 == 0)
-{
-lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_27 = lean_ctor_get(x_1, 6);
-lean_dec(x_27);
-x_28 = lean_ctor_get(x_1, 5);
-lean_dec(x_28);
-x_29 = lean_ctor_get(x_1, 4);
-lean_dec(x_29);
-x_30 = lean_ctor_get(x_1, 3);
-lean_dec(x_30);
-x_31 = lean_ctor_get(x_1, 2);
-lean_dec(x_31);
-x_32 = lean_ctor_get(x_1, 1);
-lean_dec(x_32);
-x_33 = lean_ctor_get(x_1, 0);
-lean_dec(x_33);
-x_34 = lean_ctor_get(x_22, 1);
-lean_inc(x_34);
-lean_dec(x_22);
-x_35 = lean_ctor_get(x_23, 0);
-lean_inc(x_35);
-lean_dec(x_23);
-lean_ctor_set(x_1, 0, x_35);
-x_10 = x_34;
-goto _start;
-}
-else
-{
-lean_object* x_37; lean_object* x_38; lean_object* x_39; 
+lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; 
 lean_dec(x_1);
-x_37 = lean_ctor_get(x_22, 1);
-lean_inc(x_37);
-lean_dec(x_22);
-x_38 = lean_ctor_get(x_23, 0);
-lean_inc(x_38);
-lean_dec(x_23);
-x_39 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_39, 0, x_38);
-lean_ctor_set(x_39, 1, x_15);
-lean_ctor_set(x_39, 2, x_16);
-lean_ctor_set(x_39, 3, x_17);
-lean_ctor_set(x_39, 4, x_18);
-lean_ctor_set(x_39, 5, x_20);
-lean_ctor_set(x_39, 6, x_21);
-lean_ctor_set_uint8(x_39, sizeof(void*)*7, x_19);
-x_1 = x_39;
-x_10 = x_37;
-goto _start;
-}
+x_28 = lean_ctor_get(x_24, 1);
+lean_inc(x_28);
+lean_dec(x_24);
+x_29 = lean_ctor_get(x_25, 0);
+lean_inc(x_29);
+lean_dec(x_25);
+x_30 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_30, 0, x_29);
+lean_ctor_set(x_30, 1, x_3);
+lean_ctor_set(x_30, 2, x_4);
+lean_ctor_set(x_30, 3, x_5);
+lean_ctor_set(x_30, 4, x_6);
+lean_ctor_set(x_30, 5, x_7);
+lean_ctor_set(x_30, 6, x_9);
+lean_ctor_set(x_30, 7, x_10);
+lean_ctor_set_uint8(x_30, sizeof(void*)*8, x_8);
+x_31 = l_Lean_Meta_Grind_Preprocessor_loop(x_30, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_28);
+return x_31;
 }
 }
 else
 {
-uint8_t x_41; 
-lean_dec(x_21);
-lean_dec(x_20);
+uint8_t x_32; 
+lean_dec(x_19);
 lean_dec(x_18);
 lean_dec(x_17);
 lean_dec(x_16);
 lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_10);
 lean_dec(x_9);
-lean_dec(x_8);
 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_41 = !lean_is_exclusive(x_22);
-if (x_41 == 0)
+x_32 = !lean_is_exclusive(x_24);
+if (x_32 == 0)
 {
-return x_22;
+return x_24;
 }
 else
 {
-lean_object* x_42; lean_object* x_43; lean_object* x_44; 
-x_42 = lean_ctor_get(x_22, 0);
-x_43 = lean_ctor_get(x_22, 1);
-lean_inc(x_43);
-lean_inc(x_42);
-lean_dec(x_22);
-x_44 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_44, 0, x_42);
-lean_ctor_set(x_44, 1, x_43);
-return x_44;
+lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_33 = lean_ctor_get(x_24, 0);
+x_34 = lean_ctor_get(x_24, 1);
+lean_inc(x_34);
+lean_inc(x_33);
+lean_dec(x_24);
+x_35 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_35, 0, x_33);
+lean_ctor_set(x_35, 1, x_34);
+return x_35;
 }
 }
 }
 case 1:
 {
-lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; 
+lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; 
+lean_dec(x_10);
+lean_dec(x_9);
+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_45 = lean_ctor_get(x_11, 1);
-lean_inc(x_45);
-lean_dec(x_11);
-x_46 = lean_ctor_get(x_12, 0);
-lean_inc(x_46);
-x_47 = lean_ctor_get(x_12, 1);
-lean_inc(x_47);
-lean_dec(x_12);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_46);
-lean_inc(x_47);
-x_48 = l_Lean_Meta_Grind_Preprocessor_applyCases_x3f(x_47, x_46, x_6, x_7, x_8, x_9, x_45);
-if (lean_obj_tag(x_48) == 0)
+x_36 = lean_ctor_get(x_21, 1);
+lean_inc(x_36);
+lean_dec(x_21);
+x_37 = lean_ctor_get(x_22, 0);
+lean_inc(x_37);
+x_38 = lean_ctor_get(x_22, 1);
+lean_inc(x_38);
+lean_dec(x_22);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_inc(x_37);
+lean_inc(x_38);
+x_39 = l_Lean_Meta_Grind_Preprocessor_applyCases_x3f(x_38, x_37, x_16, x_17, x_18, x_19, x_36);
+if (lean_obj_tag(x_39) == 0)
 {
-lean_object* x_49; 
-x_49 = lean_ctor_get(x_48, 0);
-lean_inc(x_49);
-if (lean_obj_tag(x_49) == 0)
+lean_object* x_40; 
+x_40 = lean_ctor_get(x_39, 0);
+lean_inc(x_40);
+if (lean_obj_tag(x_40) == 0)
 {
-lean_object* x_50; lean_object* x_51; 
-x_50 = lean_ctor_get(x_48, 1);
-lean_inc(x_50);
-lean_dec(x_48);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_46);
-lean_inc(x_47);
-x_51 = l_Lean_Meta_Grind_Preprocessor_applyInjection_x3f(x_47, x_46, x_6, x_7, x_8, x_9, x_50);
+lean_object* x_41; lean_object* x_42; 
+x_41 = lean_ctor_get(x_39, 1);
+lean_inc(x_41);
+lean_dec(x_39);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_inc(x_37);
+lean_inc(x_38);
+x_42 = l_Lean_Meta_Grind_Preprocessor_applyInjection_x3f(x_38, x_37, x_16, x_17, x_18, x_19, x_41);
+if (lean_obj_tag(x_42) == 0)
+{
+lean_object* x_43; 
+x_43 = lean_ctor_get(x_42, 0);
+lean_inc(x_43);
+if (lean_obj_tag(x_43) == 0)
+{
+lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; 
+x_44 = lean_ctor_get(x_42, 1);
+lean_inc(x_44);
+lean_dec(x_42);
+x_45 = lean_ctor_get(x_38, 0);
+lean_inc(x_45);
+x_46 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_loop___lambda__1___boxed), 9, 1);
+lean_closure_set(x_46, 0, x_38);
+x_47 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_loop___lambda__2), 10, 1);
+lean_closure_set(x_47, 0, x_37);
+x_48 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
+lean_closure_set(x_48, 0, x_46);
+lean_closure_set(x_48, 1, x_47);
+x_49 = l_Lean_Meta_Grind_Preprocessor_loop___lambda__4___closed__1;
+x_50 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
+lean_closure_set(x_50, 0, x_48);
+lean_closure_set(x_50, 1, x_49);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+x_51 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(x_45, x_50, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_44);
 if (lean_obj_tag(x_51) == 0)
 {
-lean_object* x_52; 
+lean_object* x_52; lean_object* x_53; lean_object* x_54; 
 x_52 = lean_ctor_get(x_51, 0);
 lean_inc(x_52);
-if (lean_obj_tag(x_52) == 0)
-{
-lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; 
 x_53 = lean_ctor_get(x_51, 1);
 lean_inc(x_53);
 lean_dec(x_51);
-x_54 = lean_ctor_get(x_47, 0);
-lean_inc(x_54);
-x_55 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_loop___lambda__1___boxed), 9, 1);
-lean_closure_set(x_55, 0, x_47);
-x_56 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_loop___lambda__2), 10, 1);
-lean_closure_set(x_56, 0, x_46);
-x_57 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
-lean_closure_set(x_57, 0, x_55);
-lean_closure_set(x_57, 1, x_56);
-x_58 = l_Lean_Meta_Grind_Preprocessor_loop___closed__1;
-x_59 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
-lean_closure_set(x_59, 0, x_57);
-lean_closure_set(x_59, 1, x_58);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_5);
-lean_inc(x_4);
-lean_inc(x_3);
-x_60 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(x_54, x_59, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_53);
-if (lean_obj_tag(x_60) == 0)
-{
-lean_object* x_61; lean_object* x_62; 
-x_61 = lean_ctor_get(x_60, 0);
-lean_inc(x_61);
-x_62 = lean_ctor_get(x_60, 1);
-lean_inc(x_62);
-lean_dec(x_60);
-x_1 = x_61;
-x_10 = x_62;
-goto _start;
+x_54 = l_Lean_Meta_Grind_Preprocessor_loop(x_52, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_53);
+return x_54;
 }
 else
 {
-uint8_t x_64; 
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-x_64 = !lean_is_exclusive(x_60);
-if (x_64 == 0)
+uint8_t x_55; 
+lean_dec(x_19);
+lean_dec(x_18);
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+x_55 = !lean_is_exclusive(x_51);
+if (x_55 == 0)
 {
-return x_60;
+return x_51;
 }
 else
 {
-lean_object* x_65; lean_object* x_66; lean_object* x_67; 
-x_65 = lean_ctor_get(x_60, 0);
-x_66 = lean_ctor_get(x_60, 1);
-lean_inc(x_66);
-lean_inc(x_65);
-lean_dec(x_60);
-x_67 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_67, 0, x_65);
-lean_ctor_set(x_67, 1, x_66);
-return x_67;
+lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+x_56 = lean_ctor_get(x_51, 0);
+x_57 = lean_ctor_get(x_51, 1);
+lean_inc(x_57);
+lean_inc(x_56);
+lean_dec(x_51);
+x_58 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_58, 0, x_56);
+lean_ctor_set(x_58, 1, x_57);
+return x_58;
 }
 }
 }
 else
 {
-lean_object* x_68; lean_object* x_69; 
-lean_dec(x_47);
-lean_dec(x_46);
-x_68 = lean_ctor_get(x_51, 1);
-lean_inc(x_68);
-lean_dec(x_51);
-x_69 = lean_ctor_get(x_52, 0);
-lean_inc(x_69);
-lean_dec(x_52);
-x_1 = x_69;
-x_10 = x_68;
-goto _start;
+lean_object* x_59; lean_object* x_60; lean_object* x_61; 
+lean_dec(x_38);
+lean_dec(x_37);
+x_59 = lean_ctor_get(x_42, 1);
+lean_inc(x_59);
+lean_dec(x_42);
+x_60 = lean_ctor_get(x_43, 0);
+lean_inc(x_60);
+lean_dec(x_43);
+x_61 = l_Lean_Meta_Grind_Preprocessor_loop(x_60, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_59);
+return x_61;
 }
 }
 else
 {
-uint8_t x_71; 
-lean_dec(x_47);
-lean_dec(x_46);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-x_71 = !lean_is_exclusive(x_51);
-if (x_71 == 0)
+uint8_t x_62; 
+lean_dec(x_38);
+lean_dec(x_37);
+lean_dec(x_19);
+lean_dec(x_18);
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+x_62 = !lean_is_exclusive(x_42);
+if (x_62 == 0)
 {
-return x_51;
+return x_42;
 }
 else
 {
-lean_object* x_72; lean_object* x_73; lean_object* x_74; 
-x_72 = lean_ctor_get(x_51, 0);
-x_73 = lean_ctor_get(x_51, 1);
-lean_inc(x_73);
-lean_inc(x_72);
-lean_dec(x_51);
-x_74 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_74, 0, x_72);
-lean_ctor_set(x_74, 1, x_73);
-return x_74;
+lean_object* x_63; lean_object* x_64; lean_object* x_65; 
+x_63 = lean_ctor_get(x_42, 0);
+x_64 = lean_ctor_get(x_42, 1);
+lean_inc(x_64);
+lean_inc(x_63);
+lean_dec(x_42);
+x_65 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_65, 0, x_63);
+lean_ctor_set(x_65, 1, x_64);
+return x_65;
 }
 }
 }
 else
 {
-lean_object* x_75; lean_object* x_76; lean_object* x_77; 
-lean_dec(x_47);
-lean_dec(x_46);
-x_75 = lean_ctor_get(x_48, 1);
-lean_inc(x_75);
-lean_dec(x_48);
-x_76 = lean_ctor_get(x_49, 0);
-lean_inc(x_76);
-lean_dec(x_49);
-x_77 = l_List_forM___at_Lean_Meta_Grind_Preprocessor_loop___spec__1(x_76, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_75);
-return x_77;
+lean_object* x_66; lean_object* x_67; lean_object* x_68; 
+lean_dec(x_38);
+lean_dec(x_37);
+x_66 = lean_ctor_get(x_39, 1);
+lean_inc(x_66);
+lean_dec(x_39);
+x_67 = lean_ctor_get(x_40, 0);
+lean_inc(x_67);
+lean_dec(x_40);
+x_68 = l_List_forM___at_Lean_Meta_Grind_Preprocessor_loop___spec__1(x_67, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_66);
+return x_68;
 }
 }
 else
 {
-uint8_t x_78; 
-lean_dec(x_47);
-lean_dec(x_46);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
+uint8_t x_69; 
+lean_dec(x_38);
+lean_dec(x_37);
+lean_dec(x_19);
+lean_dec(x_18);
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+x_69 = !lean_is_exclusive(x_39);
+if (x_69 == 0)
+{
+return x_39;
+}
+else
+{
+lean_object* x_70; lean_object* x_71; lean_object* x_72; 
+x_70 = lean_ctor_get(x_39, 0);
+x_71 = lean_ctor_get(x_39, 1);
+lean_inc(x_71);
+lean_inc(x_70);
+lean_dec(x_39);
+x_72 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_72, 0, x_70);
+lean_ctor_set(x_72, 1, x_71);
+return x_72;
+}
+}
+}
+case 2:
+{
+lean_object* x_73; lean_object* x_74; lean_object* x_75; 
+lean_dec(x_10);
+lean_dec(x_9);
+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_73 = lean_ctor_get(x_21, 1);
+lean_inc(x_73);
+lean_dec(x_21);
+x_74 = lean_ctor_get(x_22, 0);
+lean_inc(x_74);
+lean_dec(x_22);
+x_75 = l_Lean_Meta_Grind_Preprocessor_loop(x_74, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_73);
+return x_75;
+}
+default: 
+{
+lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; 
+lean_dec(x_10);
+lean_dec(x_9);
+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_76 = lean_ctor_get(x_21, 1);
+lean_inc(x_76);
+lean_dec(x_21);
+x_77 = lean_ctor_get(x_22, 0);
+lean_inc(x_77);
+x_78 = lean_ctor_get(x_22, 1);
+lean_inc(x_78);
+lean_dec(x_22);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_inc(x_78);
+x_79 = l_Lean_Meta_Grind_Preprocessor_applyCases_x3f(x_78, x_77, x_16, x_17, x_18, x_19, x_76);
+if (lean_obj_tag(x_79) == 0)
+{
+lean_object* x_80; 
+x_80 = lean_ctor_get(x_79, 0);
+lean_inc(x_80);
+if (lean_obj_tag(x_80) == 0)
+{
+lean_object* x_81; lean_object* x_82; 
+x_81 = lean_ctor_get(x_79, 1);
+lean_inc(x_81);
+lean_dec(x_79);
+x_82 = l_Lean_Meta_Grind_Preprocessor_loop(x_78, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_81);
+return x_82;
+}
+else
+{
+lean_object* x_83; lean_object* x_84; lean_object* x_85; 
+lean_dec(x_78);
+x_83 = lean_ctor_get(x_79, 1);
+lean_inc(x_83);
+lean_dec(x_79);
+x_84 = lean_ctor_get(x_80, 0);
+lean_inc(x_84);
+lean_dec(x_80);
+x_85 = l_List_forM___at_Lean_Meta_Grind_Preprocessor_loop___spec__1(x_84, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_83);
+return x_85;
+}
+}
+else
+{
+uint8_t x_86; 
+lean_dec(x_78);
+lean_dec(x_19);
+lean_dec(x_18);
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+x_86 = !lean_is_exclusive(x_79);
+if (x_86 == 0)
+{
+return x_79;
+}
+else
+{
+lean_object* x_87; lean_object* x_88; lean_object* x_89; 
+x_87 = lean_ctor_get(x_79, 0);
+x_88 = lean_ctor_get(x_79, 1);
+lean_inc(x_88);
+lean_inc(x_87);
+lean_dec(x_79);
+x_89 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_89, 0, x_87);
+lean_ctor_set(x_89, 1, x_88);
+return x_89;
+}
+}
+}
+}
+}
+else
+{
+uint8_t x_90; 
+lean_dec(x_19);
+lean_dec(x_18);
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_10);
+lean_dec(x_9);
+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_90 = !lean_is_exclusive(x_21);
+if (x_90 == 0)
+{
+return x_21;
+}
+else
+{
+lean_object* x_91; lean_object* x_92; lean_object* x_93; 
+x_91 = lean_ctor_get(x_21, 0);
+x_92 = lean_ctor_get(x_21, 1);
+lean_inc(x_92);
+lean_inc(x_91);
+lean_dec(x_21);
+x_93 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_93, 0, x_91);
+lean_ctor_set(x_93, 1, x_92);
+return x_93;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_loop(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:
+{
+uint8_t x_11; 
+x_11 = lean_ctor_get_uint8(x_1, sizeof(void*)*8);
+if (x_11 == 0)
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_12 = lean_ctor_get(x_1, 0);
+lean_inc(x_12);
+x_13 = lean_ctor_get(x_1, 1);
+lean_inc(x_13);
+x_14 = lean_ctor_get(x_1, 2);
+lean_inc(x_14);
+x_15 = lean_ctor_get(x_1, 3);
+lean_inc(x_15);
+x_16 = lean_ctor_get(x_1, 4);
+lean_inc(x_16);
+x_17 = lean_ctor_get(x_1, 5);
+lean_inc(x_17);
+x_18 = lean_ctor_get(x_1, 6);
+lean_inc(x_18);
+x_19 = lean_ctor_get(x_1, 7);
+lean_inc(x_19);
+x_20 = lean_box(0);
+x_21 = l_Lean_Meta_Grind_Preprocessor_loop___lambda__4(x_1, x_12, x_13, x_14, x_15, x_16, x_17, x_11, x_18, x_19, x_20, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_21;
+}
+else
+{
+lean_object* x_22; lean_object* x_23; 
+lean_dec(x_9);
+lean_dec(x_8);
+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_22 = lean_box(0);
+x_23 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_23, 0, x_22);
+lean_ctor_set(x_23, 1, x_10);
+return x_23;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_loop___lambda__1___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_Meta_Grind_Preprocessor_loop___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_10;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_loop___lambda__3___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_Meta_Grind_Preprocessor_loop___lambda__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_10;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_loop___lambda__4___boxed(lean_object** _args) {
+lean_object* x_1 = _args[0];
+lean_object* x_2 = _args[1];
+lean_object* x_3 = _args[2];
+lean_object* x_4 = _args[3];
+lean_object* x_5 = _args[4];
+lean_object* x_6 = _args[5];
+lean_object* x_7 = _args[6];
+lean_object* x_8 = _args[7];
+lean_object* x_9 = _args[8];
+lean_object* x_10 = _args[9];
+lean_object* x_11 = _args[10];
+lean_object* x_12 = _args[11];
+lean_object* x_13 = _args[12];
+lean_object* x_14 = _args[13];
+lean_object* x_15 = _args[14];
+lean_object* x_16 = _args[15];
+lean_object* x_17 = _args[16];
+lean_object* x_18 = _args[17];
+lean_object* x_19 = _args[18];
+lean_object* x_20 = _args[19];
+_start:
+{
+uint8_t x_21; lean_object* x_22; 
+x_21 = lean_unbox(x_8);
+lean_dec(x_8);
+x_22 = l_Lean_Meta_Grind_Preprocessor_loop___lambda__4(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_21, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17, x_18, x_19, x_20);
+lean_dec(x_11);
+return x_22;
+}
+}
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__3(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, size_t x_6, size_t x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17) {
+_start:
+{
+uint8_t x_18; 
+x_18 = lean_usize_dec_lt(x_7, x_6);
+if (x_18 == 0)
+{
+lean_object* x_19; 
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_4);
+x_19 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_19, 0, x_8);
+lean_ctor_set(x_19, 1, x_17);
+return x_19;
+}
+else
+{
+lean_object* x_20; uint8_t x_21; 
+x_20 = lean_array_uget(x_5, x_7);
+x_21 = !lean_is_exclusive(x_8);
+if (x_21 == 0)
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_22 = lean_ctor_get(x_8, 1);
+x_23 = lean_ctor_get(x_8, 0);
+lean_dec(x_23);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_22);
+x_24 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2(x_1, x_20, x_22, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
+lean_dec(x_20);
+if (lean_obj_tag(x_24) == 0)
+{
+lean_object* x_25; 
+x_25 = lean_ctor_get(x_24, 0);
+lean_inc(x_25);
+if (lean_obj_tag(x_25) == 0)
+{
+uint8_t x_26; 
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_4);
+x_26 = !lean_is_exclusive(x_24);
+if (x_26 == 0)
+{
+lean_object* x_27; lean_object* x_28; 
+x_27 = lean_ctor_get(x_24, 0);
+lean_dec(x_27);
+x_28 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_28, 0, x_25);
+lean_ctor_set(x_8, 0, x_28);
+lean_ctor_set(x_24, 0, x_8);
+return x_24;
+}
+else
+{
+lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+x_29 = lean_ctor_get(x_24, 1);
+lean_inc(x_29);
+lean_dec(x_24);
+x_30 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_30, 0, x_25);
+lean_ctor_set(x_8, 0, x_30);
+x_31 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_31, 0, x_8);
+lean_ctor_set(x_31, 1, x_29);
+return x_31;
+}
+}
+else
+{
+lean_object* x_32; lean_object* x_33; size_t x_34; size_t x_35; 
+lean_dec(x_22);
+x_32 = lean_ctor_get(x_24, 1);
+lean_inc(x_32);
+lean_dec(x_24);
+x_33 = lean_ctor_get(x_25, 0);
+lean_inc(x_33);
+lean_dec(x_25);
+lean_inc(x_4);
+lean_ctor_set(x_8, 1, x_33);
+lean_ctor_set(x_8, 0, x_4);
+x_34 = 1;
+x_35 = lean_usize_add(x_7, x_34);
+x_7 = x_35;
+x_17 = x_32;
+goto _start;
+}
+}
+else
+{
+uint8_t x_37; 
+lean_free_object(x_8);
+lean_dec(x_22);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_4);
+x_37 = !lean_is_exclusive(x_24);
+if (x_37 == 0)
+{
+return x_24;
+}
+else
+{
+lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+x_38 = lean_ctor_get(x_24, 0);
+x_39 = lean_ctor_get(x_24, 1);
+lean_inc(x_39);
+lean_inc(x_38);
+lean_dec(x_24);
+x_40 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_40, 0, x_38);
+lean_ctor_set(x_40, 1, x_39);
+return x_40;
+}
+}
+}
+else
+{
+lean_object* x_41; lean_object* x_42; 
+x_41 = lean_ctor_get(x_8, 1);
+lean_inc(x_41);
+lean_dec(x_8);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_41);
+x_42 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2(x_1, x_20, x_41, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
+lean_dec(x_20);
+if (lean_obj_tag(x_42) == 0)
+{
+lean_object* x_43; 
+x_43 = lean_ctor_get(x_42, 0);
+lean_inc(x_43);
+if (lean_obj_tag(x_43) == 0)
+{
+lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; 
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_4);
+x_44 = lean_ctor_get(x_42, 1);
+lean_inc(x_44);
+if (lean_is_exclusive(x_42)) {
+ lean_ctor_release(x_42, 0);
+ lean_ctor_release(x_42, 1);
+ x_45 = x_42;
+} else {
+ lean_dec_ref(x_42);
+ x_45 = lean_box(0);
+}
+x_46 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_46, 0, x_43);
+x_47 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_47, 0, x_46);
+lean_ctor_set(x_47, 1, x_41);
+if (lean_is_scalar(x_45)) {
+ x_48 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_48 = x_45;
+}
+lean_ctor_set(x_48, 0, x_47);
+lean_ctor_set(x_48, 1, x_44);
+return x_48;
+}
+else
+{
+lean_object* x_49; lean_object* x_50; lean_object* x_51; size_t x_52; size_t x_53; 
+lean_dec(x_41);
+x_49 = lean_ctor_get(x_42, 1);
+lean_inc(x_49);
+lean_dec(x_42);
+x_50 = lean_ctor_get(x_43, 0);
+lean_inc(x_50);
+lean_dec(x_43);
+lean_inc(x_4);
+x_51 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_51, 0, x_4);
+lean_ctor_set(x_51, 1, x_50);
+x_52 = 1;
+x_53 = lean_usize_add(x_7, x_52);
+x_7 = x_53;
+x_8 = x_51;
+x_17 = x_49;
+goto _start;
+}
+}
+else
+{
+lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+lean_dec(x_41);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_4);
+x_55 = lean_ctor_get(x_42, 0);
+lean_inc(x_55);
+x_56 = lean_ctor_get(x_42, 1);
+lean_inc(x_56);
+if (lean_is_exclusive(x_42)) {
+ lean_ctor_release(x_42, 0);
+ lean_ctor_release(x_42, 1);
+ x_57 = x_42;
+} else {
+ lean_dec_ref(x_42);
+ x_57 = lean_box(0);
+}
+if (lean_is_scalar(x_57)) {
+ x_58 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_58 = x_57;
+}
+lean_ctor_set(x_58, 0, x_55);
+lean_ctor_set(x_58, 1, x_56);
+return x_58;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___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) {
+_start:
+{
+lean_object* x_10; 
+lean_inc(x_1);
+x_10 = l_Lean_Meta_Grind_ppState(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+if (lean_obj_tag(x_10) == 0)
+{
+lean_object* x_11; lean_object* x_12; lean_object* x_13; uint8_t x_14; 
+x_11 = lean_ctor_get(x_10, 0);
+lean_inc(x_11);
+x_12 = lean_ctor_get(x_10, 1);
+lean_inc(x_12);
+lean_dec(x_10);
+x_13 = lean_st_ref_get(x_1, x_12);
+lean_dec(x_1);
+x_14 = !lean_is_exclusive(x_13);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; 
+x_15 = lean_ctor_get(x_13, 0);
+x_16 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_16, 0, x_11);
+lean_ctor_set(x_16, 1, x_15);
+lean_ctor_set(x_13, 0, x_16);
+return x_13;
+}
+else
+{
+lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_17 = lean_ctor_get(x_13, 0);
+x_18 = lean_ctor_get(x_13, 1);
+lean_inc(x_18);
+lean_inc(x_17);
+lean_dec(x_13);
+x_19 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_19, 0, x_11);
+lean_ctor_set(x_19, 1, x_17);
+x_20 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_20, 0, x_19);
+lean_ctor_set(x_20, 1, x_18);
+return x_20;
+}
+}
+else
+{
+uint8_t x_21; 
+lean_dec(x_1);
+x_21 = !lean_is_exclusive(x_10);
+if (x_21 == 0)
+{
+return x_10;
+}
+else
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_22 = lean_ctor_get(x_10, 0);
+x_23 = lean_ctor_get(x_10, 1);
+lean_inc(x_23);
+lean_inc(x_22);
+lean_dec(x_10);
+x_24 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_24, 0, x_22);
+lean_ctor_set(x_24, 1, x_23);
+return x_24;
+}
+}
+}
+}
+static lean_object* _init_l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___lambda__1), 9, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, size_t x_5, size_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+_start:
+{
+uint8_t x_17; 
+x_17 = lean_usize_dec_lt(x_6, x_5);
+if (x_17 == 0)
+{
+lean_object* x_18; 
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_3);
+x_18 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_18, 0, x_7);
+lean_ctor_set(x_18, 1, x_16);
+return x_18;
+}
+else
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+x_19 = lean_array_uget(x_4, x_6);
+x_20 = lean_ctor_get(x_7, 1);
+lean_inc(x_20);
+lean_dec(x_7);
+x_21 = lean_ctor_get(x_19, 0);
+lean_inc(x_21);
+x_22 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_loop___lambda__1___boxed), 9, 1);
+lean_closure_set(x_22, 0, x_19);
+x_23 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___closed__1;
+x_24 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
+lean_closure_set(x_24, 0, x_22);
+lean_closure_set(x_24, 1, x_23);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+x_25 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(x_21, x_24, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+if (lean_obj_tag(x_25) == 0)
+{
+lean_object* x_26; lean_object* x_27; uint8_t x_28; 
+x_26 = lean_ctor_get(x_25, 0);
+lean_inc(x_26);
+x_27 = lean_ctor_get(x_25, 1);
+lean_inc(x_27);
+lean_dec(x_25);
+x_28 = !lean_is_exclusive(x_26);
+if (x_28 == 0)
+{
+lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; size_t x_34; size_t x_35; 
+x_29 = lean_ctor_get(x_26, 0);
+x_30 = lean_ctor_get(x_26, 1);
+lean_dec(x_30);
+x_31 = lean_box(1);
+lean_ctor_set_tag(x_26, 5);
+lean_ctor_set(x_26, 1, x_31);
+lean_ctor_set(x_26, 0, x_20);
+x_32 = lean_alloc_ctor(5, 2, 0);
+lean_ctor_set(x_32, 0, x_26);
+lean_ctor_set(x_32, 1, x_29);
+lean_inc(x_3);
+x_33 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_33, 0, x_3);
+lean_ctor_set(x_33, 1, x_32);
+x_34 = 1;
+x_35 = lean_usize_add(x_6, x_34);
+x_6 = x_35;
+x_7 = x_33;
+x_16 = x_27;
+goto _start;
+}
+else
+{
+lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; size_t x_42; size_t x_43; 
+x_37 = lean_ctor_get(x_26, 0);
+lean_inc(x_37);
+lean_dec(x_26);
+x_38 = lean_box(1);
+x_39 = lean_alloc_ctor(5, 2, 0);
+lean_ctor_set(x_39, 0, x_20);
+lean_ctor_set(x_39, 1, x_38);
+x_40 = lean_alloc_ctor(5, 2, 0);
+lean_ctor_set(x_40, 0, x_39);
+lean_ctor_set(x_40, 1, x_37);
+lean_inc(x_3);
+x_41 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_41, 0, x_3);
+lean_ctor_set(x_41, 1, x_40);
+x_42 = 1;
+x_43 = lean_usize_add(x_6, x_42);
+x_6 = x_43;
+x_7 = x_41;
+x_16 = x_27;
+goto _start;
+}
+}
+else
+{
+uint8_t x_45; 
+lean_dec(x_20);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_3);
+x_45 = !lean_is_exclusive(x_25);
+if (x_45 == 0)
+{
+return x_25;
+}
+else
+{
+lean_object* x_46; lean_object* x_47; lean_object* x_48; 
+x_46 = lean_ctor_get(x_25, 0);
+x_47 = lean_ctor_get(x_25, 1);
+lean_inc(x_47);
+lean_inc(x_46);
+lean_dec(x_25);
+x_48 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_48, 0, x_46);
+lean_ctor_set(x_48, 1, x_47);
+return x_48;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2___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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; lean_object* x_13; 
+x_12 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_12, 0, x_1);
+x_13 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_13, 0, x_12);
+lean_ctor_set(x_13, 1, x_11);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2(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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+if (lean_obj_tag(x_2) == 0)
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; size_t x_17; size_t x_18; lean_object* x_19; 
+x_13 = lean_ctor_get(x_2, 0);
+x_14 = lean_box(0);
+x_15 = lean_box(0);
+x_16 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_16, 0, x_15);
+lean_ctor_set(x_16, 1, x_3);
+x_17 = lean_array_size(x_13);
+x_18 = 0;
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+x_19 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__3(x_1, x_13, x_14, x_15, x_13, x_17, x_18, x_16, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_19) == 0)
+{
+lean_object* x_20; lean_object* x_21; 
+x_20 = lean_ctor_get(x_19, 0);
+lean_inc(x_20);
+x_21 = lean_ctor_get(x_20, 0);
+lean_inc(x_21);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+x_22 = lean_ctor_get(x_19, 1);
+lean_inc(x_22);
+lean_dec(x_19);
+x_23 = lean_ctor_get(x_20, 1);
+lean_inc(x_23);
+lean_dec(x_20);
+x_24 = lean_box(0);
+x_25 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2___lambda__1(x_23, x_24, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_22);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+return x_25;
+}
+else
+{
+uint8_t x_26; 
+lean_dec(x_20);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+x_26 = !lean_is_exclusive(x_19);
+if (x_26 == 0)
+{
+lean_object* x_27; lean_object* x_28; 
+x_27 = lean_ctor_get(x_19, 0);
+lean_dec(x_27);
+x_28 = lean_ctor_get(x_21, 0);
+lean_inc(x_28);
+lean_dec(x_21);
+lean_ctor_set(x_19, 0, x_28);
+return x_19;
+}
+else
+{
+lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+x_29 = lean_ctor_get(x_19, 1);
+lean_inc(x_29);
+lean_dec(x_19);
+x_30 = lean_ctor_get(x_21, 0);
+lean_inc(x_30);
+lean_dec(x_21);
+x_31 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_31, 0, x_30);
+lean_ctor_set(x_31, 1, x_29);
+return x_31;
+}
+}
+}
+else
+{
+uint8_t x_32; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+x_32 = !lean_is_exclusive(x_19);
+if (x_32 == 0)
+{
+return x_19;
+}
+else
+{
+lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_33 = lean_ctor_get(x_19, 0);
+x_34 = lean_ctor_get(x_19, 1);
+lean_inc(x_34);
+lean_inc(x_33);
+lean_dec(x_19);
+x_35 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_35, 0, x_33);
+lean_ctor_set(x_35, 1, x_34);
+return x_35;
+}
+}
+}
+else
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; size_t x_40; size_t x_41; lean_object* x_42; 
+x_36 = lean_ctor_get(x_2, 0);
+x_37 = lean_box(0);
+x_38 = lean_box(0);
+x_39 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_39, 0, x_38);
+lean_ctor_set(x_39, 1, x_3);
+x_40 = lean_array_size(x_36);
+x_41 = 0;
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+x_42 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4(x_36, x_37, x_38, x_36, x_40, x_41, x_39, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_42) == 0)
+{
+lean_object* x_43; lean_object* x_44; 
+x_43 = lean_ctor_get(x_42, 0);
+lean_inc(x_43);
+x_44 = lean_ctor_get(x_43, 0);
+lean_inc(x_44);
+if (lean_obj_tag(x_44) == 0)
+{
+lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; 
+x_45 = lean_ctor_get(x_42, 1);
+lean_inc(x_45);
+lean_dec(x_42);
+x_46 = lean_ctor_get(x_43, 1);
+lean_inc(x_46);
+lean_dec(x_43);
+x_47 = lean_box(0);
+x_48 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2___lambda__1(x_46, x_47, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_45);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+return x_48;
+}
+else
+{
+uint8_t x_49; 
+lean_dec(x_43);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+x_49 = !lean_is_exclusive(x_42);
+if (x_49 == 0)
+{
+lean_object* x_50; lean_object* x_51; 
+x_50 = lean_ctor_get(x_42, 0);
+lean_dec(x_50);
+x_51 = lean_ctor_get(x_44, 0);
+lean_inc(x_51);
+lean_dec(x_44);
+lean_ctor_set(x_42, 0, x_51);
+return x_42;
+}
+else
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_52 = lean_ctor_get(x_42, 1);
+lean_inc(x_52);
+lean_dec(x_42);
+x_53 = lean_ctor_get(x_44, 0);
+lean_inc(x_53);
+lean_dec(x_44);
+x_54 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_54, 0, x_53);
+lean_ctor_set(x_54, 1, x_52);
+return x_54;
+}
+}
+}
+else
+{
+uint8_t x_55; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+x_55 = !lean_is_exclusive(x_42);
+if (x_55 == 0)
+{
+return x_42;
+}
+else
+{
+lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+x_56 = lean_ctor_get(x_42, 0);
+x_57 = lean_ctor_get(x_42, 1);
+lean_inc(x_57);
+lean_inc(x_56);
+lean_dec(x_42);
+x_58 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_58, 0, x_56);
+lean_ctor_set(x_58, 1, x_57);
+return x_58;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__5(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, size_t x_5, size_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+_start:
+{
+uint8_t x_17; 
+x_17 = lean_usize_dec_lt(x_6, x_5);
+if (x_17 == 0)
+{
+lean_object* x_18; 
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_3);
+x_18 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_18, 0, x_7);
+lean_ctor_set(x_18, 1, x_16);
+return x_18;
+}
+else
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+x_19 = lean_array_uget(x_4, x_6);
+x_20 = lean_ctor_get(x_7, 1);
+lean_inc(x_20);
+lean_dec(x_7);
+x_21 = lean_ctor_get(x_19, 0);
+lean_inc(x_21);
+x_22 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_loop___lambda__1___boxed), 9, 1);
+lean_closure_set(x_22, 0, x_19);
+x_23 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___closed__1;
+x_24 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
+lean_closure_set(x_24, 0, x_22);
+lean_closure_set(x_24, 1, x_23);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+x_25 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(x_21, x_24, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+if (lean_obj_tag(x_25) == 0)
+{
+lean_object* x_26; lean_object* x_27; uint8_t x_28; 
+x_26 = lean_ctor_get(x_25, 0);
+lean_inc(x_26);
+x_27 = lean_ctor_get(x_25, 1);
+lean_inc(x_27);
+lean_dec(x_25);
+x_28 = !lean_is_exclusive(x_26);
+if (x_28 == 0)
+{
+lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; size_t x_34; size_t x_35; 
+x_29 = lean_ctor_get(x_26, 0);
+x_30 = lean_ctor_get(x_26, 1);
+lean_dec(x_30);
+x_31 = lean_box(1);
+lean_ctor_set_tag(x_26, 5);
+lean_ctor_set(x_26, 1, x_31);
+lean_ctor_set(x_26, 0, x_20);
+x_32 = lean_alloc_ctor(5, 2, 0);
+lean_ctor_set(x_32, 0, x_26);
+lean_ctor_set(x_32, 1, x_29);
+lean_inc(x_3);
+x_33 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_33, 0, x_3);
+lean_ctor_set(x_33, 1, x_32);
+x_34 = 1;
+x_35 = lean_usize_add(x_6, x_34);
+x_6 = x_35;
+x_7 = x_33;
+x_16 = x_27;
+goto _start;
+}
+else
+{
+lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; size_t x_42; size_t x_43; 
+x_37 = lean_ctor_get(x_26, 0);
+lean_inc(x_37);
+lean_dec(x_26);
+x_38 = lean_box(1);
+x_39 = lean_alloc_ctor(5, 2, 0);
+lean_ctor_set(x_39, 0, x_20);
+lean_ctor_set(x_39, 1, x_38);
+x_40 = lean_alloc_ctor(5, 2, 0);
+lean_ctor_set(x_40, 0, x_39);
+lean_ctor_set(x_40, 1, x_37);
+lean_inc(x_3);
+x_41 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_41, 0, x_3);
+lean_ctor_set(x_41, 1, x_40);
+x_42 = 1;
+x_43 = lean_usize_add(x_6, x_42);
+x_6 = x_43;
+x_7 = x_41;
+x_16 = x_27;
+goto _start;
+}
+}
+else
+{
+uint8_t x_45; 
+lean_dec(x_20);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_3);
+x_45 = !lean_is_exclusive(x_25);
+if (x_45 == 0)
+{
+return x_25;
+}
+else
+{
+lean_object* x_46; lean_object* x_47; lean_object* x_48; 
+x_46 = lean_ctor_get(x_25, 0);
+x_47 = lean_ctor_get(x_25, 1);
+lean_inc(x_47);
+lean_inc(x_46);
+lean_dec(x_25);
+x_48 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_48, 0, x_46);
+lean_ctor_set(x_48, 1, x_47);
+return x_48;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__1___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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_12, 0, x_1);
+lean_ctor_set(x_12, 1, x_11);
+return x_12;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; lean_object* x_13; 
+x_12 = lean_ctor_get(x_1, 0);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_2);
+x_13 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2(x_2, x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_2);
+if (lean_obj_tag(x_13) == 0)
+{
+lean_object* x_14; 
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+if (lean_obj_tag(x_14) == 0)
+{
+uint8_t x_15; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_15 = !lean_is_exclusive(x_13);
+if (x_15 == 0)
+{
+lean_object* x_16; lean_object* x_17; 
+x_16 = lean_ctor_get(x_13, 0);
+lean_dec(x_16);
+x_17 = lean_ctor_get(x_14, 0);
+lean_inc(x_17);
+lean_dec(x_14);
+lean_ctor_set(x_13, 0, x_17);
+return x_13;
+}
+else
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_18 = lean_ctor_get(x_13, 1);
+lean_inc(x_18);
+lean_dec(x_13);
+x_19 = lean_ctor_get(x_14, 0);
+lean_inc(x_19);
+lean_dec(x_14);
+x_20 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_20, 0, x_19);
+lean_ctor_set(x_20, 1, x_18);
+return x_20;
+}
+}
+else
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; size_t x_27; size_t x_28; lean_object* x_29; 
+x_21 = lean_ctor_get(x_13, 1);
+lean_inc(x_21);
+lean_dec(x_13);
+x_22 = lean_ctor_get(x_14, 0);
+lean_inc(x_22);
+lean_dec(x_14);
+x_23 = lean_ctor_get(x_1, 1);
+x_24 = lean_box(0);
+x_25 = lean_box(0);
+x_26 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_26, 0, x_25);
+lean_ctor_set(x_26, 1, x_22);
+x_27 = lean_array_size(x_23);
+x_28 = 0;
+x_29 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__5(x_23, x_24, x_25, x_23, x_27, x_28, x_26, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_21);
+if (lean_obj_tag(x_29) == 0)
+{
+lean_object* x_30; lean_object* x_31; 
+x_30 = lean_ctor_get(x_29, 0);
+lean_inc(x_30);
+x_31 = lean_ctor_get(x_30, 0);
+lean_inc(x_31);
+if (lean_obj_tag(x_31) == 0)
+{
+uint8_t x_32; 
+x_32 = !lean_is_exclusive(x_29);
+if (x_32 == 0)
+{
+lean_object* x_33; lean_object* x_34; 
+x_33 = lean_ctor_get(x_29, 0);
+lean_dec(x_33);
+x_34 = lean_ctor_get(x_30, 1);
+lean_inc(x_34);
+lean_dec(x_30);
+lean_ctor_set(x_29, 0, x_34);
+return x_29;
+}
+else
+{
+lean_object* x_35; lean_object* x_36; lean_object* x_37; 
+x_35 = lean_ctor_get(x_29, 1);
+lean_inc(x_35);
+lean_dec(x_29);
+x_36 = lean_ctor_get(x_30, 1);
+lean_inc(x_36);
+lean_dec(x_30);
+x_37 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_37, 0, x_36);
+lean_ctor_set(x_37, 1, x_35);
+return x_37;
+}
+}
+else
+{
+uint8_t x_38; 
+lean_dec(x_30);
+x_38 = !lean_is_exclusive(x_29);
+if (x_38 == 0)
+{
+lean_object* x_39; lean_object* x_40; 
+x_39 = lean_ctor_get(x_29, 0);
+lean_dec(x_39);
+x_40 = lean_ctor_get(x_31, 0);
+lean_inc(x_40);
+lean_dec(x_31);
+lean_ctor_set(x_29, 0, x_40);
+return x_29;
+}
+else
+{
+lean_object* x_41; lean_object* x_42; lean_object* x_43; 
+x_41 = lean_ctor_get(x_29, 1);
+lean_inc(x_41);
+lean_dec(x_29);
+x_42 = lean_ctor_get(x_31, 0);
+lean_inc(x_42);
+lean_dec(x_31);
+x_43 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_43, 0, x_42);
+lean_ctor_set(x_43, 1, x_41);
+return x_43;
+}
+}
+}
+else
+{
+uint8_t x_44; 
+x_44 = !lean_is_exclusive(x_29);
+if (x_44 == 0)
+{
+return x_29;
+}
+else
+{
+lean_object* x_45; lean_object* x_46; lean_object* x_47; 
+x_45 = lean_ctor_get(x_29, 0);
+x_46 = lean_ctor_get(x_29, 1);
+lean_inc(x_46);
+lean_inc(x_45);
+lean_dec(x_29);
+x_47 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_47, 0, x_45);
+lean_ctor_set(x_47, 1, x_46);
+return x_47;
+}
+}
+}
+}
+else
+{
+uint8_t x_48; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_48 = !lean_is_exclusive(x_13);
+if (x_48 == 0)
+{
+return x_13;
+}
+else
+{
+lean_object* x_49; lean_object* x_50; lean_object* x_51; 
+x_49 = lean_ctor_get(x_13, 0);
+x_50 = lean_ctor_get(x_13, 1);
+lean_inc(x_50);
+lean_inc(x_49);
+lean_dec(x_13);
+x_51 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_51, 0, x_49);
+lean_ctor_set(x_51, 1, x_50);
+return x_51;
+}
+}
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("", 0, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__1;
+x_2 = lean_alloc_ctor(3, 1, 0);
+lean_ctor_set(x_2, 0, x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_ppGoals(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; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; 
+x_10 = lean_st_ref_get(x_1, x_9);
+x_11 = lean_ctor_get(x_10, 0);
+lean_inc(x_11);
+x_12 = lean_ctor_get(x_10, 1);
+lean_inc(x_12);
+lean_dec(x_10);
+x_13 = l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__2;
+x_14 = l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__1(x_11, x_13, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_12);
+lean_dec(x_11);
+if (lean_obj_tag(x_14) == 0)
+{
+uint8_t x_15; 
+x_15 = !lean_is_exclusive(x_14);
+if (x_15 == 0)
+{
+return x_14;
+}
+else
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+x_16 = lean_ctor_get(x_14, 0);
+x_17 = lean_ctor_get(x_14, 1);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_dec(x_14);
+x_18 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_18, 0, x_16);
+lean_ctor_set(x_18, 1, x_17);
+return x_18;
+}
+}
+else
+{
+uint8_t x_19; 
+x_19 = !lean_is_exclusive(x_14);
+if (x_19 == 0)
+{
+return x_14;
+}
+else
+{
+lean_object* x_20; lean_object* x_21; lean_object* x_22; 
+x_20 = lean_ctor_get(x_14, 0);
+x_21 = lean_ctor_get(x_14, 1);
+lean_inc(x_21);
+lean_inc(x_20);
+lean_dec(x_14);
+x_22 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_22, 0, x_20);
+lean_ctor_set(x_22, 1, x_21);
+return x_22;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__3___boxed(lean_object** _args) {
+lean_object* x_1 = _args[0];
+lean_object* x_2 = _args[1];
+lean_object* x_3 = _args[2];
+lean_object* x_4 = _args[3];
+lean_object* x_5 = _args[4];
+lean_object* x_6 = _args[5];
+lean_object* x_7 = _args[6];
+lean_object* x_8 = _args[7];
+lean_object* x_9 = _args[8];
+lean_object* x_10 = _args[9];
+lean_object* x_11 = _args[10];
+lean_object* x_12 = _args[11];
+lean_object* x_13 = _args[12];
+lean_object* x_14 = _args[13];
+lean_object* x_15 = _args[14];
+lean_object* x_16 = _args[15];
+lean_object* x_17 = _args[16];
+_start:
+{
+size_t x_18; size_t x_19; lean_object* x_20; 
+x_18 = lean_unbox_usize(x_6);
 lean_dec(x_6);
+x_19 = lean_unbox_usize(x_7);
+lean_dec(x_7);
+x_20 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__3(x_1, x_2, x_3, x_4, x_5, x_18, x_19, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
+lean_dec(x_9);
 lean_dec(x_5);
-lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-x_78 = !lean_is_exclusive(x_48);
-if (x_78 == 0)
-{
-return x_48;
-}
-else
-{
-lean_object* x_79; lean_object* x_80; lean_object* x_81; 
-x_79 = lean_ctor_get(x_48, 0);
-x_80 = lean_ctor_get(x_48, 1);
-lean_inc(x_80);
-lean_inc(x_79);
-lean_dec(x_48);
-x_81 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_81, 0, x_79);
-lean_ctor_set(x_81, 1, x_80);
-return x_81;
-}
-}
-}
-case 2:
-{
-lean_object* x_82; lean_object* x_83; 
 lean_dec(x_1);
-x_82 = lean_ctor_get(x_11, 1);
-lean_inc(x_82);
-lean_dec(x_11);
-x_83 = lean_ctor_get(x_12, 0);
-lean_inc(x_83);
-lean_dec(x_12);
-x_1 = x_83;
-x_10 = x_82;
-goto _start;
+return x_20;
 }
-default: 
-{
-lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; 
-lean_dec(x_1);
-x_85 = lean_ctor_get(x_11, 1);
-lean_inc(x_85);
-lean_dec(x_11);
-x_86 = lean_ctor_get(x_12, 0);
-lean_inc(x_86);
-x_87 = lean_ctor_get(x_12, 1);
-lean_inc(x_87);
-lean_dec(x_12);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_87);
-x_88 = l_Lean_Meta_Grind_Preprocessor_applyCases_x3f(x_87, x_86, x_6, x_7, x_8, x_9, x_85);
-if (lean_obj_tag(x_88) == 0)
-{
-lean_object* x_89; 
-x_89 = lean_ctor_get(x_88, 0);
-lean_inc(x_89);
-if (lean_obj_tag(x_89) == 0)
-{
-lean_object* x_90; 
-x_90 = lean_ctor_get(x_88, 1);
-lean_inc(x_90);
-lean_dec(x_88);
-x_1 = x_87;
-x_10 = x_90;
-goto _start;
 }
-else
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+_start:
 {
-lean_object* x_92; lean_object* x_93; lean_object* x_94; 
-lean_dec(x_87);
-x_92 = lean_ctor_get(x_88, 1);
-lean_inc(x_92);
-lean_dec(x_88);
-x_93 = lean_ctor_get(x_89, 0);
-lean_inc(x_93);
-lean_dec(x_89);
-x_94 = l_List_forM___at_Lean_Meta_Grind_Preprocessor_loop___spec__1(x_93, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_92);
-return x_94;
+size_t x_17; size_t x_18; lean_object* x_19; 
+x_17 = lean_unbox_usize(x_5);
+lean_dec(x_5);
+x_18 = lean_unbox_usize(x_6);
+lean_dec(x_6);
+x_19 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4(x_1, x_2, x_3, x_4, x_17, x_18, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+lean_dec(x_8);
+lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_19;
 }
 }
-else
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2___lambda__1___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, lean_object* x_10, lean_object* x_11) {
+_start:
 {
-uint8_t x_95; 
-lean_dec(x_87);
+lean_object* x_12; 
+x_12 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
@@ -3681,31 +5092,42 @@ lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-x_95 = !lean_is_exclusive(x_88);
-if (x_95 == 0)
-{
-return x_88;
+return x_12;
 }
-else
-{
-lean_object* x_96; lean_object* x_97; lean_object* x_98; 
-x_96 = lean_ctor_get(x_88, 0);
-x_97 = lean_ctor_get(x_88, 1);
-lean_inc(x_97);
-lean_inc(x_96);
-lean_dec(x_88);
-x_98 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_98, 0, x_96);
-lean_ctor_set(x_98, 1, x_97);
-return x_98;
 }
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_13;
 }
 }
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__5___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+_start:
+{
+size_t x_17; size_t x_18; lean_object* x_19; 
+x_17 = lean_unbox_usize(x_5);
+lean_dec(x_5);
+x_18 = lean_unbox_usize(x_6);
+lean_dec(x_6);
+x_19 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__5(x_1, x_2, x_3, x_4, x_17, x_18, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+lean_dec(x_8);
+lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_19;
 }
 }
-else
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__1___lambda__1___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, lean_object* x_10, lean_object* x_11) {
+_start:
 {
-uint8_t x_99; 
+lean_object* x_12; 
+x_12 = l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__1___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
@@ -3714,59 +5136,55 @@ lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-lean_dec(x_1);
-x_99 = !lean_is_exclusive(x_11);
-if (x_99 == 0)
-{
-return x_11;
-}
-else
-{
-lean_object* x_100; lean_object* x_101; lean_object* x_102; 
-x_100 = lean_ctor_get(x_11, 0);
-x_101 = lean_ctor_get(x_11, 1);
-lean_inc(x_101);
-lean_inc(x_100);
-lean_dec(x_11);
-x_102 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_102, 0, x_100);
-lean_ctor_set(x_102, 1, x_101);
-return x_102;
+return x_12;
 }
 }
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__1___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, lean_object* x_10, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_3);
+lean_dec(x_1);
+return x_12;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_loop___lambda__1___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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_ppGoals___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_Meta_Grind_Preprocessor_loop___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
+x_10 = l_Lean_Meta_Grind_Preprocessor_ppGoals(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+lean_dec(x_1);
 return x_10;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_loop___lambda__3___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) {
+LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__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:
 {
-lean_object* x_10; 
-x_10 = l_Lean_Meta_Grind_Preprocessor_loop___lambda__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_10;
+lean_object* x_11; lean_object* x_12; uint8_t x_13; 
+x_11 = lean_ctor_get(x_8, 2);
+x_12 = l_Lean_isTracingEnabledForCore(x_1, x_11, x_10);
+x_13 = !lean_is_exclusive(x_12);
+if (x_13 == 0)
+{
+return x_12;
+}
+else
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_14 = lean_ctor_get(x_12, 0);
+x_15 = lean_ctor_get(x_12, 1);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_dec(x_12);
+x_16 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_16, 0, x_14);
+lean_ctor_set(x_16, 1, x_15);
+return x_16;
 }
 }
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__3(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, size_t x_6, size_t x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17) {
+}
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, size_t x_6, size_t x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17) {
 _start:
 {
 uint8_t x_18; 
@@ -3806,7 +5224,7 @@ lean_inc(x_12);
 lean_inc(x_11);
 lean_inc(x_10);
 lean_inc(x_22);
-x_24 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2(x_1, x_20, x_22, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
+x_24 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__3(x_1, x_20, x_22, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
 lean_dec(x_20);
 if (lean_obj_tag(x_24) == 0)
 {
@@ -3918,7 +5336,7 @@ lean_inc(x_12);
 lean_inc(x_11);
 lean_inc(x_10);
 lean_inc(x_41);
-x_42 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2(x_1, x_20, x_41, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
+x_42 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__3(x_1, x_20, x_41, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
 lean_dec(x_20);
 if (lean_obj_tag(x_42) == 0)
 {
@@ -4019,84 +5437,120 @@ return x_58;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___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_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5___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) {
 _start:
 {
-lean_object* x_10; 
+uint8_t x_10; lean_object* x_11; 
+x_10 = 1;
 lean_inc(x_1);
-x_10 = l_Lean_Meta_Grind_ppState(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
-if (lean_obj_tag(x_10) == 0)
+x_11 = l_Lean_Meta_Grind_checkInvariants(x_10, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+if (lean_obj_tag(x_11) == 0)
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; uint8_t x_14; 
-x_11 = lean_ctor_get(x_10, 0);
-lean_inc(x_11);
-x_12 = lean_ctor_get(x_10, 1);
+lean_object* x_12; lean_object* x_13; uint8_t x_14; 
+x_12 = lean_ctor_get(x_11, 1);
 lean_inc(x_12);
-lean_dec(x_10);
+lean_dec(x_11);
 x_13 = lean_st_ref_get(x_1, x_12);
-lean_dec(x_1);
 x_14 = !lean_is_exclusive(x_13);
 if (x_14 == 0)
 {
-lean_object* x_15; lean_object* x_16; 
-x_15 = lean_ctor_get(x_13, 0);
-x_16 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_16, 0, x_11);
-lean_ctor_set(x_16, 1, x_15);
-lean_ctor_set(x_13, 0, x_16);
-return x_13;
+lean_object* x_15; lean_object* x_16; uint8_t x_17; 
+x_15 = lean_ctor_get(x_13, 1);
+x_16 = lean_st_ref_get(x_1, x_15);
+lean_dec(x_1);
+x_17 = !lean_is_exclusive(x_16);
+if (x_17 == 0)
+{
+lean_object* x_18; 
+x_18 = lean_ctor_get(x_16, 0);
+lean_ctor_set(x_13, 1, x_18);
+lean_ctor_set(x_16, 0, x_13);
+return x_16;
+}
+else
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_19 = lean_ctor_get(x_16, 0);
+x_20 = lean_ctor_get(x_16, 1);
+lean_inc(x_20);
+lean_inc(x_19);
+lean_dec(x_16);
+lean_ctor_set(x_13, 1, x_19);
+x_21 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_21, 0, x_13);
+lean_ctor_set(x_21, 1, x_20);
+return x_21;
+}
+}
+else
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_22 = lean_ctor_get(x_13, 0);
+x_23 = lean_ctor_get(x_13, 1);
+lean_inc(x_23);
+lean_inc(x_22);
+lean_dec(x_13);
+x_24 = lean_st_ref_get(x_1, x_23);
+lean_dec(x_1);
+x_25 = lean_ctor_get(x_24, 0);
+lean_inc(x_25);
+x_26 = lean_ctor_get(x_24, 1);
+lean_inc(x_26);
+if (lean_is_exclusive(x_24)) {
+ lean_ctor_release(x_24, 0);
+ lean_ctor_release(x_24, 1);
+ x_27 = x_24;
+} else {
+ lean_dec_ref(x_24);
+ x_27 = lean_box(0);
 }
-else
-{
-lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; 
-x_17 = lean_ctor_get(x_13, 0);
-x_18 = lean_ctor_get(x_13, 1);
-lean_inc(x_18);
-lean_inc(x_17);
-lean_dec(x_13);
-x_19 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_19, 0, x_11);
-lean_ctor_set(x_19, 1, x_17);
-x_20 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_20, 0, x_19);
-lean_ctor_set(x_20, 1, x_18);
-return x_20;
+x_28 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_28, 0, x_22);
+lean_ctor_set(x_28, 1, x_25);
+if (lean_is_scalar(x_27)) {
+ x_29 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_29 = x_27;
+}
+lean_ctor_set(x_29, 0, x_28);
+lean_ctor_set(x_29, 1, x_26);
+return x_29;
 }
 }
 else
 {
-uint8_t x_21; 
+uint8_t x_30; 
 lean_dec(x_1);
-x_21 = !lean_is_exclusive(x_10);
-if (x_21 == 0)
+x_30 = !lean_is_exclusive(x_11);
+if (x_30 == 0)
 {
-return x_10;
+return x_11;
 }
 else
 {
-lean_object* x_22; lean_object* x_23; lean_object* x_24; 
-x_22 = lean_ctor_get(x_10, 0);
-x_23 = lean_ctor_get(x_10, 1);
-lean_inc(x_23);
-lean_inc(x_22);
-lean_dec(x_10);
-x_24 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_24, 0, x_22);
-lean_ctor_set(x_24, 1, x_23);
-return x_24;
+lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_31 = lean_ctor_get(x_11, 0);
+x_32 = lean_ctor_get(x_11, 1);
+lean_inc(x_32);
+lean_inc(x_31);
+lean_dec(x_11);
+x_33 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_33, 0, x_31);
+lean_ctor_set(x_33, 1, x_32);
+return x_33;
 }
 }
 }
 }
-static lean_object* _init_l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___closed__1() {
+static lean_object* _init_l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5___closed__1() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___lambda__1), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5___lambda__1), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, size_t x_5, size_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, size_t x_5, size_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
 _start:
 {
 uint8_t x_17; 
@@ -4119,19 +5573,21 @@ return x_18;
 }
 else
 {
-lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+lean_dec(x_7);
 x_19 = lean_array_uget(x_4, x_6);
-x_20 = lean_ctor_get(x_7, 1);
+x_20 = lean_ctor_get(x_19, 0);
 lean_inc(x_20);
-lean_dec(x_7);
-x_21 = lean_ctor_get(x_19, 0);
-lean_inc(x_21);
-x_22 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_loop___lambda__1___boxed), 9, 1);
-lean_closure_set(x_22, 0, x_19);
-x_23 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___closed__1;
-x_24 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
-lean_closure_set(x_24, 0, x_22);
-lean_closure_set(x_24, 1, x_23);
+x_21 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_loop___lambda__1___boxed), 9, 1);
+lean_closure_set(x_21, 0, x_19);
+x_22 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5___closed__1;
+x_23 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
+lean_closure_set(x_23, 0, x_21);
+lean_closure_set(x_23, 1, x_22);
+x_24 = l_Lean_Meta_Grind_Preprocessor_loop___lambda__4___closed__1;
+x_25 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
+lean_closure_set(x_25, 0, x_23);
+lean_closure_set(x_25, 1, x_24);
 lean_inc(x_15);
 lean_inc(x_14);
 lean_inc(x_13);
@@ -4139,69 +5595,28 @@ lean_inc(x_12);
 lean_inc(x_11);
 lean_inc(x_10);
 lean_inc(x_9);
-x_25 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(x_21, x_24, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
-if (lean_obj_tag(x_25) == 0)
+x_26 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(x_20, x_25, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+if (lean_obj_tag(x_26) == 0)
 {
-lean_object* x_26; lean_object* x_27; uint8_t x_28; 
-x_26 = lean_ctor_get(x_25, 0);
-lean_inc(x_26);
-x_27 = lean_ctor_get(x_25, 1);
+lean_object* x_27; lean_object* x_28; lean_object* x_29; size_t x_30; size_t x_31; 
+x_27 = lean_ctor_get(x_26, 1);
 lean_inc(x_27);
-lean_dec(x_25);
-x_28 = !lean_is_exclusive(x_26);
-if (x_28 == 0)
-{
-lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; size_t x_34; size_t x_35; 
-x_29 = lean_ctor_get(x_26, 0);
-x_30 = lean_ctor_get(x_26, 1);
-lean_dec(x_30);
-x_31 = lean_box(1);
-lean_ctor_set_tag(x_26, 5);
-lean_ctor_set(x_26, 1, x_31);
-lean_ctor_set(x_26, 0, x_20);
-x_32 = lean_alloc_ctor(5, 2, 0);
-lean_ctor_set(x_32, 0, x_26);
-lean_ctor_set(x_32, 1, x_29);
-lean_inc(x_3);
-x_33 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_33, 0, x_3);
-lean_ctor_set(x_33, 1, x_32);
-x_34 = 1;
-x_35 = lean_usize_add(x_6, x_34);
-x_6 = x_35;
-x_7 = x_33;
-x_16 = x_27;
-goto _start;
-}
-else
-{
-lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; size_t x_42; size_t x_43; 
-x_37 = lean_ctor_get(x_26, 0);
-lean_inc(x_37);
 lean_dec(x_26);
-x_38 = lean_box(1);
-x_39 = lean_alloc_ctor(5, 2, 0);
-lean_ctor_set(x_39, 0, x_20);
-lean_ctor_set(x_39, 1, x_38);
-x_40 = lean_alloc_ctor(5, 2, 0);
-lean_ctor_set(x_40, 0, x_39);
-lean_ctor_set(x_40, 1, x_37);
+x_28 = lean_box(0);
 lean_inc(x_3);
-x_41 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_41, 0, x_3);
-lean_ctor_set(x_41, 1, x_40);
-x_42 = 1;
-x_43 = lean_usize_add(x_6, x_42);
-x_6 = x_43;
-x_7 = x_41;
+x_29 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_29, 0, x_3);
+lean_ctor_set(x_29, 1, x_28);
+x_30 = 1;
+x_31 = lean_usize_add(x_6, x_30);
+x_6 = x_31;
+x_7 = x_29;
 x_16 = x_27;
 goto _start;
 }
-}
 else
 {
-uint8_t x_45; 
-lean_dec(x_20);
+uint8_t x_33; 
 lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
@@ -4210,41 +5625,29 @@ lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_3);
-x_45 = !lean_is_exclusive(x_25);
-if (x_45 == 0)
+x_33 = !lean_is_exclusive(x_26);
+if (x_33 == 0)
 {
-return x_25;
+return x_26;
 }
 else
 {
-lean_object* x_46; lean_object* x_47; lean_object* x_48; 
-x_46 = lean_ctor_get(x_25, 0);
-x_47 = lean_ctor_get(x_25, 1);
-lean_inc(x_47);
-lean_inc(x_46);
-lean_dec(x_25);
-x_48 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_48, 0, x_46);
-lean_ctor_set(x_48, 1, x_47);
-return x_48;
-}
-}
+lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_34 = lean_ctor_get(x_26, 0);
+x_35 = lean_ctor_get(x_26, 1);
+lean_inc(x_35);
+lean_inc(x_34);
+lean_dec(x_26);
+x_36 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_36, 0, x_34);
+lean_ctor_set(x_36, 1, x_35);
+return x_36;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2___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, lean_object* x_11) {
-_start:
-{
-lean_object* x_12; lean_object* x_13; 
-x_12 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_12, 0, x_1);
-x_13 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_13, 0, x_12);
-lean_ctor_set(x_13, 1, x_11);
-return x_13;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2(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, lean_object* x_11, lean_object* x_12) {
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__3(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, lean_object* x_11, lean_object* x_12) {
 _start:
 {
 if (lean_obj_tag(x_2) == 0)
@@ -4265,7 +5668,7 @@ lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
 lean_inc(x_5);
-x_19 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__3(x_1, x_13, x_14, x_15, x_13, x_17, x_18, x_16, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+x_19 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__4(x_1, x_13, x_14, x_15, x_13, x_17, x_18, x_16, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
 if (lean_obj_tag(x_19) == 0)
 {
 lean_object* x_20; lean_object* x_21; 
@@ -4380,7 +5783,7 @@ lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
 lean_inc(x_5);
-x_42 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4(x_36, x_37, x_38, x_36, x_40, x_41, x_39, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+x_42 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5(x_36, x_37, x_38, x_36, x_40, x_41, x_39, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
 if (lean_obj_tag(x_42) == 0)
 {
 lean_object* x_43; lean_object* x_44; 
@@ -4479,7 +5882,7 @@ return x_58;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__5(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, size_t x_5, size_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__6(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, size_t x_5, size_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
 _start:
 {
 uint8_t x_17; 
@@ -4502,19 +5905,21 @@ return x_18;
 }
 else
 {
-lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+lean_dec(x_7);
 x_19 = lean_array_uget(x_4, x_6);
-x_20 = lean_ctor_get(x_7, 1);
+x_20 = lean_ctor_get(x_19, 0);
 lean_inc(x_20);
-lean_dec(x_7);
-x_21 = lean_ctor_get(x_19, 0);
-lean_inc(x_21);
-x_22 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_loop___lambda__1___boxed), 9, 1);
-lean_closure_set(x_22, 0, x_19);
-x_23 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___closed__1;
-x_24 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
-lean_closure_set(x_24, 0, x_22);
-lean_closure_set(x_24, 1, x_23);
+x_21 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_loop___lambda__1___boxed), 9, 1);
+lean_closure_set(x_21, 0, x_19);
+x_22 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5___closed__1;
+x_23 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
+lean_closure_set(x_23, 0, x_21);
+lean_closure_set(x_23, 1, x_22);
+x_24 = l_Lean_Meta_Grind_Preprocessor_loop___lambda__4___closed__1;
+x_25 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
+lean_closure_set(x_25, 0, x_23);
+lean_closure_set(x_25, 1, x_24);
 lean_inc(x_15);
 lean_inc(x_14);
 lean_inc(x_13);
@@ -4522,110 +5927,59 @@ lean_inc(x_12);
 lean_inc(x_11);
 lean_inc(x_10);
 lean_inc(x_9);
-x_25 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(x_21, x_24, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
-if (lean_obj_tag(x_25) == 0)
+x_26 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(x_20, x_25, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+if (lean_obj_tag(x_26) == 0)
 {
-lean_object* x_26; lean_object* x_27; uint8_t x_28; 
-x_26 = lean_ctor_get(x_25, 0);
-lean_inc(x_26);
-x_27 = lean_ctor_get(x_25, 1);
+lean_object* x_27; lean_object* x_28; lean_object* x_29; size_t x_30; size_t x_31; 
+x_27 = lean_ctor_get(x_26, 1);
 lean_inc(x_27);
-lean_dec(x_25);
-x_28 = !lean_is_exclusive(x_26);
-if (x_28 == 0)
-{
-lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; size_t x_34; size_t x_35; 
-x_29 = lean_ctor_get(x_26, 0);
-x_30 = lean_ctor_get(x_26, 1);
-lean_dec(x_30);
-x_31 = lean_box(1);
-lean_ctor_set_tag(x_26, 5);
-lean_ctor_set(x_26, 1, x_31);
-lean_ctor_set(x_26, 0, x_20);
-x_32 = lean_alloc_ctor(5, 2, 0);
-lean_ctor_set(x_32, 0, x_26);
-lean_ctor_set(x_32, 1, x_29);
-lean_inc(x_3);
-x_33 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_33, 0, x_3);
-lean_ctor_set(x_33, 1, x_32);
-x_34 = 1;
-x_35 = lean_usize_add(x_6, x_34);
-x_6 = x_35;
-x_7 = x_33;
-x_16 = x_27;
-goto _start;
-}
-else
-{
-lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; size_t x_42; size_t x_43; 
-x_37 = lean_ctor_get(x_26, 0);
-lean_inc(x_37);
 lean_dec(x_26);
-x_38 = lean_box(1);
-x_39 = lean_alloc_ctor(5, 2, 0);
-lean_ctor_set(x_39, 0, x_20);
-lean_ctor_set(x_39, 1, x_38);
-x_40 = lean_alloc_ctor(5, 2, 0);
-lean_ctor_set(x_40, 0, x_39);
-lean_ctor_set(x_40, 1, x_37);
+x_28 = lean_box(0);
 lean_inc(x_3);
-x_41 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_41, 0, x_3);
-lean_ctor_set(x_41, 1, x_40);
-x_42 = 1;
-x_43 = lean_usize_add(x_6, x_42);
-x_6 = x_43;
-x_7 = x_41;
+x_29 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_29, 0, x_3);
+lean_ctor_set(x_29, 1, x_28);
+x_30 = 1;
+x_31 = lean_usize_add(x_6, x_30);
+x_6 = x_31;
+x_7 = x_29;
 x_16 = x_27;
 goto _start;
 }
-}
 else
 {
-uint8_t x_45; 
-lean_dec(x_20);
+uint8_t x_33; 
 lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
 lean_dec(x_12);
 lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_3);
-x_45 = !lean_is_exclusive(x_25);
-if (x_45 == 0)
-{
-return x_25;
-}
-else
-{
-lean_object* x_46; lean_object* x_47; lean_object* x_48; 
-x_46 = lean_ctor_get(x_25, 0);
-x_47 = lean_ctor_get(x_25, 1);
-lean_inc(x_47);
-lean_inc(x_46);
-lean_dec(x_25);
-x_48 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_48, 0, x_46);
-lean_ctor_set(x_48, 1, x_47);
-return x_48;
-}
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_3);
+x_33 = !lean_is_exclusive(x_26);
+if (x_33 == 0)
+{
+return x_26;
 }
+else
+{
+lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_34 = lean_ctor_get(x_26, 0);
+x_35 = lean_ctor_get(x_26, 1);
+lean_inc(x_35);
+lean_inc(x_34);
+lean_dec(x_26);
+x_36 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_36, 0, x_34);
+lean_ctor_set(x_36, 1, x_35);
+return x_36;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__1___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, lean_object* x_11) {
-_start:
-{
-lean_object* x_12; 
-x_12 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_12, 0, x_1);
-lean_ctor_set(x_12, 1, x_11);
-return x_12;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__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, lean_object* x_11) {
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2(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, lean_object* x_11) {
 _start:
 {
 lean_object* x_12; lean_object* x_13; 
@@ -4638,7 +5992,7 @@ lean_inc(x_6);
 lean_inc(x_5);
 lean_inc(x_4);
 lean_inc(x_2);
-x_13 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2(x_2, x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+x_13 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__3(x_2, x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
 lean_dec(x_2);
 if (lean_obj_tag(x_13) == 0)
 {
@@ -4699,7 +6053,7 @@ lean_ctor_set(x_26, 0, x_25);
 lean_ctor_set(x_26, 1, x_22);
 x_27 = lean_array_size(x_23);
 x_28 = 0;
-x_29 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__5(x_23, x_24, x_25, x_23, x_27, x_28, x_26, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_21);
+x_29 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__6(x_23, x_24, x_25, x_23, x_27, x_28, x_26, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_21);
 if (lean_obj_tag(x_29) == 0)
 {
 lean_object* x_30; lean_object* x_31; 
@@ -4806,258 +6160,25 @@ lean_dec(x_4);
 x_48 = !lean_is_exclusive(x_13);
 if (x_48 == 0)
 {
-return x_13;
-}
-else
-{
-lean_object* x_49; lean_object* x_50; lean_object* x_51; 
-x_49 = lean_ctor_get(x_13, 0);
-x_50 = lean_ctor_get(x_13, 1);
-lean_inc(x_50);
-lean_inc(x_49);
-lean_dec(x_13);
-x_51 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_51, 0, x_49);
-lean_ctor_set(x_51, 1, x_50);
-return x_51;
-}
-}
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("", 0, 0);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__2() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__1;
-x_2 = lean_alloc_ctor(3, 1, 0);
-lean_ctor_set(x_2, 0, x_1);
-return x_2;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_ppGoals(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; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; 
-x_10 = lean_st_ref_get(x_1, x_9);
-x_11 = lean_ctor_get(x_10, 0);
-lean_inc(x_11);
-x_12 = lean_ctor_get(x_10, 1);
-lean_inc(x_12);
-lean_dec(x_10);
-x_13 = l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__2;
-x_14 = l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__1(x_11, x_13, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_12);
-lean_dec(x_11);
-if (lean_obj_tag(x_14) == 0)
-{
-uint8_t x_15; 
-x_15 = !lean_is_exclusive(x_14);
-if (x_15 == 0)
-{
-return x_14;
-}
-else
-{
-lean_object* x_16; lean_object* x_17; lean_object* x_18; 
-x_16 = lean_ctor_get(x_14, 0);
-x_17 = lean_ctor_get(x_14, 1);
-lean_inc(x_17);
-lean_inc(x_16);
-lean_dec(x_14);
-x_18 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_18, 0, x_16);
-lean_ctor_set(x_18, 1, x_17);
-return x_18;
-}
-}
-else
-{
-uint8_t x_19; 
-x_19 = !lean_is_exclusive(x_14);
-if (x_19 == 0)
-{
-return x_14;
-}
-else
-{
-lean_object* x_20; lean_object* x_21; lean_object* x_22; 
-x_20 = lean_ctor_get(x_14, 0);
-x_21 = lean_ctor_get(x_14, 1);
-lean_inc(x_21);
-lean_inc(x_20);
-lean_dec(x_14);
-x_22 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_22, 0, x_20);
-lean_ctor_set(x_22, 1, x_21);
-return x_22;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__3___boxed(lean_object** _args) {
-lean_object* x_1 = _args[0];
-lean_object* x_2 = _args[1];
-lean_object* x_3 = _args[2];
-lean_object* x_4 = _args[3];
-lean_object* x_5 = _args[4];
-lean_object* x_6 = _args[5];
-lean_object* x_7 = _args[6];
-lean_object* x_8 = _args[7];
-lean_object* x_9 = _args[8];
-lean_object* x_10 = _args[9];
-lean_object* x_11 = _args[10];
-lean_object* x_12 = _args[11];
-lean_object* x_13 = _args[12];
-lean_object* x_14 = _args[13];
-lean_object* x_15 = _args[14];
-lean_object* x_16 = _args[15];
-lean_object* x_17 = _args[16];
-_start:
-{
-size_t x_18; size_t x_19; lean_object* x_20; 
-x_18 = lean_unbox_usize(x_6);
-lean_dec(x_6);
-x_19 = lean_unbox_usize(x_7);
-lean_dec(x_7);
-x_20 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__3(x_1, x_2, x_3, x_4, x_5, x_18, x_19, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
-lean_dec(x_9);
-lean_dec(x_5);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-return x_20;
-}
-}
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
-_start:
-{
-size_t x_17; size_t x_18; lean_object* x_19; 
-x_17 = lean_unbox_usize(x_5);
-lean_dec(x_5);
-x_18 = lean_unbox_usize(x_6);
-lean_dec(x_6);
-x_19 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4(x_1, x_2, x_3, x_4, x_17, x_18, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
-lean_dec(x_8);
-lean_dec(x_4);
-lean_dec(x_2);
-lean_dec(x_1);
-return x_19;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2___lambda__1___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, lean_object* x_10, lean_object* x_11) {
-_start:
-{
-lean_object* x_12; 
-x_12 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_12;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
-_start:
-{
-lean_object* x_13; 
-x_13 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-lean_dec(x_4);
-lean_dec(x_2);
-lean_dec(x_1);
-return x_13;
-}
-}
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__5___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
-_start:
-{
-size_t x_17; size_t x_18; lean_object* x_19; 
-x_17 = lean_unbox_usize(x_5);
-lean_dec(x_5);
-x_18 = lean_unbox_usize(x_6);
-lean_dec(x_6);
-x_19 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__5(x_1, x_2, x_3, x_4, x_17, x_18, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
-lean_dec(x_8);
-lean_dec(x_4);
-lean_dec(x_2);
-lean_dec(x_1);
-return x_19;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__1___lambda__1___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, lean_object* x_10, lean_object* x_11) {
-_start:
-{
-lean_object* x_12; 
-x_12 = l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__1___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_12;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__1___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, lean_object* x_10, lean_object* x_11) {
-_start:
-{
-lean_object* x_12; 
-x_12 = l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-lean_dec(x_3);
-lean_dec(x_1);
-return x_12;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_ppGoals___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_Meta_Grind_Preprocessor_ppGoals(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
-lean_dec(x_1);
-return x_10;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__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:
-{
-lean_object* x_11; lean_object* x_12; uint8_t x_13; 
-x_11 = lean_ctor_get(x_8, 2);
-x_12 = l_Lean_isTracingEnabledForCore(x_1, x_11, x_10);
-x_13 = !lean_is_exclusive(x_12);
-if (x_13 == 0)
-{
-return x_12;
+return x_13;
 }
 else
 {
-lean_object* x_14; lean_object* x_15; lean_object* x_16; 
-x_14 = lean_ctor_get(x_12, 0);
-x_15 = lean_ctor_get(x_12, 1);
-lean_inc(x_15);
-lean_inc(x_14);
-lean_dec(x_12);
-x_16 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_16, 0, x_14);
-lean_ctor_set(x_16, 1, x_15);
-return x_16;
+lean_object* x_49; lean_object* x_50; lean_object* x_51; 
+x_49 = lean_ctor_get(x_13, 0);
+x_50 = lean_ctor_get(x_13, 1);
+lean_inc(x_50);
+lean_inc(x_49);
+lean_dec(x_13);
+x_51 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_51, 0, x_49);
+lean_ctor_set(x_51, 1, x_50);
+return x_51;
+}
 }
 }
 }
-static double _init_l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__1() {
+static double _init_l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__1() {
 _start:
 {
 lean_object* x_1; uint8_t x_2; double x_3; 
@@ -5067,7 +6188,7 @@ x_3 = l_Float_ofScientific(x_1, x_2, x_1);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__2() {
+static lean_object* _init_l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
@@ -5076,7 +6197,7 @@ x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2(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, lean_object* x_11) {
+LEAN_EXPORT lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7(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, lean_object* x_11) {
 _start:
 {
 lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; 
@@ -5110,7 +6231,7 @@ if (x_24 == 0)
 {
 lean_object* x_25; double x_26; uint8_t x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; uint8_t x_34; 
 x_25 = lean_ctor_get(x_18, 0);
-x_26 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__1;
+x_26 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__1;
 x_27 = 0;
 x_28 = l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__1;
 x_29 = lean_alloc_ctor(0, 2, 17);
@@ -5119,7 +6240,7 @@ lean_ctor_set(x_29, 1, x_28);
 lean_ctor_set_float(x_29, sizeof(void*)*2, x_26);
 lean_ctor_set_float(x_29, sizeof(void*)*2 + 8, x_26);
 lean_ctor_set_uint8(x_29, sizeof(void*)*2 + 16, x_27);
-x_30 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__2;
+x_30 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__2;
 x_31 = lean_alloc_ctor(9, 3, 0);
 lean_ctor_set(x_31, 0, x_29);
 lean_ctor_set(x_31, 1, x_14);
@@ -5160,7 +6281,7 @@ x_40 = lean_ctor_get_uint64(x_18, sizeof(void*)*1);
 x_41 = lean_ctor_get(x_18, 0);
 lean_inc(x_41);
 lean_dec(x_18);
-x_42 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__1;
+x_42 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__1;
 x_43 = 0;
 x_44 = l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__1;
 x_45 = lean_alloc_ctor(0, 2, 17);
@@ -5169,7 +6290,7 @@ lean_ctor_set(x_45, 1, x_44);
 lean_ctor_set_float(x_45, sizeof(void*)*2, x_42);
 lean_ctor_set_float(x_45, sizeof(void*)*2 + 8, x_42);
 lean_ctor_set_uint8(x_45, sizeof(void*)*2 + 16, x_43);
-x_46 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__2;
+x_46 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__2;
 x_47 = lean_alloc_ctor(9, 3, 0);
 lean_ctor_set(x_47, 0, x_45);
 lean_ctor_set(x_47, 1, x_14);
@@ -5232,7 +6353,7 @@ if (lean_is_exclusive(x_18)) {
  lean_dec_ref(x_18);
  x_64 = lean_box(0);
 }
-x_65 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__1;
+x_65 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__1;
 x_66 = 0;
 x_67 = l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__1;
 x_68 = lean_alloc_ctor(0, 2, 17);
@@ -5241,7 +6362,7 @@ lean_ctor_set(x_68, 1, x_67);
 lean_ctor_set_float(x_68, sizeof(void*)*2, x_65);
 lean_ctor_set_float(x_68, sizeof(void*)*2 + 8, x_65);
 lean_ctor_set_uint8(x_68, sizeof(void*)*2 + 16, x_66);
-x_69 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__2;
+x_69 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__2;
 x_70 = lean_alloc_ctor(9, 3, 0);
 lean_ctor_set(x_70, 0, x_68);
 lean_ctor_set(x_70, 1, x_14);
@@ -5332,7 +6453,7 @@ if (lean_is_exclusive(x_18)) {
  lean_dec_ref(x_18);
  x_90 = lean_box(0);
 }
-x_91 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__1;
+x_91 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__1;
 x_92 = 0;
 x_93 = l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__1;
 x_94 = lean_alloc_ctor(0, 2, 17);
@@ -5341,7 +6462,7 @@ lean_ctor_set(x_94, 1, x_93);
 lean_ctor_set_float(x_94, sizeof(void*)*2, x_91);
 lean_ctor_set_float(x_94, sizeof(void*)*2 + 8, x_91);
 lean_ctor_set_uint8(x_94, sizeof(void*)*2 + 16, x_92);
-x_95 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__2;
+x_95 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__2;
 x_96 = lean_alloc_ctor(9, 3, 0);
 lean_ctor_set(x_96, 0, x_94);
 lean_ctor_set(x_96, 1, x_14);
@@ -5397,26 +6518,64 @@ return x_105;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_preprocess___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:
 {
-lean_object* x_11; uint8_t x_12; 
+lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
 x_11 = lean_st_ref_get(x_2, x_10);
-x_12 = !lean_is_exclusive(x_11);
-if (x_12 == 0)
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+x_13 = lean_ctor_get(x_11, 1);
+lean_inc(x_13);
+lean_dec(x_11);
+x_14 = lean_box(0);
+x_15 = l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2(x_12, x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
+lean_dec(x_12);
+if (lean_obj_tag(x_15) == 0)
 {
-return x_11;
+lean_object* x_16; lean_object* x_17; uint8_t x_18; 
+x_16 = lean_ctor_get(x_15, 1);
+lean_inc(x_16);
+lean_dec(x_15);
+x_17 = lean_st_ref_get(x_2, x_16);
+x_18 = !lean_is_exclusive(x_17);
+if (x_18 == 0)
+{
+return x_17;
 }
 else
 {
-lean_object* x_13; lean_object* x_14; lean_object* x_15; 
-x_13 = lean_ctor_get(x_11, 0);
-x_14 = lean_ctor_get(x_11, 1);
-lean_inc(x_14);
-lean_inc(x_13);
-lean_dec(x_11);
-x_15 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_15, 0, x_13);
-lean_ctor_set(x_15, 1, x_14);
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_19 = lean_ctor_get(x_17, 0);
+x_20 = lean_ctor_get(x_17, 1);
+lean_inc(x_20);
+lean_inc(x_19);
+lean_dec(x_17);
+x_21 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_21, 0, x_19);
+lean_ctor_set(x_21, 1, x_20);
+return x_21;
+}
+}
+else
+{
+uint8_t x_22; 
+x_22 = !lean_is_exclusive(x_15);
+if (x_22 == 0)
+{
 return x_15;
 }
+else
+{
+lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+x_23 = lean_ctor_get(x_15, 0);
+x_24 = lean_ctor_get(x_15, 1);
+lean_inc(x_24);
+lean_inc(x_23);
+lean_dec(x_15);
+x_25 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_25, 0, x_23);
+lean_ctor_set(x_25, 1, x_24);
+return x_25;
+}
+}
 }
 }
 static lean_object* _init_l_Lean_Meta_Grind_Preprocessor_preprocess___closed__1() {
@@ -5663,7 +6822,7 @@ x_59 = lean_ctor_get(x_57, 1);
 lean_inc(x_59);
 lean_dec(x_57);
 x_60 = l_Lean_MessageData_ofFormat(x_58);
-x_61 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2(x_42, x_60, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_59);
+x_61 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7(x_42, x_60, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_59);
 x_62 = lean_ctor_get(x_61, 0);
 lean_inc(x_62);
 x_63 = lean_ctor_get(x_61, 1);
@@ -6035,27 +7194,99 @@ lean_dec(x_2);
 return x_11;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___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, lean_object* x_10, lean_object* x_11) {
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__4___boxed(lean_object** _args) {
+lean_object* x_1 = _args[0];
+lean_object* x_2 = _args[1];
+lean_object* x_3 = _args[2];
+lean_object* x_4 = _args[3];
+lean_object* x_5 = _args[4];
+lean_object* x_6 = _args[5];
+lean_object* x_7 = _args[6];
+lean_object* x_8 = _args[7];
+lean_object* x_9 = _args[8];
+lean_object* x_10 = _args[9];
+lean_object* x_11 = _args[10];
+lean_object* x_12 = _args[11];
+lean_object* x_13 = _args[12];
+lean_object* x_14 = _args[13];
+lean_object* x_15 = _args[14];
+lean_object* x_16 = _args[15];
+lean_object* x_17 = _args[16];
 _start:
 {
-lean_object* x_12; 
-x_12 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
+size_t x_18; size_t x_19; lean_object* x_20; 
+x_18 = lean_unbox_usize(x_6);
+lean_dec(x_6);
+x_19 = lean_unbox_usize(x_7);
 lean_dec(x_7);
+x_20 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__4(x_1, x_2, x_3, x_4, x_5, x_18, x_19, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17);
+lean_dec(x_9);
+lean_dec(x_5);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_20;
+}
+}
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+_start:
+{
+size_t x_17; size_t x_18; lean_object* x_19; 
+x_17 = lean_unbox_usize(x_5);
+lean_dec(x_5);
+x_18 = lean_unbox_usize(x_6);
 lean_dec(x_6);
+x_19 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5(x_1, x_2, x_3, x_4, x_17, x_18, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+lean_dec(x_8);
+lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_19;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__3___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l_Lean_PersistentArray_forInAux___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__6___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+_start:
+{
+size_t x_17; size_t x_18; lean_object* x_19; 
+x_17 = lean_unbox_usize(x_5);
 lean_dec(x_5);
+x_18 = lean_unbox_usize(x_6);
+lean_dec(x_6);
+x_19 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__6(x_1, x_2, x_3, x_4, x_17, x_18, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+lean_dec(x_8);
 lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_19;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___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, lean_object* x_10, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = l_Lean_PersistentArray_forIn___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
 lean_dec(x_3);
+lean_dec(x_1);
 return x_12;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_preprocess___lambda__1___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, lean_object* x_10) {
+LEAN_EXPORT lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___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, lean_object* x_10, lean_object* x_11) {
 _start:
 {
-lean_object* x_11; 
-x_11 = l_Lean_Meta_Grind_Preprocessor_preprocess___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_object* x_12; 
+x_12 = l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
@@ -6063,6 +7294,14 @@ lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
+return x_12;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Preprocessor_preprocess___lambda__1___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l_Lean_Meta_Grind_Preprocessor_preprocess___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 lean_dec(x_2);
 lean_dec(x_1);
 return x_11;
@@ -6276,7 +7515,7 @@ lean_closure_set(x_19, 0, x_1);
 x_20 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
 lean_closure_set(x_20, 0, x_18);
 lean_closure_set(x_20, 1, x_19);
-x_21 = l_Lean_Meta_Grind_Preprocessor_loop___closed__1;
+x_21 = l_Lean_Meta_Grind_Preprocessor_loop___lambda__4___closed__1;
 x_22 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
 lean_closure_set(x_22, 0, x_20);
 lean_closure_set(x_22, 1, x_21);
@@ -6494,7 +7733,7 @@ lean_closure_set(x_19, 0, x_1);
 x_20 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
 lean_closure_set(x_20, 0, x_18);
 lean_closure_set(x_20, 1, x_19);
-x_21 = l_Lean_Meta_Grind_Preprocessor_loop___closed__1;
+x_21 = l_Lean_Meta_Grind_Preprocessor_loop___lambda__4___closed__1;
 x_22 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
 lean_closure_set(x_22, 0, x_20);
 lean_closure_set(x_22, 1, x_21);
@@ -7099,7 +8338,68 @@ x_10 = l_Lean_Meta_Grind_GrindM_run___rarg(x_9, x_2, x_3, x_4, x_5, x_6, x_7);
 return x_10;
 }
 }
-LEAN_EXPORT lean_object* l_List_mapTR_loop___at_Lean_Meta_Grind_main___spec__1(lean_object* x_1, lean_object* x_2) {
+LEAN_EXPORT lean_object* l_List_filterTR_loop___at_Lean_Meta_Grind_main___spec__1(lean_object* x_1, lean_object* x_2) {
+_start:
+{
+if (lean_obj_tag(x_1) == 0)
+{
+lean_object* x_3; 
+x_3 = l_List_reverse___rarg(x_2);
+return x_3;
+}
+else
+{
+lean_object* x_4; uint8_t x_5; 
+x_4 = lean_ctor_get(x_1, 0);
+lean_inc(x_4);
+x_5 = lean_ctor_get_uint8(x_4, sizeof(void*)*8);
+if (x_5 == 0)
+{
+uint8_t x_6; 
+x_6 = !lean_is_exclusive(x_1);
+if (x_6 == 0)
+{
+lean_object* x_7; lean_object* x_8; 
+x_7 = lean_ctor_get(x_1, 1);
+x_8 = lean_ctor_get(x_1, 0);
+lean_dec(x_8);
+lean_ctor_set(x_1, 1, x_2);
+{
+lean_object* _tmp_0 = x_7;
+lean_object* _tmp_1 = x_1;
+x_1 = _tmp_0;
+x_2 = _tmp_1;
+}
+goto _start;
+}
+else
+{
+lean_object* x_10; lean_object* x_11; 
+x_10 = lean_ctor_get(x_1, 1);
+lean_inc(x_10);
+lean_dec(x_1);
+x_11 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_11, 0, x_4);
+lean_ctor_set(x_11, 1, x_2);
+x_1 = x_10;
+x_2 = x_11;
+goto _start;
+}
+}
+else
+{
+lean_object* x_13; 
+lean_dec(x_4);
+x_13 = lean_ctor_get(x_1, 1);
+lean_inc(x_13);
+lean_dec(x_1);
+x_1 = x_13;
+goto _start;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_List_mapTR_loop___at_Lean_Meta_Grind_main___spec__2(lean_object* x_1, lean_object* x_2) {
 _start:
 {
 if (lean_obj_tag(x_1) == 0)
@@ -7151,66 +8451,58 @@ goto _start;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_main(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_EXPORT lean_object* l_Lean_Meta_Grind_main___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) {
 _start:
 {
-lean_object* x_8; 
-x_8 = l_Lean_Meta_Grind_preprocess(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
-if (lean_obj_tag(x_8) == 0)
-{
-uint8_t x_9; 
-x_9 = !lean_is_exclusive(x_8);
-if (x_9 == 0)
-{
-lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; 
-x_10 = lean_ctor_get(x_8, 0);
-x_11 = l_Lean_PersistentArray_toList___rarg(x_10);
-lean_dec(x_10);
-x_12 = lean_box(0);
-x_13 = l_List_mapTR_loop___at_Lean_Meta_Grind_main___spec__1(x_11, x_12);
-lean_ctor_set(x_8, 0, x_13);
-return x_8;
+lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; 
+x_10 = l_Lean_PersistentArray_toList___rarg(x_1);
+x_11 = lean_box(0);
+x_12 = l_List_filterTR_loop___at_Lean_Meta_Grind_main___spec__1(x_10, x_11);
+x_13 = l_List_mapTR_loop___at_Lean_Meta_Grind_main___spec__2(x_12, x_11);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_13);
+lean_ctor_set(x_14, 1, x_9);
+return x_14;
 }
-else
+}
+static lean_object* _init_l_Lean_Meta_Grind_main___closed__1() {
+_start:
 {
-lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; 
-x_14 = lean_ctor_get(x_8, 0);
-x_15 = lean_ctor_get(x_8, 1);
-lean_inc(x_15);
-lean_inc(x_14);
-lean_dec(x_8);
-x_16 = l_Lean_PersistentArray_toList___rarg(x_14);
-lean_dec(x_14);
-x_17 = lean_box(0);
-x_18 = l_List_mapTR_loop___at_Lean_Meta_Grind_main___spec__1(x_16, x_17);
-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;
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_main___lambda__1___boxed), 9, 0);
+return x_1;
 }
 }
-else
-{
-uint8_t x_20; 
-x_20 = !lean_is_exclusive(x_8);
-if (x_20 == 0)
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_main(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) {
+_start:
 {
-return x_8;
+lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; 
+x_8 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_preprocess), 10, 1);
+lean_closure_set(x_8, 0, x_1);
+x_9 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_Preprocessor_PreM_run___rarg), 9, 1);
+lean_closure_set(x_9, 0, x_8);
+x_10 = l_Lean_Meta_Grind_main___closed__1;
+x_11 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
+lean_closure_set(x_11, 0, x_9);
+lean_closure_set(x_11, 1, x_10);
+x_12 = l_Lean_Meta_Grind_GrindM_run___rarg(x_11, x_2, x_3, x_4, x_5, x_6, x_7);
+return x_12;
 }
-else
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_main___lambda__1___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_21; lean_object* x_22; lean_object* x_23; 
-x_21 = lean_ctor_get(x_8, 0);
-x_22 = lean_ctor_get(x_8, 1);
-lean_inc(x_22);
-lean_inc(x_21);
+lean_object* x_10; 
+x_10 = l_Lean_Meta_Grind_main___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
 lean_dec(x_8);
-x_23 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_23, 0, x_21);
-lean_ctor_set(x_23, 1, x_22);
-return x_23;
-}
-}
+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_10;
 }
 }
 lean_object* initialize_Init_Grind_Lemmas(uint8_t builtin, lean_object*);
@@ -7226,6 +8518,7 @@ lean_object* initialize_Lean_Meta_Tactic_Grind_Cases(uint8_t builtin, lean_objec
 lean_object* initialize_Lean_Meta_Tactic_Grind_Injection(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Meta_Tactic_Grind_Core(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Meta_Tactic_Grind_Simp(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind_Run(uint8_t builtin, lean_object*);
 static bool _G_initialized = false;
 LEAN_EXPORT lean_object* initialize_Lean_Meta_Tactic_Grind_Preprocessor(uint8_t builtin, lean_object* w) {
 lean_object * res;
@@ -7270,6 +8563,9 @@ lean_dec_ref(res);
 res = initialize_Lean_Meta_Tactic_Grind_Simp(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
+res = initialize_Lean_Meta_Tactic_Grind_Run(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
 l_Lean_Meta_Grind_Preprocessor_instInhabitedState___closed__1 = _init_l_Lean_Meta_Grind_Preprocessor_instInhabitedState___closed__1();
 lean_mark_persistent(l_Lean_Meta_Grind_Preprocessor_instInhabitedState___closed__1);
 l_Lean_Meta_Grind_Preprocessor_instInhabitedState___closed__2 = _init_l_Lean_Meta_Grind_Preprocessor_instInhabitedState___closed__2();
@@ -7293,17 +8589,19 @@ l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5___closed__3 = _init_l_Lean_
 lean_mark_persistent(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5___closed__3);
 l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5___closed__4 = _init_l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5___closed__4();
 lean_mark_persistent(l_Lean_Meta_Grind_Preprocessor_introNext___lambda__5___closed__4);
-l_Lean_Meta_Grind_Preprocessor_loop___closed__1 = _init_l_Lean_Meta_Grind_Preprocessor_loop___closed__1();
-lean_mark_persistent(l_Lean_Meta_Grind_Preprocessor_loop___closed__1);
+l_Lean_Meta_Grind_Preprocessor_loop___lambda__4___closed__1 = _init_l_Lean_Meta_Grind_Preprocessor_loop___lambda__4___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_Preprocessor_loop___lambda__4___closed__1);
 l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___closed__1 = _init_l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___closed__1();
 lean_mark_persistent(l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_ppGoals___spec__4___closed__1);
 l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__1 = _init_l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__1();
 lean_mark_persistent(l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__1);
 l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__2 = _init_l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__2();
 lean_mark_persistent(l_Lean_Meta_Grind_Preprocessor_ppGoals___closed__2);
-l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__1 = _init_l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__1();
-l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__2 = _init_l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__2();
-lean_mark_persistent(l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__2___closed__2);
+l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5___closed__1 = _init_l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5___closed__1();
+lean_mark_persistent(l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__5___closed__1);
+l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__1 = _init_l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__1();
+l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__2 = _init_l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__2();
+lean_mark_persistent(l_Lean_addTrace___at_Lean_Meta_Grind_Preprocessor_preprocess___spec__7___closed__2);
 l_Lean_Meta_Grind_Preprocessor_preprocess___closed__1 = _init_l_Lean_Meta_Grind_Preprocessor_preprocess___closed__1();
 lean_mark_persistent(l_Lean_Meta_Grind_Preprocessor_preprocess___closed__1);
 l_Lean_Meta_Grind_Preprocessor_preprocess___closed__2 = _init_l_Lean_Meta_Grind_Preprocessor_preprocess___closed__2();
@@ -7316,6 +8614,8 @@ l_Lean_Meta_Grind_Preprocessor_preprocess___closed__5 = _init_l_Lean_Meta_Grind_
 lean_mark_persistent(l_Lean_Meta_Grind_Preprocessor_preprocess___closed__5);
 l_Lean_Meta_Grind_Preprocessor_preprocess___closed__6 = _init_l_Lean_Meta_Grind_Preprocessor_preprocess___closed__6();
 lean_mark_persistent(l_Lean_Meta_Grind_Preprocessor_preprocess___closed__6);
+l_Lean_Meta_Grind_main___closed__1 = _init_l_Lean_Meta_Grind_main___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_main___closed__1);
 return lean_io_result_mk_ok(lean_box(0));
 }
 #ifdef __cplusplus
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Grind/Proj.c b/stage0/stdlib/Lean/Meta/Tactic/Grind/Proj.c
new file mode 100644
index 000000000000..6ca513b78b78
--- /dev/null
+++ b/stage0/stdlib/Lean/Meta/Tactic/Grind/Proj.c
@@ -0,0 +1,632 @@
+// Lean compiler output
+// Module: Lean.Meta.Tactic.Grind.Proj
+// Imports: Lean.ProjFns Lean.Meta.Tactic.Grind.Types Lean.Meta.Tactic.Grind.Internalize
+#include <lean/lean.h>
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Wunused-parameter"
+#pragma clang diagnostic ignored "-Wunused-label"
+#elif defined(__GNUC__) && !defined(__CLANG__)
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#pragma GCC diagnostic ignored "-Wunused-label"
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateProjEq___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_object*, lean_object*);
+lean_object* l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateProjEq___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*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_pushEqCore(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint8_t l_Lean_Expr_isAppOf(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateProjEq___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* l_Lean_Expr_appArg_x21(lean_object*);
+static lean_object* l_Lean_getProjectionFnInfo_x3f___at_Lean_Meta_Grind_propagateProjEq___spec__1___closed__1;
+extern lean_object* l_Lean_projectionFnInfoExt;
+lean_object* l_Lean_Meta_Grind_getRoot(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_getRevArg_x21(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateProjEq___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_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateProjEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* lean_st_ref_get(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_getProjectionFnInfo_x3f___at_Lean_Meta_Grind_propagateProjEq___spec__1(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_getProjectionFnInfo_x3f___at_Lean_Meta_Grind_propagateProjEq___spec__1___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_Meta_Grind_getGeneration(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint8_t l_Lean_Meta_Grind_isSameExpr_unsafe__1(lean_object*, lean_object*);
+lean_object* l_Lean_MapDeclarationExtension_find_x3f___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Expr_appFn_x21(lean_object*);
+extern lean_object* l_Lean_instInhabitedProjectionFunctionInfo;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateProjEq___lambda__3(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_app___override(lean_object*, lean_object*);
+uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_shareCommon(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
+lean_object* l_Lean_Meta_mkEqRefl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* lean_nat_sub(lean_object*, lean_object*);
+lean_object* l_Lean_Expr_getAppFn(lean_object*);
+lean_object* lean_nat_add(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateProjEq___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_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_internalize(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* _init_l_Lean_getProjectionFnInfo_x3f___at_Lean_Meta_Grind_propagateProjEq___spec__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_projectionFnInfoExt;
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_getProjectionFnInfo_x3f___at_Lean_Meta_Grind_propagateProjEq___spec__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:
+{
+lean_object* x_11; uint8_t x_12; 
+x_11 = lean_st_ref_get(x_9, x_10);
+x_12 = !lean_is_exclusive(x_11);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; 
+x_13 = lean_ctor_get(x_11, 0);
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+lean_dec(x_13);
+x_15 = l_Lean_instInhabitedProjectionFunctionInfo;
+x_16 = l_Lean_getProjectionFnInfo_x3f___at_Lean_Meta_Grind_propagateProjEq___spec__1___closed__1;
+x_17 = l_Lean_MapDeclarationExtension_find_x3f___rarg(x_15, x_16, x_14, x_1);
+lean_dec(x_14);
+lean_ctor_set(x_11, 0, x_17);
+return x_11;
+}
+else
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_18 = lean_ctor_get(x_11, 0);
+x_19 = lean_ctor_get(x_11, 1);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_dec(x_11);
+x_20 = lean_ctor_get(x_18, 0);
+lean_inc(x_20);
+lean_dec(x_18);
+x_21 = l_Lean_instInhabitedProjectionFunctionInfo;
+x_22 = l_Lean_getProjectionFnInfo_x3f___at_Lean_Meta_Grind_propagateProjEq___spec__1___closed__1;
+x_23 = l_Lean_MapDeclarationExtension_find_x3f___rarg(x_21, x_22, x_20, x_1);
+lean_dec(x_20);
+x_24 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_24, 0, x_23);
+lean_ctor_set(x_24, 1, x_19);
+return x_24;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateProjEq___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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_14 = lean_unsigned_to_nat(0u);
+x_15 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_14);
+x_16 = lean_nat_sub(x_15, x_2);
+lean_dec(x_15);
+x_17 = lean_unsigned_to_nat(1u);
+x_18 = lean_nat_sub(x_16, x_17);
+lean_dec(x_16);
+x_19 = l_Lean_Expr_getRevArg_x21(x_1, x_18);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_19);
+x_20 = l_Lean_Meta_mkEqRefl(x_19, x_9, x_10, x_11, x_12, x_13);
+if (lean_obj_tag(x_20) == 0)
+{
+lean_object* x_21; lean_object* x_22; uint8_t x_23; lean_object* x_24; 
+x_21 = lean_ctor_get(x_20, 0);
+lean_inc(x_21);
+x_22 = lean_ctor_get(x_20, 1);
+lean_inc(x_22);
+lean_dec(x_20);
+x_23 = 0;
+x_24 = l_Lean_Meta_Grind_pushEqCore(x_3, x_19, x_21, x_23, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_22);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+return x_24;
+}
+else
+{
+uint8_t x_25; 
+lean_dec(x_19);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_3);
+x_25 = !lean_is_exclusive(x_20);
+if (x_25 == 0)
+{
+return x_20;
+}
+else
+{
+lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_26 = lean_ctor_get(x_20, 0);
+x_27 = lean_ctor_get(x_20, 1);
+lean_inc(x_27);
+lean_inc(x_26);
+lean_dec(x_20);
+x_28 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_28, 0, x_26);
+lean_ctor_set(x_28, 1, x_27);
+return x_28;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateProjEq___lambda__2(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+uint8_t x_15; 
+x_15 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_2);
+if (x_15 == 0)
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_16 = l_Lean_Expr_appFn_x21(x_3);
+x_17 = l_Lean_Expr_app___override(x_16, x_2);
+x_18 = l_Lean_Meta_Grind_shareCommon(x_17, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+x_19 = lean_ctor_get(x_18, 0);
+lean_inc(x_19);
+x_20 = lean_ctor_get(x_18, 1);
+lean_inc(x_20);
+lean_dec(x_18);
+x_21 = l_Lean_Meta_Grind_getGeneration(x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_20);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_22 = lean_ctor_get(x_21, 0);
+lean_inc(x_22);
+x_23 = lean_ctor_get(x_21, 1);
+lean_inc(x_23);
+lean_dec(x_21);
+x_24 = l_Lean_Meta_Grind_internalize(x_19, x_22, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_23);
+return x_24;
+}
+else
+{
+uint8_t x_25; 
+lean_dec(x_19);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+x_25 = !lean_is_exclusive(x_21);
+if (x_25 == 0)
+{
+return x_21;
+}
+else
+{
+lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_26 = lean_ctor_get(x_21, 0);
+x_27 = lean_ctor_get(x_21, 1);
+lean_inc(x_27);
+lean_inc(x_26);
+lean_dec(x_21);
+x_28 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_28, 0, x_26);
+lean_ctor_set(x_28, 1, x_27);
+return x_28;
+}
+}
+}
+else
+{
+lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; uint8_t x_34; 
+x_29 = lean_ctor_get(x_4, 1);
+x_30 = lean_ctor_get(x_4, 2);
+x_31 = lean_nat_add(x_29, x_30);
+x_32 = lean_unsigned_to_nat(0u);
+x_33 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_2, x_32);
+x_34 = lean_nat_dec_lt(x_31, x_33);
+lean_dec(x_33);
+if (x_34 == 0)
+{
+lean_object* x_35; lean_object* x_36; 
+lean_dec(x_31);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_3);
+lean_dec(x_2);
+x_35 = lean_box(0);
+x_36 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_36, 0, x_35);
+lean_ctor_set(x_36, 1, x_14);
+return x_36;
+}
+else
+{
+lean_object* x_37; lean_object* x_38; 
+x_37 = lean_box(0);
+x_38 = l_Lean_Meta_Grind_propagateProjEq___lambda__1(x_2, x_31, x_3, x_37, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_31);
+lean_dec(x_2);
+return x_38;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateProjEq___lambda__3(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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; lean_object* x_14; 
+x_13 = l_Lean_Expr_appArg_x21(x_1);
+lean_inc(x_13);
+x_14 = l_Lean_Meta_Grind_getRoot(x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_14) == 0)
+{
+uint8_t x_15; 
+x_15 = !lean_is_exclusive(x_14);
+if (x_15 == 0)
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; 
+x_16 = lean_ctor_get(x_14, 0);
+x_17 = lean_ctor_get(x_14, 1);
+x_18 = lean_ctor_get(x_2, 0);
+x_19 = l_Lean_Expr_isAppOf(x_16, x_18);
+if (x_19 == 0)
+{
+lean_object* x_20; 
+lean_dec(x_16);
+lean_dec(x_13);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_1);
+x_20 = lean_box(0);
+lean_ctor_set(x_14, 0, x_20);
+return x_14;
+}
+else
+{
+lean_object* x_21; lean_object* x_22; 
+lean_free_object(x_14);
+x_21 = lean_box(0);
+x_22 = l_Lean_Meta_Grind_propagateProjEq___lambda__2(x_13, x_16, x_1, x_2, x_21, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_17);
+lean_dec(x_13);
+return x_22;
+}
+}
+else
+{
+lean_object* x_23; lean_object* x_24; lean_object* x_25; uint8_t x_26; 
+x_23 = lean_ctor_get(x_14, 0);
+x_24 = lean_ctor_get(x_14, 1);
+lean_inc(x_24);
+lean_inc(x_23);
+lean_dec(x_14);
+x_25 = lean_ctor_get(x_2, 0);
+x_26 = l_Lean_Expr_isAppOf(x_23, x_25);
+if (x_26 == 0)
+{
+lean_object* x_27; lean_object* x_28; 
+lean_dec(x_23);
+lean_dec(x_13);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_1);
+x_27 = lean_box(0);
+x_28 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_28, 0, x_27);
+lean_ctor_set(x_28, 1, x_24);
+return x_28;
+}
+else
+{
+lean_object* x_29; lean_object* x_30; 
+x_29 = lean_box(0);
+x_30 = l_Lean_Meta_Grind_propagateProjEq___lambda__2(x_13, x_23, x_1, x_2, x_29, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_24);
+lean_dec(x_13);
+return x_30;
+}
+}
+}
+else
+{
+uint8_t x_31; 
+lean_dec(x_13);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_1);
+x_31 = !lean_is_exclusive(x_14);
+if (x_31 == 0)
+{
+return x_14;
+}
+else
+{
+lean_object* x_32; lean_object* x_33; lean_object* x_34; 
+x_32 = lean_ctor_get(x_14, 0);
+x_33 = lean_ctor_get(x_14, 1);
+lean_inc(x_33);
+lean_inc(x_32);
+lean_dec(x_14);
+x_34 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_34, 0, x_32);
+lean_ctor_set(x_34, 1, x_33);
+return x_34;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateProjEq(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:
+{
+lean_object* x_11; 
+x_11 = l_Lean_Expr_getAppFn(x_1);
+if (lean_obj_tag(x_11) == 4)
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; 
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+lean_dec(x_11);
+x_13 = l_Lean_getProjectionFnInfo_x3f___at_Lean_Meta_Grind_propagateProjEq___spec__1(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+if (lean_obj_tag(x_14) == 0)
+{
+uint8_t x_15; 
+lean_dec(x_9);
+lean_dec(x_8);
+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_15 = !lean_is_exclusive(x_13);
+if (x_15 == 0)
+{
+lean_object* x_16; lean_object* x_17; 
+x_16 = lean_ctor_get(x_13, 0);
+lean_dec(x_16);
+x_17 = lean_box(0);
+lean_ctor_set(x_13, 0, x_17);
+return x_13;
+}
+else
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_18 = lean_ctor_get(x_13, 1);
+lean_inc(x_18);
+lean_dec(x_13);
+x_19 = lean_box(0);
+x_20 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_20, 0, x_19);
+lean_ctor_set(x_20, 1, x_18);
+return x_20;
+}
+}
+else
+{
+uint8_t x_21; 
+x_21 = !lean_is_exclusive(x_13);
+if (x_21 == 0)
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; uint8_t x_30; 
+x_22 = lean_ctor_get(x_13, 1);
+x_23 = lean_ctor_get(x_13, 0);
+lean_dec(x_23);
+x_24 = lean_ctor_get(x_14, 0);
+lean_inc(x_24);
+lean_dec(x_14);
+x_25 = lean_ctor_get(x_24, 1);
+lean_inc(x_25);
+x_26 = lean_unsigned_to_nat(1u);
+x_27 = lean_nat_add(x_25, x_26);
+lean_dec(x_25);
+x_28 = lean_unsigned_to_nat(0u);
+x_29 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_28);
+x_30 = lean_nat_dec_eq(x_27, x_29);
+lean_dec(x_29);
+lean_dec(x_27);
+if (x_30 == 0)
+{
+lean_object* x_31; 
+lean_dec(x_24);
+lean_dec(x_9);
+lean_dec(x_8);
+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_31 = lean_box(0);
+lean_ctor_set(x_13, 0, x_31);
+return x_13;
+}
+else
+{
+lean_object* x_32; lean_object* x_33; 
+lean_free_object(x_13);
+x_32 = lean_box(0);
+x_33 = l_Lean_Meta_Grind_propagateProjEq___lambda__3(x_1, x_24, x_32, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_22);
+lean_dec(x_24);
+return x_33;
+}
+}
+else
+{
+lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; uint8_t x_41; 
+x_34 = lean_ctor_get(x_13, 1);
+lean_inc(x_34);
+lean_dec(x_13);
+x_35 = lean_ctor_get(x_14, 0);
+lean_inc(x_35);
+lean_dec(x_14);
+x_36 = lean_ctor_get(x_35, 1);
+lean_inc(x_36);
+x_37 = lean_unsigned_to_nat(1u);
+x_38 = lean_nat_add(x_36, x_37);
+lean_dec(x_36);
+x_39 = lean_unsigned_to_nat(0u);
+x_40 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_39);
+x_41 = lean_nat_dec_eq(x_38, x_40);
+lean_dec(x_40);
+lean_dec(x_38);
+if (x_41 == 0)
+{
+lean_object* x_42; lean_object* x_43; 
+lean_dec(x_35);
+lean_dec(x_9);
+lean_dec(x_8);
+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_42 = lean_box(0);
+x_43 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_43, 0, x_42);
+lean_ctor_set(x_43, 1, x_34);
+return x_43;
+}
+else
+{
+lean_object* x_44; lean_object* x_45; 
+x_44 = lean_box(0);
+x_45 = l_Lean_Meta_Grind_propagateProjEq___lambda__3(x_1, x_35, x_44, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_34);
+lean_dec(x_35);
+return x_45;
+}
+}
+}
+}
+else
+{
+lean_object* x_46; lean_object* x_47; 
+lean_dec(x_11);
+lean_dec(x_9);
+lean_dec(x_8);
+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_46 = lean_box(0);
+x_47 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_47, 0, x_46);
+lean_ctor_set(x_47, 1, x_10);
+return x_47;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_getProjectionFnInfo_x3f___at_Lean_Meta_Grind_propagateProjEq___spec__1___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l_Lean_getProjectionFnInfo_x3f___at_Lean_Meta_Grind_propagateProjEq___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_11;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateProjEq___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; 
+x_14 = l_Lean_Meta_Grind_propagateProjEq___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateProjEq___lambda__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+lean_object* x_15; 
+x_15 = l_Lean_Meta_Grind_propagateProjEq___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_1);
+return x_15;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateProjEq___lambda__3___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l_Lean_Meta_Grind_propagateProjEq___lambda__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_13;
+}
+}
+lean_object* initialize_Lean_ProjFns(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind_Types(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind_Internalize(uint8_t builtin, lean_object*);
+static bool _G_initialized = false;
+LEAN_EXPORT lean_object* initialize_Lean_Meta_Tactic_Grind_Proj(uint8_t builtin, lean_object* w) {
+lean_object * res;
+if (_G_initialized) return lean_io_result_mk_ok(lean_box(0));
+_G_initialized = true;
+res = initialize_Lean_ProjFns(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+res = initialize_Lean_Meta_Tactic_Grind_Types(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+res = initialize_Lean_Meta_Tactic_Grind_Internalize(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+l_Lean_getProjectionFnInfo_x3f___at_Lean_Meta_Grind_propagateProjEq___spec__1___closed__1 = _init_l_Lean_getProjectionFnInfo_x3f___at_Lean_Meta_Grind_propagateProjEq___spec__1___closed__1();
+lean_mark_persistent(l_Lean_getProjectionFnInfo_x3f___at_Lean_Meta_Grind_propagateProjEq___spec__1___closed__1);
+return lean_io_result_mk_ok(lean_box(0));
+}
+#ifdef __cplusplus
+}
+#endif
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Grind/Proof.c b/stage0/stdlib/Lean/Meta/Tactic/Grind/Proof.c
index dac82a9d0471..9d09fa98773f 100644
--- a/stage0/stdlib/Lean/Meta/Tactic/Grind/Proof.c
+++ b/stage0/stdlib/Lean/Meta/Tactic/Grind/Proof.c
@@ -13,258 +13,10133 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
-lean_object* l_Lean_Meta_mkSorry(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqTrueProof___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_Meta_isExprDefEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProof___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* l_Lean_Meta_Grind_getFalseExpr___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqFalseProof___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_Meta_Grind_getTrueExpr___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Expr_const___override(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon(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_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___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*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__3;
+static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__4;
+static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__5;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__6;
+static lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___closed__3;
+lean_object* l_Lean_mkAppN(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget_loop___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_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__3___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__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_withLocalDecl___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___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_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget___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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___lambda__1___closed__1;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__5;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__12;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__2;
+static lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__2;
+lean_object* l_Lean_Meta_mkEqSymm(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkRefl___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__6;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_flipProof___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint8_t l_Lean_Expr_isApp(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_withLocalDecl___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___spec__1___rarg(lean_object*, uint8_t, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint8_t l_Lean_RBNode_isRed___rarg(lean_object*);
+lean_object* l_Lean_Expr_sort___override(lean_object*);
+lean_object* l_Lean_PersistentArray_push___rarg(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__4;
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___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_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___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_object*, lean_object*, lean_object*);
+lean_object* lean_mk_array(lean_object*, lean_object*);
+static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__1;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___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_array_fget(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___closed__7;
+LEAN_EXPORT lean_object* l_Lean_Meta_withLocalDecl___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___spec__1___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_object* l_Lean_Meta_mkHEqOfEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_mkEqProofImpl___closed__2;
+static lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___closed__2;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___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_object*);
+static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__2;
+static lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___closed__5;
+uint8_t l_Lean_Expr_isAppOf(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__1;
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__8(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_stringToMessageData(lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___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_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof_loop(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_appArg_x21(lean_object*);
+static lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___closed__1;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__3;
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___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*);
+extern lean_object* l_instInhabitedPUnit;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget_loop___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_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__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_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1(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* l_Lean_Name_mkStr3(lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___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_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___spec__1(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_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___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_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__3;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans_x27(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqOfHEqIfNeeded(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof_loop(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* lean_grind_mk_eq_proof(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_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___lambda__1___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___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__5;
+lean_object* lean_st_ref_take(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1(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*);
+static lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___closed__6;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___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*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans_x27___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint8_t lean_expr_eqv(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof___closed__1;
+lean_object* l_Lean_RBNode_setBlack___rarg(lean_object*);
+lean_object* l_Lean_Meta_getFunInfo(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___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_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_mkEqNDRec(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl___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_object* l_Lean_Meta_mkHEqRefl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l___private_Lean_Meta_Basic_0__Lean_Meta_withLocalDeclImp___rarg(lean_object*, uint8_t, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___lambda__3(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___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_flipProof___lambda__1(uint8_t, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l___private_Lean_CoreM_0__Lean_Core_mkFreshNameImp(lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_flipProof___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl___lambda__1(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___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__1;
+lean_object* l_outOfBounds___rarg(lean_object*);
+static lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___closed__8;
+lean_object* l_Lean_Meta_mkEqTrans(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_RBNode_find___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__6___boxed(lean_object*, lean_object*);
 lean_object* l_Lean_Meta_mkHEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* l_Lean_Meta_mkEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProof(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_Grind_mkEqFalseProof(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_Grind_mkEqTrueProof(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_mkCongrArg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__2;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__11;
+extern lean_object* l_Lean_levelZero;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_realizeEqProof(lean_object*, 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*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__7;
+extern lean_object* l_Lean_instInhabitedExpr;
+lean_object* l_Lean_Meta_whnfD(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__3;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_flipProof(lean_object*, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_panic___at_Lean_Expr_appFn_x21___spec__1(lean_object*);
+lean_object* l_Lean_Meta_Grind_mkHCongrWithArity(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__3;
+uint8_t l_Lean_Meta_Grind_isSameExpr_unsafe__1(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__1;
+LEAN_EXPORT lean_object* l_Lean_RBNode_find___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__6(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__13;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget___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_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof(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* l___private_Init_Util_0__mkPanicMessageWithDecl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_mkEqProofImpl___closed__1;
+lean_object* l_Lean_Expr_appFn_x21(lean_object*);
+extern lean_object* l_Lean_Meta_instMonadMetaM;
+LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__2;
+lean_object* l_Lean_Meta_Grind_hasSameType(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof_loop___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___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__8;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___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_object*);
+LEAN_EXPORT lean_object* l_Lean_RBNode_ins___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__2(lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_MessageData_ofExpr(lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___closed__1;
+LEAN_EXPORT lean_object* l_Lean_RBNode_insert___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__1(lean_object*, lean_object*, lean_object*);
+double l_Float_ofScientific(lean_object*, uint8_t, lean_object*);
+lean_object* l_Lean_Meta_mkCongr(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget___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_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__8___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*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__2;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom(lean_object*, 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_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7(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_Lean_Meta_Grind_mkHEqProof(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_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+extern uint8_t l_Lean_Meta_instInhabitedCongrArgKind;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__10;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_realizeEqProof___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*);
+uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
+lean_object* l_Lean_mkApp3(lean_object*, lean_object*, lean_object*, lean_object*);
+uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget_loop___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*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof___closed__2;
+static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___spec__1___closed__1;
+lean_object* l_Lean_Name_mkStr2(lean_object*, lean_object*);
+lean_object* l_Lean_Meta_mkEqRefl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr(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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget(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_EXPORT lean_object* l_Lean_Meta_withLocalDecl___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___spec__1(lean_object*);
+uint8_t l_Lean_Expr_isConstOf(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___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*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__2;
+lean_object* l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static double l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__1;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof(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_panic_fn(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___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_object*);
+lean_object* lean_nat_sub(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__1;
+lean_object* l_Lean_Expr_getAppFn(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__1(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_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqOfHEqIfNeeded___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__1;
+lean_object* l_Lean_Meta_Grind_getENode(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_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__4;
+LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__9(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* lean_array_mk(lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__2;
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__3___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__4(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_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__3;
+lean_object* l_Lean_Meta_mkCongrFun(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo(lean_object*, 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* l_Lean_isTracingEnabledForCore(lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_mkEqOfHEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__3___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___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__4;
+lean_object* l_instInhabitedOfMonad___rarg(lean_object*, lean_object*);
+lean_object* lean_st_ref_set(lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1;
+static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__9___closed__1;
+lean_object* l___private_Lean_Expr_0__Lean_Expr_getAppArgsAux(lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___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*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__3;
+lean_object* lean_string_append(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___closed__4;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkRefl(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_mkHEqTrans(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* lean_array_get_size(lean_object*);
+lean_object* l_Lean_Meta_Grind_getRootENode(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__3;
 lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProof(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, lean_object* x_11) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget_loop(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*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__1;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof_loop___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* 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*);
+extern lean_object* l_Lean_Meta_Grind_congrPlaceholderProof;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___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_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__4;
+static lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__3;
+lean_object* l_Lean_mkApp5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___lambda__1___closed__1;
+LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__1___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_Grind_mkEqProofImpl_go(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_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___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_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__9;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__2;
+lean_object* l_Lean_Meta_mkHEqSymm(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_ReaderT_instMonad___rarg(lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___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_EXPORT lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___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* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof___closed__1() {
 _start:
 {
-lean_object* x_12; 
-lean_inc(x_10);
-lean_inc(x_9);
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Eq", 2, 2);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof(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:
+{
+lean_object* x_7; 
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+lean_inc(x_2);
+x_7 = lean_infer_type(x_1, x_2, x_3, x_4, x_5, x_6);
+if (lean_obj_tag(x_7) == 0)
+{
+lean_object* x_8; lean_object* x_9; lean_object* x_10; 
+x_8 = lean_ctor_get(x_7, 0);
 lean_inc(x_8);
+x_9 = lean_ctor_get(x_7, 1);
+lean_inc(x_9);
+lean_dec(x_7);
+x_10 = l_Lean_Meta_whnfD(x_8, x_2, x_3, x_4, x_5, x_9);
+if (lean_obj_tag(x_10) == 0)
+{
+uint8_t x_11; 
+x_11 = !lean_is_exclusive(x_10);
+if (x_11 == 0)
+{
+lean_object* x_12; lean_object* x_13; uint8_t x_14; lean_object* x_15; 
+x_12 = lean_ctor_get(x_10, 0);
+x_13 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof___closed__2;
+x_14 = l_Lean_Expr_isAppOf(x_12, x_13);
+lean_dec(x_12);
+x_15 = lean_box(x_14);
+lean_ctor_set(x_10, 0, x_15);
+return x_10;
+}
+else
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; lean_object* x_20; lean_object* x_21; 
+x_16 = lean_ctor_get(x_10, 0);
+x_17 = lean_ctor_get(x_10, 1);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_dec(x_10);
+x_18 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof___closed__2;
+x_19 = l_Lean_Expr_isAppOf(x_16, x_18);
+lean_dec(x_16);
+x_20 = lean_box(x_19);
+x_21 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_21, 0, x_20);
+lean_ctor_set(x_21, 1, x_17);
+return x_21;
+}
+}
+else
+{
+uint8_t x_22; 
+x_22 = !lean_is_exclusive(x_10);
+if (x_22 == 0)
+{
+return x_10;
+}
+else
+{
+lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+x_23 = lean_ctor_get(x_10, 0);
+x_24 = lean_ctor_get(x_10, 1);
+lean_inc(x_24);
+lean_inc(x_23);
+lean_dec(x_10);
+x_25 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_25, 0, x_23);
+lean_ctor_set(x_25, 1, x_24);
+return x_25;
+}
+}
+}
+else
+{
+uint8_t x_26; 
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_26 = !lean_is_exclusive(x_7);
+if (x_26 == 0)
+{
+return x_7;
+}
+else
+{
+lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_27 = lean_ctor_get(x_7, 0);
+x_28 = lean_ctor_get(x_7, 1);
+lean_inc(x_28);
+lean_inc(x_27);
+lean_dec(x_7);
+x_29 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_29, 0, x_27);
+lean_ctor_set(x_29, 1, x_28);
+return x_29;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_flipProof___lambda__1(uint8_t x_1, uint8_t 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:
+{
+if (x_1 == 0)
+{
+lean_object* x_10; 
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+x_10 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_10, 0, x_3);
+lean_ctor_set(x_10, 1, x_9);
+return x_10;
+}
+else
+{
+if (x_2 == 0)
+{
+lean_object* x_11; 
+x_11 = l_Lean_Meta_mkEqSymm(x_3, x_5, x_6, x_7, x_8, x_9);
+return x_11;
+}
+else
+{
+lean_object* x_12; 
+x_12 = l_Lean_Meta_mkHEqSymm(x_3, x_5, x_6, x_7, x_8, x_9);
+return x_12;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_flipProof(lean_object* x_1, uint8_t x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
+_start:
+{
+if (x_3 == 0)
+{
+lean_object* x_9; lean_object* x_10; 
+x_9 = lean_box(0);
+x_10 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_flipProof___lambda__1(x_2, x_3, x_1, x_9, x_4, x_5, x_6, x_7, x_8);
+return x_10;
+}
+else
+{
+lean_object* x_11; 
 lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
 lean_inc(x_1);
-x_12 = lean_infer_type(x_1, x_7, x_8, x_9, x_10, x_11);
-if (lean_obj_tag(x_12) == 0)
+x_11 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof(x_1, x_4, x_5, x_6, x_7, x_8);
+if (lean_obj_tag(x_11) == 0)
 {
-lean_object* x_13; lean_object* x_14; lean_object* x_15; 
-x_13 = lean_ctor_get(x_12, 0);
-lean_inc(x_13);
-x_14 = lean_ctor_get(x_12, 1);
-lean_inc(x_14);
+lean_object* x_12; uint8_t x_13; 
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+x_13 = lean_unbox(x_12);
 lean_dec(x_12);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_2);
-x_15 = lean_infer_type(x_2, x_7, x_8, x_9, x_10, x_14);
-if (lean_obj_tag(x_15) == 0)
+if (x_13 == 0)
 {
-lean_object* x_16; lean_object* x_17; lean_object* x_18; 
-x_16 = lean_ctor_get(x_15, 0);
-lean_inc(x_16);
-x_17 = lean_ctor_get(x_15, 1);
+lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_14 = lean_ctor_get(x_11, 1);
+lean_inc(x_14);
+lean_dec(x_11);
+x_15 = lean_box(0);
+x_16 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_flipProof___lambda__1(x_2, x_3, x_1, x_15, x_4, x_5, x_6, x_7, x_14);
+return x_16;
+}
+else
+{
+lean_object* x_17; lean_object* x_18; 
+x_17 = lean_ctor_get(x_11, 1);
 lean_inc(x_17);
-lean_dec(x_15);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
+lean_dec(x_11);
 lean_inc(x_7);
-x_18 = l_Lean_Meta_isExprDefEq(x_13, x_16, x_7, x_8, x_9, x_10, x_17);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_18 = l_Lean_Meta_mkHEqOfEq(x_1, x_4, x_5, x_6, x_7, x_17);
 if (lean_obj_tag(x_18) == 0)
 {
-lean_object* x_19; uint8_t x_20; 
+lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; 
 x_19 = lean_ctor_get(x_18, 0);
 lean_inc(x_19);
-x_20 = lean_unbox(x_19);
-lean_dec(x_19);
-if (x_20 == 0)
+x_20 = lean_ctor_get(x_18, 1);
+lean_inc(x_20);
+lean_dec(x_18);
+x_21 = lean_box(0);
+x_22 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_flipProof___lambda__1(x_2, x_3, x_19, x_21, x_4, x_5, x_6, x_7, x_20);
+return x_22;
+}
+else
 {
-lean_object* x_21; lean_object* x_22; 
-x_21 = lean_ctor_get(x_18, 1);
-lean_inc(x_21);
+uint8_t x_23; 
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_23 = !lean_is_exclusive(x_18);
+if (x_23 == 0)
+{
+return x_18;
+}
+else
+{
+lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+x_24 = lean_ctor_get(x_18, 0);
+x_25 = lean_ctor_get(x_18, 1);
+lean_inc(x_25);
+lean_inc(x_24);
 lean_dec(x_18);
+x_26 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_26, 0, x_24);
+lean_ctor_set(x_26, 1, x_25);
+return x_26;
+}
+}
+}
+}
+else
+{
+uint8_t x_27; 
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_1);
+x_27 = !lean_is_exclusive(x_11);
+if (x_27 == 0)
+{
+return x_11;
+}
+else
+{
+lean_object* x_28; lean_object* x_29; lean_object* x_30; 
+x_28 = lean_ctor_get(x_11, 0);
+x_29 = lean_ctor_get(x_11, 1);
+lean_inc(x_29);
+lean_inc(x_28);
+lean_dec(x_11);
+x_30 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_30, 0, x_28);
+lean_ctor_set(x_30, 1, x_29);
+return x_30;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_flipProof___lambda__1___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:
+{
+uint8_t x_10; uint8_t x_11; lean_object* x_12; 
+x_10 = lean_unbox(x_1);
+lean_dec(x_1);
+x_11 = lean_unbox(x_2);
+lean_dec(x_2);
+x_12 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_flipProof___lambda__1(x_10, x_11, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+lean_dec(x_4);
+return x_12;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_flipProof___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) {
+_start:
+{
+uint8_t x_9; uint8_t x_10; lean_object* x_11; 
+x_9 = lean_unbox(x_2);
+lean_dec(x_2);
+x_10 = lean_unbox(x_3);
+lean_dec(x_3);
+x_11 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_flipProof(x_1, x_9, x_10, x_4, x_5, x_6, x_7, x_8);
+return x_11;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkRefl(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
+_start:
+{
+if (x_2 == 0)
+{
+lean_object* x_8; 
+x_8 = l_Lean_Meta_mkEqRefl(x_1, x_3, x_4, x_5, x_6, x_7);
+return x_8;
+}
+else
+{
+lean_object* x_9; 
+x_9 = l_Lean_Meta_mkHEqRefl(x_1, x_3, x_4, x_5, x_6, x_7);
+return x_9;
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkRefl___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) {
+_start:
+{
+uint8_t x_8; lean_object* x_9; 
+x_8 = lean_unbox(x_2);
+lean_dec(x_2);
+x_9 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkRefl(x_1, x_8, x_3, x_4, x_5, x_6, x_7);
+return x_9;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
+_start:
+{
+if (x_3 == 0)
+{
+lean_object* x_9; 
+x_9 = l_Lean_Meta_mkEqTrans(x_1, x_2, x_4, x_5, x_6, x_7, x_8);
+return x_9;
+}
+else
+{
+lean_object* x_10; 
+x_10 = l_Lean_Meta_mkHEqTrans(x_1, x_2, x_4, x_5, x_6, x_7, x_8);
+return x_10;
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans___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) {
+_start:
+{
+uint8_t x_9; lean_object* x_10; 
+x_9 = lean_unbox(x_3);
+lean_dec(x_3);
+x_10 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans(x_1, x_2, x_9, x_4, x_5, x_6, x_7, x_8);
+return x_10;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans_x27(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
+_start:
+{
+if (lean_obj_tag(x_1) == 0)
+{
+lean_object* x_9; 
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_9 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_9, 0, x_2);
+lean_ctor_set(x_9, 1, x_8);
+return x_9;
+}
+else
+{
+lean_object* x_10; lean_object* x_11; 
+x_10 = lean_ctor_get(x_1, 0);
 lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-x_22 = l_Lean_Meta_mkHEq(x_1, x_2, x_7, x_8, x_9, x_10, x_21);
-if (lean_obj_tag(x_22) == 0)
+lean_dec(x_1);
+x_11 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans(x_10, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
+return x_11;
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans_x27___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) {
+_start:
+{
+uint8_t x_9; lean_object* x_10; 
+x_9 = lean_unbox(x_3);
+lean_dec(x_3);
+x_10 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans_x27(x_1, x_2, x_9, x_4, x_5, x_6, x_7, x_8);
+return x_10;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqOfHEqIfNeeded(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
+_start:
+{
+if (x_2 == 0)
+{
+lean_object* x_8; 
+x_8 = l_Lean_Meta_mkEqOfHEq(x_1, x_3, x_4, x_5, x_6, x_7);
+return x_8;
+}
+else
+{
+lean_object* x_9; 
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_9 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_9, 0, x_1);
+lean_ctor_set(x_9, 1, x_7);
+return x_9;
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqOfHEqIfNeeded___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) {
+_start:
+{
+uint8_t x_8; lean_object* x_9; 
+x_8 = lean_unbox(x_2);
+lean_dec(x_2);
+x_9 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqOfHEqIfNeeded(x_1, x_8, x_3, x_4, x_5, x_6, x_7);
+return x_9;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_RBNode_ins___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__2(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
+_start:
+{
+if (lean_obj_tag(x_1) == 0)
+{
+lean_object* x_4; uint8_t x_5; lean_object* x_6; 
+x_4 = lean_box(0);
+x_5 = 0;
+x_6 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_6, 0, x_4);
+lean_ctor_set(x_6, 1, x_2);
+lean_ctor_set(x_6, 2, x_3);
+lean_ctor_set(x_6, 3, x_4);
+lean_ctor_set_uint8(x_6, sizeof(void*)*4, x_5);
+return x_6;
+}
+else
+{
+uint8_t x_7; 
+x_7 = lean_ctor_get_uint8(x_1, sizeof(void*)*4);
+if (x_7 == 0)
+{
+uint8_t x_8; 
+x_8 = !lean_is_exclusive(x_1);
+if (x_8 == 0)
+{
+lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13; 
+x_9 = lean_ctor_get(x_1, 0);
+x_10 = lean_ctor_get(x_1, 1);
+x_11 = lean_ctor_get(x_1, 2);
+x_12 = lean_ctor_get(x_1, 3);
+x_13 = lean_nat_dec_lt(x_2, x_10);
+if (x_13 == 0)
+{
+uint8_t x_14; 
+x_14 = lean_nat_dec_eq(x_2, x_10);
+if (x_14 == 0)
+{
+lean_object* x_15; uint8_t x_16; 
+x_15 = l_Lean_RBNode_ins___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__2(x_12, x_2, x_3);
+x_16 = 0;
+lean_ctor_set(x_1, 3, x_15);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_16);
+return x_1;
+}
+else
+{
+uint8_t x_17; 
+lean_dec(x_11);
+lean_dec(x_10);
+x_17 = 0;
+lean_ctor_set(x_1, 2, x_3);
+lean_ctor_set(x_1, 1, x_2);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_17);
+return x_1;
+}
+}
+else
+{
+lean_object* x_18; uint8_t x_19; 
+x_18 = l_Lean_RBNode_ins___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__2(x_9, x_2, x_3);
+x_19 = 0;
+lean_ctor_set(x_1, 0, x_18);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_19);
+return x_1;
+}
+}
+else
+{
+lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; uint8_t x_24; 
+x_20 = lean_ctor_get(x_1, 0);
+x_21 = lean_ctor_get(x_1, 1);
+x_22 = lean_ctor_get(x_1, 2);
+x_23 = lean_ctor_get(x_1, 3);
+lean_inc(x_23);
+lean_inc(x_22);
+lean_inc(x_21);
+lean_inc(x_20);
+lean_dec(x_1);
+x_24 = lean_nat_dec_lt(x_2, x_21);
+if (x_24 == 0)
+{
+uint8_t x_25; 
+x_25 = lean_nat_dec_eq(x_2, x_21);
+if (x_25 == 0)
+{
+lean_object* x_26; uint8_t x_27; lean_object* x_28; 
+x_26 = l_Lean_RBNode_ins___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__2(x_23, x_2, x_3);
+x_27 = 0;
+x_28 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_28, 0, x_20);
+lean_ctor_set(x_28, 1, x_21);
+lean_ctor_set(x_28, 2, x_22);
+lean_ctor_set(x_28, 3, x_26);
+lean_ctor_set_uint8(x_28, sizeof(void*)*4, x_27);
+return x_28;
+}
+else
+{
+uint8_t x_29; lean_object* x_30; 
+lean_dec(x_22);
+lean_dec(x_21);
+x_29 = 0;
+x_30 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_30, 0, x_20);
+lean_ctor_set(x_30, 1, x_2);
+lean_ctor_set(x_30, 2, x_3);
+lean_ctor_set(x_30, 3, x_23);
+lean_ctor_set_uint8(x_30, sizeof(void*)*4, x_29);
+return x_30;
+}
+}
+else
+{
+lean_object* x_31; uint8_t x_32; lean_object* x_33; 
+x_31 = l_Lean_RBNode_ins___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__2(x_20, x_2, x_3);
+x_32 = 0;
+x_33 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_33, 0, x_31);
+lean_ctor_set(x_33, 1, x_21);
+lean_ctor_set(x_33, 2, x_22);
+lean_ctor_set(x_33, 3, x_23);
+lean_ctor_set_uint8(x_33, sizeof(void*)*4, x_32);
+return x_33;
+}
+}
+}
+else
+{
+uint8_t x_34; 
+x_34 = !lean_is_exclusive(x_1);
+if (x_34 == 0)
+{
+lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; uint8_t x_39; 
+x_35 = lean_ctor_get(x_1, 0);
+x_36 = lean_ctor_get(x_1, 1);
+x_37 = lean_ctor_get(x_1, 2);
+x_38 = lean_ctor_get(x_1, 3);
+x_39 = lean_nat_dec_lt(x_2, x_36);
+if (x_39 == 0)
+{
+uint8_t x_40; 
+x_40 = lean_nat_dec_eq(x_2, x_36);
+if (x_40 == 0)
+{
+lean_object* x_41; uint8_t x_42; 
+x_41 = l_Lean_RBNode_ins___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__2(x_38, x_2, x_3);
+x_42 = lean_ctor_get_uint8(x_41, sizeof(void*)*4);
+if (x_42 == 0)
+{
+lean_object* x_43; 
+x_43 = lean_ctor_get(x_41, 0);
+lean_inc(x_43);
+if (lean_obj_tag(x_43) == 0)
+{
+lean_object* x_44; 
+x_44 = lean_ctor_get(x_41, 3);
+lean_inc(x_44);
+if (lean_obj_tag(x_44) == 0)
+{
+uint8_t x_45; 
+x_45 = !lean_is_exclusive(x_41);
+if (x_45 == 0)
+{
+lean_object* x_46; lean_object* x_47; uint8_t x_48; 
+x_46 = lean_ctor_get(x_41, 3);
+lean_dec(x_46);
+x_47 = lean_ctor_get(x_41, 0);
+lean_dec(x_47);
+lean_ctor_set(x_41, 0, x_44);
+x_48 = 1;
+lean_ctor_set(x_1, 3, x_41);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_48);
+return x_1;
+}
+else
+{
+lean_object* x_49; lean_object* x_50; lean_object* x_51; uint8_t x_52; 
+x_49 = lean_ctor_get(x_41, 1);
+x_50 = lean_ctor_get(x_41, 2);
+lean_inc(x_50);
+lean_inc(x_49);
+lean_dec(x_41);
+x_51 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_51, 0, x_44);
+lean_ctor_set(x_51, 1, x_49);
+lean_ctor_set(x_51, 2, x_50);
+lean_ctor_set(x_51, 3, x_44);
+lean_ctor_set_uint8(x_51, sizeof(void*)*4, x_42);
+x_52 = 1;
+lean_ctor_set(x_1, 3, x_51);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_52);
+return x_1;
+}
+}
+else
+{
+uint8_t x_53; 
+x_53 = lean_ctor_get_uint8(x_44, sizeof(void*)*4);
+if (x_53 == 0)
+{
+uint8_t x_54; 
+x_54 = !lean_is_exclusive(x_41);
+if (x_54 == 0)
+{
+lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; uint8_t x_59; 
+x_55 = lean_ctor_get(x_41, 1);
+x_56 = lean_ctor_get(x_41, 2);
+x_57 = lean_ctor_get(x_41, 3);
+lean_dec(x_57);
+x_58 = lean_ctor_get(x_41, 0);
+lean_dec(x_58);
+x_59 = !lean_is_exclusive(x_44);
+if (x_59 == 0)
+{
+lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; uint8_t x_64; uint8_t x_65; 
+x_60 = lean_ctor_get(x_44, 0);
+x_61 = lean_ctor_get(x_44, 1);
+x_62 = lean_ctor_get(x_44, 2);
+x_63 = lean_ctor_get(x_44, 3);
+x_64 = 1;
+lean_ctor_set(x_44, 3, x_43);
+lean_ctor_set(x_44, 2, x_37);
+lean_ctor_set(x_44, 1, x_36);
+lean_ctor_set(x_44, 0, x_35);
+lean_ctor_set_uint8(x_44, sizeof(void*)*4, x_64);
+lean_ctor_set(x_41, 3, x_63);
+lean_ctor_set(x_41, 2, x_62);
+lean_ctor_set(x_41, 1, x_61);
+lean_ctor_set(x_41, 0, x_60);
+lean_ctor_set_uint8(x_41, sizeof(void*)*4, x_64);
+x_65 = 0;
+lean_ctor_set(x_1, 3, x_41);
+lean_ctor_set(x_1, 2, x_56);
+lean_ctor_set(x_1, 1, x_55);
+lean_ctor_set(x_1, 0, x_44);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_65);
+return x_1;
+}
+else
+{
+lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; uint8_t x_70; lean_object* x_71; uint8_t x_72; 
+x_66 = lean_ctor_get(x_44, 0);
+x_67 = lean_ctor_get(x_44, 1);
+x_68 = lean_ctor_get(x_44, 2);
+x_69 = lean_ctor_get(x_44, 3);
+lean_inc(x_69);
+lean_inc(x_68);
+lean_inc(x_67);
+lean_inc(x_66);
+lean_dec(x_44);
+x_70 = 1;
+x_71 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_71, 0, x_35);
+lean_ctor_set(x_71, 1, x_36);
+lean_ctor_set(x_71, 2, x_37);
+lean_ctor_set(x_71, 3, x_43);
+lean_ctor_set_uint8(x_71, sizeof(void*)*4, x_70);
+lean_ctor_set(x_41, 3, x_69);
+lean_ctor_set(x_41, 2, x_68);
+lean_ctor_set(x_41, 1, x_67);
+lean_ctor_set(x_41, 0, x_66);
+lean_ctor_set_uint8(x_41, sizeof(void*)*4, x_70);
+x_72 = 0;
+lean_ctor_set(x_1, 3, x_41);
+lean_ctor_set(x_1, 2, x_56);
+lean_ctor_set(x_1, 1, x_55);
+lean_ctor_set(x_1, 0, x_71);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_72);
+return x_1;
+}
+}
+else
+{
+lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; uint8_t x_80; lean_object* x_81; lean_object* x_82; uint8_t x_83; 
+x_73 = lean_ctor_get(x_41, 1);
+x_74 = lean_ctor_get(x_41, 2);
+lean_inc(x_74);
+lean_inc(x_73);
+lean_dec(x_41);
+x_75 = lean_ctor_get(x_44, 0);
+lean_inc(x_75);
+x_76 = lean_ctor_get(x_44, 1);
+lean_inc(x_76);
+x_77 = lean_ctor_get(x_44, 2);
+lean_inc(x_77);
+x_78 = lean_ctor_get(x_44, 3);
+lean_inc(x_78);
+if (lean_is_exclusive(x_44)) {
+ lean_ctor_release(x_44, 0);
+ lean_ctor_release(x_44, 1);
+ lean_ctor_release(x_44, 2);
+ lean_ctor_release(x_44, 3);
+ x_79 = x_44;
+} else {
+ lean_dec_ref(x_44);
+ x_79 = lean_box(0);
+}
+x_80 = 1;
+if (lean_is_scalar(x_79)) {
+ x_81 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_81 = x_79;
+}
+lean_ctor_set(x_81, 0, x_35);
+lean_ctor_set(x_81, 1, x_36);
+lean_ctor_set(x_81, 2, x_37);
+lean_ctor_set(x_81, 3, x_43);
+lean_ctor_set_uint8(x_81, sizeof(void*)*4, x_80);
+x_82 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_82, 0, x_75);
+lean_ctor_set(x_82, 1, x_76);
+lean_ctor_set(x_82, 2, x_77);
+lean_ctor_set(x_82, 3, x_78);
+lean_ctor_set_uint8(x_82, sizeof(void*)*4, x_80);
+x_83 = 0;
+lean_ctor_set(x_1, 3, x_82);
+lean_ctor_set(x_1, 2, x_74);
+lean_ctor_set(x_1, 1, x_73);
+lean_ctor_set(x_1, 0, x_81);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_83);
+return x_1;
+}
+}
+else
+{
+uint8_t x_84; 
+lean_free_object(x_1);
+x_84 = !lean_is_exclusive(x_44);
+if (x_84 == 0)
+{
+lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; uint8_t x_89; 
+x_85 = lean_ctor_get(x_44, 3);
+lean_dec(x_85);
+x_86 = lean_ctor_get(x_44, 2);
+lean_dec(x_86);
+x_87 = lean_ctor_get(x_44, 1);
+lean_dec(x_87);
+x_88 = lean_ctor_get(x_44, 0);
+lean_dec(x_88);
+x_89 = 1;
+lean_ctor_set(x_44, 3, x_41);
+lean_ctor_set(x_44, 2, x_37);
+lean_ctor_set(x_44, 1, x_36);
+lean_ctor_set(x_44, 0, x_35);
+lean_ctor_set_uint8(x_44, sizeof(void*)*4, x_89);
+return x_44;
+}
+else
+{
+uint8_t x_90; lean_object* x_91; 
+lean_dec(x_44);
+x_90 = 1;
+x_91 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_91, 0, x_35);
+lean_ctor_set(x_91, 1, x_36);
+lean_ctor_set(x_91, 2, x_37);
+lean_ctor_set(x_91, 3, x_41);
+lean_ctor_set_uint8(x_91, sizeof(void*)*4, x_90);
+return x_91;
+}
+}
+}
+}
+else
+{
+uint8_t x_92; 
+x_92 = lean_ctor_get_uint8(x_43, sizeof(void*)*4);
+if (x_92 == 0)
+{
+uint8_t x_93; 
+x_93 = !lean_is_exclusive(x_41);
+if (x_93 == 0)
+{
+lean_object* x_94; uint8_t x_95; 
+x_94 = lean_ctor_get(x_41, 0);
+lean_dec(x_94);
+x_95 = !lean_is_exclusive(x_43);
+if (x_95 == 0)
+{
+lean_object* x_96; lean_object* x_97; lean_object* x_98; lean_object* x_99; uint8_t x_100; uint8_t x_101; 
+x_96 = lean_ctor_get(x_43, 0);
+x_97 = lean_ctor_get(x_43, 1);
+x_98 = lean_ctor_get(x_43, 2);
+x_99 = lean_ctor_get(x_43, 3);
+x_100 = 1;
+lean_ctor_set(x_43, 3, x_96);
+lean_ctor_set(x_43, 2, x_37);
+lean_ctor_set(x_43, 1, x_36);
+lean_ctor_set(x_43, 0, x_35);
+lean_ctor_set_uint8(x_43, sizeof(void*)*4, x_100);
+lean_ctor_set(x_41, 0, x_99);
+lean_ctor_set_uint8(x_41, sizeof(void*)*4, x_100);
+x_101 = 0;
+lean_ctor_set(x_1, 3, x_41);
+lean_ctor_set(x_1, 2, x_98);
+lean_ctor_set(x_1, 1, x_97);
+lean_ctor_set(x_1, 0, x_43);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_101);
+return x_1;
+}
+else
+{
+lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; uint8_t x_106; lean_object* x_107; uint8_t x_108; 
+x_102 = lean_ctor_get(x_43, 0);
+x_103 = lean_ctor_get(x_43, 1);
+x_104 = lean_ctor_get(x_43, 2);
+x_105 = lean_ctor_get(x_43, 3);
+lean_inc(x_105);
+lean_inc(x_104);
+lean_inc(x_103);
+lean_inc(x_102);
+lean_dec(x_43);
+x_106 = 1;
+x_107 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_107, 0, x_35);
+lean_ctor_set(x_107, 1, x_36);
+lean_ctor_set(x_107, 2, x_37);
+lean_ctor_set(x_107, 3, x_102);
+lean_ctor_set_uint8(x_107, sizeof(void*)*4, x_106);
+lean_ctor_set(x_41, 0, x_105);
+lean_ctor_set_uint8(x_41, sizeof(void*)*4, x_106);
+x_108 = 0;
+lean_ctor_set(x_1, 3, x_41);
+lean_ctor_set(x_1, 2, x_104);
+lean_ctor_set(x_1, 1, x_103);
+lean_ctor_set(x_1, 0, x_107);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_108);
+return x_1;
+}
+}
+else
+{
+lean_object* x_109; lean_object* x_110; lean_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; lean_object* x_115; lean_object* x_116; uint8_t x_117; lean_object* x_118; lean_object* x_119; uint8_t x_120; 
+x_109 = lean_ctor_get(x_41, 1);
+x_110 = lean_ctor_get(x_41, 2);
+x_111 = lean_ctor_get(x_41, 3);
+lean_inc(x_111);
+lean_inc(x_110);
+lean_inc(x_109);
+lean_dec(x_41);
+x_112 = lean_ctor_get(x_43, 0);
+lean_inc(x_112);
+x_113 = lean_ctor_get(x_43, 1);
+lean_inc(x_113);
+x_114 = lean_ctor_get(x_43, 2);
+lean_inc(x_114);
+x_115 = lean_ctor_get(x_43, 3);
+lean_inc(x_115);
+if (lean_is_exclusive(x_43)) {
+ lean_ctor_release(x_43, 0);
+ lean_ctor_release(x_43, 1);
+ lean_ctor_release(x_43, 2);
+ lean_ctor_release(x_43, 3);
+ x_116 = x_43;
+} else {
+ lean_dec_ref(x_43);
+ x_116 = lean_box(0);
+}
+x_117 = 1;
+if (lean_is_scalar(x_116)) {
+ x_118 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_118 = x_116;
+}
+lean_ctor_set(x_118, 0, x_35);
+lean_ctor_set(x_118, 1, x_36);
+lean_ctor_set(x_118, 2, x_37);
+lean_ctor_set(x_118, 3, x_112);
+lean_ctor_set_uint8(x_118, sizeof(void*)*4, x_117);
+x_119 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_119, 0, x_115);
+lean_ctor_set(x_119, 1, x_109);
+lean_ctor_set(x_119, 2, x_110);
+lean_ctor_set(x_119, 3, x_111);
+lean_ctor_set_uint8(x_119, sizeof(void*)*4, x_117);
+x_120 = 0;
+lean_ctor_set(x_1, 3, x_119);
+lean_ctor_set(x_1, 2, x_114);
+lean_ctor_set(x_1, 1, x_113);
+lean_ctor_set(x_1, 0, x_118);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_120);
+return x_1;
+}
+}
+else
+{
+lean_object* x_121; 
+x_121 = lean_ctor_get(x_41, 3);
+lean_inc(x_121);
+if (lean_obj_tag(x_121) == 0)
+{
+uint8_t x_122; 
+lean_free_object(x_1);
+x_122 = !lean_is_exclusive(x_43);
+if (x_122 == 0)
+{
+lean_object* x_123; lean_object* x_124; lean_object* x_125; lean_object* x_126; uint8_t x_127; 
+x_123 = lean_ctor_get(x_43, 3);
+lean_dec(x_123);
+x_124 = lean_ctor_get(x_43, 2);
+lean_dec(x_124);
+x_125 = lean_ctor_get(x_43, 1);
+lean_dec(x_125);
+x_126 = lean_ctor_get(x_43, 0);
+lean_dec(x_126);
+x_127 = 1;
+lean_ctor_set(x_43, 3, x_41);
+lean_ctor_set(x_43, 2, x_37);
+lean_ctor_set(x_43, 1, x_36);
+lean_ctor_set(x_43, 0, x_35);
+lean_ctor_set_uint8(x_43, sizeof(void*)*4, x_127);
+return x_43;
+}
+else
+{
+uint8_t x_128; lean_object* x_129; 
+lean_dec(x_43);
+x_128 = 1;
+x_129 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_129, 0, x_35);
+lean_ctor_set(x_129, 1, x_36);
+lean_ctor_set(x_129, 2, x_37);
+lean_ctor_set(x_129, 3, x_41);
+lean_ctor_set_uint8(x_129, sizeof(void*)*4, x_128);
+return x_129;
+}
+}
+else
+{
+uint8_t x_130; 
+x_130 = lean_ctor_get_uint8(x_121, sizeof(void*)*4);
+if (x_130 == 0)
+{
+uint8_t x_131; 
+lean_free_object(x_1);
+x_131 = !lean_is_exclusive(x_41);
+if (x_131 == 0)
+{
+lean_object* x_132; lean_object* x_133; uint8_t x_134; 
+x_132 = lean_ctor_get(x_41, 3);
+lean_dec(x_132);
+x_133 = lean_ctor_get(x_41, 0);
+lean_dec(x_133);
+x_134 = !lean_is_exclusive(x_121);
+if (x_134 == 0)
+{
+lean_object* x_135; lean_object* x_136; lean_object* x_137; lean_object* x_138; uint8_t x_139; uint8_t x_140; 
+x_135 = lean_ctor_get(x_121, 0);
+x_136 = lean_ctor_get(x_121, 1);
+x_137 = lean_ctor_get(x_121, 2);
+x_138 = lean_ctor_get(x_121, 3);
+x_139 = 1;
+lean_inc(x_43);
+lean_ctor_set(x_121, 3, x_43);
+lean_ctor_set(x_121, 2, x_37);
+lean_ctor_set(x_121, 1, x_36);
+lean_ctor_set(x_121, 0, x_35);
+x_140 = !lean_is_exclusive(x_43);
+if (x_140 == 0)
+{
+lean_object* x_141; lean_object* x_142; lean_object* x_143; lean_object* x_144; uint8_t x_145; 
+x_141 = lean_ctor_get(x_43, 3);
+lean_dec(x_141);
+x_142 = lean_ctor_get(x_43, 2);
+lean_dec(x_142);
+x_143 = lean_ctor_get(x_43, 1);
+lean_dec(x_143);
+x_144 = lean_ctor_get(x_43, 0);
+lean_dec(x_144);
+lean_ctor_set_uint8(x_121, sizeof(void*)*4, x_139);
+lean_ctor_set(x_43, 3, x_138);
+lean_ctor_set(x_43, 2, x_137);
+lean_ctor_set(x_43, 1, x_136);
+lean_ctor_set(x_43, 0, x_135);
+lean_ctor_set_uint8(x_43, sizeof(void*)*4, x_139);
+x_145 = 0;
+lean_ctor_set(x_41, 3, x_43);
+lean_ctor_set(x_41, 0, x_121);
+lean_ctor_set_uint8(x_41, sizeof(void*)*4, x_145);
+return x_41;
+}
+else
+{
+lean_object* x_146; uint8_t x_147; 
+lean_dec(x_43);
+lean_ctor_set_uint8(x_121, sizeof(void*)*4, x_139);
+x_146 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_146, 0, x_135);
+lean_ctor_set(x_146, 1, x_136);
+lean_ctor_set(x_146, 2, x_137);
+lean_ctor_set(x_146, 3, x_138);
+lean_ctor_set_uint8(x_146, sizeof(void*)*4, x_139);
+x_147 = 0;
+lean_ctor_set(x_41, 3, x_146);
+lean_ctor_set(x_41, 0, x_121);
+lean_ctor_set_uint8(x_41, sizeof(void*)*4, x_147);
+return x_41;
+}
+}
+else
+{
+lean_object* x_148; lean_object* x_149; lean_object* x_150; lean_object* x_151; uint8_t x_152; lean_object* x_153; lean_object* x_154; lean_object* x_155; uint8_t x_156; 
+x_148 = lean_ctor_get(x_121, 0);
+x_149 = lean_ctor_get(x_121, 1);
+x_150 = lean_ctor_get(x_121, 2);
+x_151 = lean_ctor_get(x_121, 3);
+lean_inc(x_151);
+lean_inc(x_150);
+lean_inc(x_149);
+lean_inc(x_148);
+lean_dec(x_121);
+x_152 = 1;
+lean_inc(x_43);
+x_153 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_153, 0, x_35);
+lean_ctor_set(x_153, 1, x_36);
+lean_ctor_set(x_153, 2, x_37);
+lean_ctor_set(x_153, 3, x_43);
+if (lean_is_exclusive(x_43)) {
+ lean_ctor_release(x_43, 0);
+ lean_ctor_release(x_43, 1);
+ lean_ctor_release(x_43, 2);
+ lean_ctor_release(x_43, 3);
+ x_154 = x_43;
+} else {
+ lean_dec_ref(x_43);
+ x_154 = lean_box(0);
+}
+lean_ctor_set_uint8(x_153, sizeof(void*)*4, x_152);
+if (lean_is_scalar(x_154)) {
+ x_155 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_155 = x_154;
+}
+lean_ctor_set(x_155, 0, x_148);
+lean_ctor_set(x_155, 1, x_149);
+lean_ctor_set(x_155, 2, x_150);
+lean_ctor_set(x_155, 3, x_151);
+lean_ctor_set_uint8(x_155, sizeof(void*)*4, x_152);
+x_156 = 0;
+lean_ctor_set(x_41, 3, x_155);
+lean_ctor_set(x_41, 0, x_153);
+lean_ctor_set_uint8(x_41, sizeof(void*)*4, x_156);
+return x_41;
+}
+}
+else
+{
+lean_object* x_157; lean_object* x_158; lean_object* x_159; lean_object* x_160; lean_object* x_161; lean_object* x_162; lean_object* x_163; uint8_t x_164; lean_object* x_165; lean_object* x_166; lean_object* x_167; uint8_t x_168; lean_object* x_169; 
+x_157 = lean_ctor_get(x_41, 1);
+x_158 = lean_ctor_get(x_41, 2);
+lean_inc(x_158);
+lean_inc(x_157);
+lean_dec(x_41);
+x_159 = lean_ctor_get(x_121, 0);
+lean_inc(x_159);
+x_160 = lean_ctor_get(x_121, 1);
+lean_inc(x_160);
+x_161 = lean_ctor_get(x_121, 2);
+lean_inc(x_161);
+x_162 = lean_ctor_get(x_121, 3);
+lean_inc(x_162);
+if (lean_is_exclusive(x_121)) {
+ lean_ctor_release(x_121, 0);
+ lean_ctor_release(x_121, 1);
+ lean_ctor_release(x_121, 2);
+ lean_ctor_release(x_121, 3);
+ x_163 = x_121;
+} else {
+ lean_dec_ref(x_121);
+ x_163 = lean_box(0);
+}
+x_164 = 1;
+lean_inc(x_43);
+if (lean_is_scalar(x_163)) {
+ x_165 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_165 = x_163;
+}
+lean_ctor_set(x_165, 0, x_35);
+lean_ctor_set(x_165, 1, x_36);
+lean_ctor_set(x_165, 2, x_37);
+lean_ctor_set(x_165, 3, x_43);
+if (lean_is_exclusive(x_43)) {
+ lean_ctor_release(x_43, 0);
+ lean_ctor_release(x_43, 1);
+ lean_ctor_release(x_43, 2);
+ lean_ctor_release(x_43, 3);
+ x_166 = x_43;
+} else {
+ lean_dec_ref(x_43);
+ x_166 = lean_box(0);
+}
+lean_ctor_set_uint8(x_165, sizeof(void*)*4, x_164);
+if (lean_is_scalar(x_166)) {
+ x_167 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_167 = x_166;
+}
+lean_ctor_set(x_167, 0, x_159);
+lean_ctor_set(x_167, 1, x_160);
+lean_ctor_set(x_167, 2, x_161);
+lean_ctor_set(x_167, 3, x_162);
+lean_ctor_set_uint8(x_167, sizeof(void*)*4, x_164);
+x_168 = 0;
+x_169 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_169, 0, x_165);
+lean_ctor_set(x_169, 1, x_157);
+lean_ctor_set(x_169, 2, x_158);
+lean_ctor_set(x_169, 3, x_167);
+lean_ctor_set_uint8(x_169, sizeof(void*)*4, x_168);
+return x_169;
+}
+}
+else
+{
+uint8_t x_170; 
+x_170 = !lean_is_exclusive(x_41);
+if (x_170 == 0)
+{
+lean_object* x_171; lean_object* x_172; uint8_t x_173; 
+x_171 = lean_ctor_get(x_41, 3);
+lean_dec(x_171);
+x_172 = lean_ctor_get(x_41, 0);
+lean_dec(x_172);
+x_173 = !lean_is_exclusive(x_43);
+if (x_173 == 0)
+{
+uint8_t x_174; 
+lean_ctor_set_uint8(x_43, sizeof(void*)*4, x_130);
+x_174 = 1;
+lean_ctor_set(x_1, 3, x_41);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_174);
+return x_1;
+}
+else
+{
+lean_object* x_175; lean_object* x_176; lean_object* x_177; lean_object* x_178; lean_object* x_179; uint8_t x_180; 
+x_175 = lean_ctor_get(x_43, 0);
+x_176 = lean_ctor_get(x_43, 1);
+x_177 = lean_ctor_get(x_43, 2);
+x_178 = lean_ctor_get(x_43, 3);
+lean_inc(x_178);
+lean_inc(x_177);
+lean_inc(x_176);
+lean_inc(x_175);
+lean_dec(x_43);
+x_179 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_179, 0, x_175);
+lean_ctor_set(x_179, 1, x_176);
+lean_ctor_set(x_179, 2, x_177);
+lean_ctor_set(x_179, 3, x_178);
+lean_ctor_set_uint8(x_179, sizeof(void*)*4, x_130);
+lean_ctor_set(x_41, 0, x_179);
+x_180 = 1;
+lean_ctor_set(x_1, 3, x_41);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_180);
+return x_1;
+}
+}
+else
+{
+lean_object* x_181; lean_object* x_182; lean_object* x_183; lean_object* x_184; lean_object* x_185; lean_object* x_186; lean_object* x_187; lean_object* x_188; lean_object* x_189; uint8_t x_190; 
+x_181 = lean_ctor_get(x_41, 1);
+x_182 = lean_ctor_get(x_41, 2);
+lean_inc(x_182);
+lean_inc(x_181);
+lean_dec(x_41);
+x_183 = lean_ctor_get(x_43, 0);
+lean_inc(x_183);
+x_184 = lean_ctor_get(x_43, 1);
+lean_inc(x_184);
+x_185 = lean_ctor_get(x_43, 2);
+lean_inc(x_185);
+x_186 = lean_ctor_get(x_43, 3);
+lean_inc(x_186);
+if (lean_is_exclusive(x_43)) {
+ lean_ctor_release(x_43, 0);
+ lean_ctor_release(x_43, 1);
+ lean_ctor_release(x_43, 2);
+ lean_ctor_release(x_43, 3);
+ x_187 = x_43;
+} else {
+ lean_dec_ref(x_43);
+ x_187 = lean_box(0);
+}
+if (lean_is_scalar(x_187)) {
+ x_188 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_188 = x_187;
+}
+lean_ctor_set(x_188, 0, x_183);
+lean_ctor_set(x_188, 1, x_184);
+lean_ctor_set(x_188, 2, x_185);
+lean_ctor_set(x_188, 3, x_186);
+lean_ctor_set_uint8(x_188, sizeof(void*)*4, x_130);
+x_189 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_189, 0, x_188);
+lean_ctor_set(x_189, 1, x_181);
+lean_ctor_set(x_189, 2, x_182);
+lean_ctor_set(x_189, 3, x_121);
+lean_ctor_set_uint8(x_189, sizeof(void*)*4, x_42);
+x_190 = 1;
+lean_ctor_set(x_1, 3, x_189);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_190);
+return x_1;
+}
+}
+}
+}
+}
+}
+else
+{
+uint8_t x_191; 
+x_191 = 1;
+lean_ctor_set(x_1, 3, x_41);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_191);
+return x_1;
+}
+}
+else
+{
+uint8_t x_192; 
+lean_dec(x_37);
+lean_dec(x_36);
+x_192 = 1;
+lean_ctor_set(x_1, 2, x_3);
+lean_ctor_set(x_1, 1, x_2);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_192);
+return x_1;
+}
+}
+else
+{
+lean_object* x_193; uint8_t x_194; 
+x_193 = l_Lean_RBNode_ins___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__2(x_35, x_2, x_3);
+x_194 = lean_ctor_get_uint8(x_193, sizeof(void*)*4);
+if (x_194 == 0)
+{
+lean_object* x_195; 
+x_195 = lean_ctor_get(x_193, 0);
+lean_inc(x_195);
+if (lean_obj_tag(x_195) == 0)
+{
+lean_object* x_196; 
+x_196 = lean_ctor_get(x_193, 3);
+lean_inc(x_196);
+if (lean_obj_tag(x_196) == 0)
+{
+uint8_t x_197; 
+x_197 = !lean_is_exclusive(x_193);
+if (x_197 == 0)
+{
+lean_object* x_198; lean_object* x_199; uint8_t x_200; 
+x_198 = lean_ctor_get(x_193, 3);
+lean_dec(x_198);
+x_199 = lean_ctor_get(x_193, 0);
+lean_dec(x_199);
+lean_ctor_set(x_193, 0, x_196);
+x_200 = 1;
+lean_ctor_set(x_1, 0, x_193);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_200);
+return x_1;
+}
+else
+{
+lean_object* x_201; lean_object* x_202; lean_object* x_203; uint8_t x_204; 
+x_201 = lean_ctor_get(x_193, 1);
+x_202 = lean_ctor_get(x_193, 2);
+lean_inc(x_202);
+lean_inc(x_201);
+lean_dec(x_193);
+x_203 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_203, 0, x_196);
+lean_ctor_set(x_203, 1, x_201);
+lean_ctor_set(x_203, 2, x_202);
+lean_ctor_set(x_203, 3, x_196);
+lean_ctor_set_uint8(x_203, sizeof(void*)*4, x_194);
+x_204 = 1;
+lean_ctor_set(x_1, 0, x_203);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_204);
+return x_1;
+}
+}
+else
+{
+uint8_t x_205; 
+x_205 = lean_ctor_get_uint8(x_196, sizeof(void*)*4);
+if (x_205 == 0)
+{
+uint8_t x_206; 
+x_206 = !lean_is_exclusive(x_193);
+if (x_206 == 0)
+{
+lean_object* x_207; lean_object* x_208; lean_object* x_209; lean_object* x_210; uint8_t x_211; 
+x_207 = lean_ctor_get(x_193, 1);
+x_208 = lean_ctor_get(x_193, 2);
+x_209 = lean_ctor_get(x_193, 3);
+lean_dec(x_209);
+x_210 = lean_ctor_get(x_193, 0);
+lean_dec(x_210);
+x_211 = !lean_is_exclusive(x_196);
+if (x_211 == 0)
+{
+lean_object* x_212; lean_object* x_213; lean_object* x_214; lean_object* x_215; uint8_t x_216; uint8_t x_217; 
+x_212 = lean_ctor_get(x_196, 0);
+x_213 = lean_ctor_get(x_196, 1);
+x_214 = lean_ctor_get(x_196, 2);
+x_215 = lean_ctor_get(x_196, 3);
+x_216 = 1;
+lean_ctor_set(x_196, 3, x_212);
+lean_ctor_set(x_196, 2, x_208);
+lean_ctor_set(x_196, 1, x_207);
+lean_ctor_set(x_196, 0, x_195);
+lean_ctor_set_uint8(x_196, sizeof(void*)*4, x_216);
+lean_ctor_set(x_193, 3, x_38);
+lean_ctor_set(x_193, 2, x_37);
+lean_ctor_set(x_193, 1, x_36);
+lean_ctor_set(x_193, 0, x_215);
+lean_ctor_set_uint8(x_193, sizeof(void*)*4, x_216);
+x_217 = 0;
+lean_ctor_set(x_1, 3, x_193);
+lean_ctor_set(x_1, 2, x_214);
+lean_ctor_set(x_1, 1, x_213);
+lean_ctor_set(x_1, 0, x_196);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_217);
+return x_1;
+}
+else
+{
+lean_object* x_218; lean_object* x_219; lean_object* x_220; lean_object* x_221; uint8_t x_222; lean_object* x_223; uint8_t x_224; 
+x_218 = lean_ctor_get(x_196, 0);
+x_219 = lean_ctor_get(x_196, 1);
+x_220 = lean_ctor_get(x_196, 2);
+x_221 = lean_ctor_get(x_196, 3);
+lean_inc(x_221);
+lean_inc(x_220);
+lean_inc(x_219);
+lean_inc(x_218);
+lean_dec(x_196);
+x_222 = 1;
+x_223 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_223, 0, x_195);
+lean_ctor_set(x_223, 1, x_207);
+lean_ctor_set(x_223, 2, x_208);
+lean_ctor_set(x_223, 3, x_218);
+lean_ctor_set_uint8(x_223, sizeof(void*)*4, x_222);
+lean_ctor_set(x_193, 3, x_38);
+lean_ctor_set(x_193, 2, x_37);
+lean_ctor_set(x_193, 1, x_36);
+lean_ctor_set(x_193, 0, x_221);
+lean_ctor_set_uint8(x_193, sizeof(void*)*4, x_222);
+x_224 = 0;
+lean_ctor_set(x_1, 3, x_193);
+lean_ctor_set(x_1, 2, x_220);
+lean_ctor_set(x_1, 1, x_219);
+lean_ctor_set(x_1, 0, x_223);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_224);
+return x_1;
+}
+}
+else
+{
+lean_object* x_225; lean_object* x_226; lean_object* x_227; lean_object* x_228; lean_object* x_229; lean_object* x_230; lean_object* x_231; uint8_t x_232; lean_object* x_233; lean_object* x_234; uint8_t x_235; 
+x_225 = lean_ctor_get(x_193, 1);
+x_226 = lean_ctor_get(x_193, 2);
+lean_inc(x_226);
+lean_inc(x_225);
+lean_dec(x_193);
+x_227 = lean_ctor_get(x_196, 0);
+lean_inc(x_227);
+x_228 = lean_ctor_get(x_196, 1);
+lean_inc(x_228);
+x_229 = lean_ctor_get(x_196, 2);
+lean_inc(x_229);
+x_230 = lean_ctor_get(x_196, 3);
+lean_inc(x_230);
+if (lean_is_exclusive(x_196)) {
+ lean_ctor_release(x_196, 0);
+ lean_ctor_release(x_196, 1);
+ lean_ctor_release(x_196, 2);
+ lean_ctor_release(x_196, 3);
+ x_231 = x_196;
+} else {
+ lean_dec_ref(x_196);
+ x_231 = lean_box(0);
+}
+x_232 = 1;
+if (lean_is_scalar(x_231)) {
+ x_233 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_233 = x_231;
+}
+lean_ctor_set(x_233, 0, x_195);
+lean_ctor_set(x_233, 1, x_225);
+lean_ctor_set(x_233, 2, x_226);
+lean_ctor_set(x_233, 3, x_227);
+lean_ctor_set_uint8(x_233, sizeof(void*)*4, x_232);
+x_234 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_234, 0, x_230);
+lean_ctor_set(x_234, 1, x_36);
+lean_ctor_set(x_234, 2, x_37);
+lean_ctor_set(x_234, 3, x_38);
+lean_ctor_set_uint8(x_234, sizeof(void*)*4, x_232);
+x_235 = 0;
+lean_ctor_set(x_1, 3, x_234);
+lean_ctor_set(x_1, 2, x_229);
+lean_ctor_set(x_1, 1, x_228);
+lean_ctor_set(x_1, 0, x_233);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_235);
+return x_1;
+}
+}
+else
+{
+uint8_t x_236; 
+lean_free_object(x_1);
+x_236 = !lean_is_exclusive(x_196);
+if (x_236 == 0)
+{
+lean_object* x_237; lean_object* x_238; lean_object* x_239; lean_object* x_240; uint8_t x_241; 
+x_237 = lean_ctor_get(x_196, 3);
+lean_dec(x_237);
+x_238 = lean_ctor_get(x_196, 2);
+lean_dec(x_238);
+x_239 = lean_ctor_get(x_196, 1);
+lean_dec(x_239);
+x_240 = lean_ctor_get(x_196, 0);
+lean_dec(x_240);
+x_241 = 1;
+lean_ctor_set(x_196, 3, x_38);
+lean_ctor_set(x_196, 2, x_37);
+lean_ctor_set(x_196, 1, x_36);
+lean_ctor_set(x_196, 0, x_193);
+lean_ctor_set_uint8(x_196, sizeof(void*)*4, x_241);
+return x_196;
+}
+else
+{
+uint8_t x_242; lean_object* x_243; 
+lean_dec(x_196);
+x_242 = 1;
+x_243 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_243, 0, x_193);
+lean_ctor_set(x_243, 1, x_36);
+lean_ctor_set(x_243, 2, x_37);
+lean_ctor_set(x_243, 3, x_38);
+lean_ctor_set_uint8(x_243, sizeof(void*)*4, x_242);
+return x_243;
+}
+}
+}
+}
+else
+{
+uint8_t x_244; 
+x_244 = lean_ctor_get_uint8(x_195, sizeof(void*)*4);
+if (x_244 == 0)
+{
+uint8_t x_245; 
+x_245 = !lean_is_exclusive(x_193);
+if (x_245 == 0)
+{
+lean_object* x_246; lean_object* x_247; lean_object* x_248; lean_object* x_249; uint8_t x_250; 
+x_246 = lean_ctor_get(x_193, 1);
+x_247 = lean_ctor_get(x_193, 2);
+x_248 = lean_ctor_get(x_193, 3);
+x_249 = lean_ctor_get(x_193, 0);
+lean_dec(x_249);
+x_250 = !lean_is_exclusive(x_195);
+if (x_250 == 0)
+{
+uint8_t x_251; uint8_t x_252; 
+x_251 = 1;
+lean_ctor_set_uint8(x_195, sizeof(void*)*4, x_251);
+lean_ctor_set(x_193, 3, x_38);
+lean_ctor_set(x_193, 2, x_37);
+lean_ctor_set(x_193, 1, x_36);
+lean_ctor_set(x_193, 0, x_248);
+lean_ctor_set_uint8(x_193, sizeof(void*)*4, x_251);
+x_252 = 0;
+lean_ctor_set(x_1, 3, x_193);
+lean_ctor_set(x_1, 2, x_247);
+lean_ctor_set(x_1, 1, x_246);
+lean_ctor_set(x_1, 0, x_195);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_252);
+return x_1;
+}
+else
+{
+lean_object* x_253; lean_object* x_254; lean_object* x_255; lean_object* x_256; uint8_t x_257; lean_object* x_258; uint8_t x_259; 
+x_253 = lean_ctor_get(x_195, 0);
+x_254 = lean_ctor_get(x_195, 1);
+x_255 = lean_ctor_get(x_195, 2);
+x_256 = lean_ctor_get(x_195, 3);
+lean_inc(x_256);
+lean_inc(x_255);
+lean_inc(x_254);
+lean_inc(x_253);
+lean_dec(x_195);
+x_257 = 1;
+x_258 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_258, 0, x_253);
+lean_ctor_set(x_258, 1, x_254);
+lean_ctor_set(x_258, 2, x_255);
+lean_ctor_set(x_258, 3, x_256);
+lean_ctor_set_uint8(x_258, sizeof(void*)*4, x_257);
+lean_ctor_set(x_193, 3, x_38);
+lean_ctor_set(x_193, 2, x_37);
+lean_ctor_set(x_193, 1, x_36);
+lean_ctor_set(x_193, 0, x_248);
+lean_ctor_set_uint8(x_193, sizeof(void*)*4, x_257);
+x_259 = 0;
+lean_ctor_set(x_1, 3, x_193);
+lean_ctor_set(x_1, 2, x_247);
+lean_ctor_set(x_1, 1, x_246);
+lean_ctor_set(x_1, 0, x_258);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_259);
+return x_1;
+}
+}
+else
+{
+lean_object* x_260; lean_object* x_261; lean_object* x_262; lean_object* x_263; lean_object* x_264; lean_object* x_265; lean_object* x_266; lean_object* x_267; uint8_t x_268; lean_object* x_269; lean_object* x_270; uint8_t x_271; 
+x_260 = lean_ctor_get(x_193, 1);
+x_261 = lean_ctor_get(x_193, 2);
+x_262 = lean_ctor_get(x_193, 3);
+lean_inc(x_262);
+lean_inc(x_261);
+lean_inc(x_260);
+lean_dec(x_193);
+x_263 = lean_ctor_get(x_195, 0);
+lean_inc(x_263);
+x_264 = lean_ctor_get(x_195, 1);
+lean_inc(x_264);
+x_265 = lean_ctor_get(x_195, 2);
+lean_inc(x_265);
+x_266 = lean_ctor_get(x_195, 3);
+lean_inc(x_266);
+if (lean_is_exclusive(x_195)) {
+ lean_ctor_release(x_195, 0);
+ lean_ctor_release(x_195, 1);
+ lean_ctor_release(x_195, 2);
+ lean_ctor_release(x_195, 3);
+ x_267 = x_195;
+} else {
+ lean_dec_ref(x_195);
+ x_267 = lean_box(0);
+}
+x_268 = 1;
+if (lean_is_scalar(x_267)) {
+ x_269 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_269 = x_267;
+}
+lean_ctor_set(x_269, 0, x_263);
+lean_ctor_set(x_269, 1, x_264);
+lean_ctor_set(x_269, 2, x_265);
+lean_ctor_set(x_269, 3, x_266);
+lean_ctor_set_uint8(x_269, sizeof(void*)*4, x_268);
+x_270 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_270, 0, x_262);
+lean_ctor_set(x_270, 1, x_36);
+lean_ctor_set(x_270, 2, x_37);
+lean_ctor_set(x_270, 3, x_38);
+lean_ctor_set_uint8(x_270, sizeof(void*)*4, x_268);
+x_271 = 0;
+lean_ctor_set(x_1, 3, x_270);
+lean_ctor_set(x_1, 2, x_261);
+lean_ctor_set(x_1, 1, x_260);
+lean_ctor_set(x_1, 0, x_269);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_271);
+return x_1;
+}
+}
+else
+{
+lean_object* x_272; 
+x_272 = lean_ctor_get(x_193, 3);
+lean_inc(x_272);
+if (lean_obj_tag(x_272) == 0)
+{
+uint8_t x_273; 
+lean_free_object(x_1);
+x_273 = !lean_is_exclusive(x_195);
+if (x_273 == 0)
+{
+lean_object* x_274; lean_object* x_275; lean_object* x_276; lean_object* x_277; uint8_t x_278; 
+x_274 = lean_ctor_get(x_195, 3);
+lean_dec(x_274);
+x_275 = lean_ctor_get(x_195, 2);
+lean_dec(x_275);
+x_276 = lean_ctor_get(x_195, 1);
+lean_dec(x_276);
+x_277 = lean_ctor_get(x_195, 0);
+lean_dec(x_277);
+x_278 = 1;
+lean_ctor_set(x_195, 3, x_38);
+lean_ctor_set(x_195, 2, x_37);
+lean_ctor_set(x_195, 1, x_36);
+lean_ctor_set(x_195, 0, x_193);
+lean_ctor_set_uint8(x_195, sizeof(void*)*4, x_278);
+return x_195;
+}
+else
+{
+uint8_t x_279; lean_object* x_280; 
+lean_dec(x_195);
+x_279 = 1;
+x_280 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_280, 0, x_193);
+lean_ctor_set(x_280, 1, x_36);
+lean_ctor_set(x_280, 2, x_37);
+lean_ctor_set(x_280, 3, x_38);
+lean_ctor_set_uint8(x_280, sizeof(void*)*4, x_279);
+return x_280;
+}
+}
+else
+{
+uint8_t x_281; 
+x_281 = lean_ctor_get_uint8(x_272, sizeof(void*)*4);
+if (x_281 == 0)
+{
+uint8_t x_282; 
+lean_free_object(x_1);
+x_282 = !lean_is_exclusive(x_193);
+if (x_282 == 0)
+{
+lean_object* x_283; lean_object* x_284; lean_object* x_285; lean_object* x_286; uint8_t x_287; 
+x_283 = lean_ctor_get(x_193, 1);
+x_284 = lean_ctor_get(x_193, 2);
+x_285 = lean_ctor_get(x_193, 3);
+lean_dec(x_285);
+x_286 = lean_ctor_get(x_193, 0);
+lean_dec(x_286);
+x_287 = !lean_is_exclusive(x_272);
+if (x_287 == 0)
+{
+lean_object* x_288; lean_object* x_289; lean_object* x_290; lean_object* x_291; uint8_t x_292; uint8_t x_293; 
+x_288 = lean_ctor_get(x_272, 0);
+x_289 = lean_ctor_get(x_272, 1);
+x_290 = lean_ctor_get(x_272, 2);
+x_291 = lean_ctor_get(x_272, 3);
+x_292 = 1;
+lean_inc(x_195);
+lean_ctor_set(x_272, 3, x_288);
+lean_ctor_set(x_272, 2, x_284);
+lean_ctor_set(x_272, 1, x_283);
+lean_ctor_set(x_272, 0, x_195);
+x_293 = !lean_is_exclusive(x_195);
+if (x_293 == 0)
+{
+lean_object* x_294; lean_object* x_295; lean_object* x_296; lean_object* x_297; uint8_t x_298; 
+x_294 = lean_ctor_get(x_195, 3);
+lean_dec(x_294);
+x_295 = lean_ctor_get(x_195, 2);
+lean_dec(x_295);
+x_296 = lean_ctor_get(x_195, 1);
+lean_dec(x_296);
+x_297 = lean_ctor_get(x_195, 0);
+lean_dec(x_297);
+lean_ctor_set_uint8(x_272, sizeof(void*)*4, x_292);
+lean_ctor_set(x_195, 3, x_38);
+lean_ctor_set(x_195, 2, x_37);
+lean_ctor_set(x_195, 1, x_36);
+lean_ctor_set(x_195, 0, x_291);
+lean_ctor_set_uint8(x_195, sizeof(void*)*4, x_292);
+x_298 = 0;
+lean_ctor_set(x_193, 3, x_195);
+lean_ctor_set(x_193, 2, x_290);
+lean_ctor_set(x_193, 1, x_289);
+lean_ctor_set(x_193, 0, x_272);
+lean_ctor_set_uint8(x_193, sizeof(void*)*4, x_298);
+return x_193;
+}
+else
+{
+lean_object* x_299; uint8_t x_300; 
+lean_dec(x_195);
+lean_ctor_set_uint8(x_272, sizeof(void*)*4, x_292);
+x_299 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_299, 0, x_291);
+lean_ctor_set(x_299, 1, x_36);
+lean_ctor_set(x_299, 2, x_37);
+lean_ctor_set(x_299, 3, x_38);
+lean_ctor_set_uint8(x_299, sizeof(void*)*4, x_292);
+x_300 = 0;
+lean_ctor_set(x_193, 3, x_299);
+lean_ctor_set(x_193, 2, x_290);
+lean_ctor_set(x_193, 1, x_289);
+lean_ctor_set(x_193, 0, x_272);
+lean_ctor_set_uint8(x_193, sizeof(void*)*4, x_300);
+return x_193;
+}
+}
+else
+{
+lean_object* x_301; lean_object* x_302; lean_object* x_303; lean_object* x_304; uint8_t x_305; lean_object* x_306; lean_object* x_307; lean_object* x_308; uint8_t x_309; 
+x_301 = lean_ctor_get(x_272, 0);
+x_302 = lean_ctor_get(x_272, 1);
+x_303 = lean_ctor_get(x_272, 2);
+x_304 = lean_ctor_get(x_272, 3);
+lean_inc(x_304);
+lean_inc(x_303);
+lean_inc(x_302);
+lean_inc(x_301);
+lean_dec(x_272);
+x_305 = 1;
+lean_inc(x_195);
+x_306 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_306, 0, x_195);
+lean_ctor_set(x_306, 1, x_283);
+lean_ctor_set(x_306, 2, x_284);
+lean_ctor_set(x_306, 3, x_301);
+if (lean_is_exclusive(x_195)) {
+ lean_ctor_release(x_195, 0);
+ lean_ctor_release(x_195, 1);
+ lean_ctor_release(x_195, 2);
+ lean_ctor_release(x_195, 3);
+ x_307 = x_195;
+} else {
+ lean_dec_ref(x_195);
+ x_307 = lean_box(0);
+}
+lean_ctor_set_uint8(x_306, sizeof(void*)*4, x_305);
+if (lean_is_scalar(x_307)) {
+ x_308 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_308 = x_307;
+}
+lean_ctor_set(x_308, 0, x_304);
+lean_ctor_set(x_308, 1, x_36);
+lean_ctor_set(x_308, 2, x_37);
+lean_ctor_set(x_308, 3, x_38);
+lean_ctor_set_uint8(x_308, sizeof(void*)*4, x_305);
+x_309 = 0;
+lean_ctor_set(x_193, 3, x_308);
+lean_ctor_set(x_193, 2, x_303);
+lean_ctor_set(x_193, 1, x_302);
+lean_ctor_set(x_193, 0, x_306);
+lean_ctor_set_uint8(x_193, sizeof(void*)*4, x_309);
+return x_193;
+}
+}
+else
+{
+lean_object* x_310; lean_object* x_311; lean_object* x_312; lean_object* x_313; lean_object* x_314; lean_object* x_315; lean_object* x_316; uint8_t x_317; lean_object* x_318; lean_object* x_319; lean_object* x_320; uint8_t x_321; lean_object* x_322; 
+x_310 = lean_ctor_get(x_193, 1);
+x_311 = lean_ctor_get(x_193, 2);
+lean_inc(x_311);
+lean_inc(x_310);
+lean_dec(x_193);
+x_312 = lean_ctor_get(x_272, 0);
+lean_inc(x_312);
+x_313 = lean_ctor_get(x_272, 1);
+lean_inc(x_313);
+x_314 = lean_ctor_get(x_272, 2);
+lean_inc(x_314);
+x_315 = lean_ctor_get(x_272, 3);
+lean_inc(x_315);
+if (lean_is_exclusive(x_272)) {
+ lean_ctor_release(x_272, 0);
+ lean_ctor_release(x_272, 1);
+ lean_ctor_release(x_272, 2);
+ lean_ctor_release(x_272, 3);
+ x_316 = x_272;
+} else {
+ lean_dec_ref(x_272);
+ x_316 = lean_box(0);
+}
+x_317 = 1;
+lean_inc(x_195);
+if (lean_is_scalar(x_316)) {
+ x_318 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_318 = x_316;
+}
+lean_ctor_set(x_318, 0, x_195);
+lean_ctor_set(x_318, 1, x_310);
+lean_ctor_set(x_318, 2, x_311);
+lean_ctor_set(x_318, 3, x_312);
+if (lean_is_exclusive(x_195)) {
+ lean_ctor_release(x_195, 0);
+ lean_ctor_release(x_195, 1);
+ lean_ctor_release(x_195, 2);
+ lean_ctor_release(x_195, 3);
+ x_319 = x_195;
+} else {
+ lean_dec_ref(x_195);
+ x_319 = lean_box(0);
+}
+lean_ctor_set_uint8(x_318, sizeof(void*)*4, x_317);
+if (lean_is_scalar(x_319)) {
+ x_320 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_320 = x_319;
+}
+lean_ctor_set(x_320, 0, x_315);
+lean_ctor_set(x_320, 1, x_36);
+lean_ctor_set(x_320, 2, x_37);
+lean_ctor_set(x_320, 3, x_38);
+lean_ctor_set_uint8(x_320, sizeof(void*)*4, x_317);
+x_321 = 0;
+x_322 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_322, 0, x_318);
+lean_ctor_set(x_322, 1, x_313);
+lean_ctor_set(x_322, 2, x_314);
+lean_ctor_set(x_322, 3, x_320);
+lean_ctor_set_uint8(x_322, sizeof(void*)*4, x_321);
+return x_322;
+}
+}
+else
+{
+uint8_t x_323; 
+x_323 = !lean_is_exclusive(x_193);
+if (x_323 == 0)
+{
+lean_object* x_324; lean_object* x_325; uint8_t x_326; 
+x_324 = lean_ctor_get(x_193, 3);
+lean_dec(x_324);
+x_325 = lean_ctor_get(x_193, 0);
+lean_dec(x_325);
+x_326 = !lean_is_exclusive(x_195);
+if (x_326 == 0)
+{
+uint8_t x_327; 
+lean_ctor_set_uint8(x_195, sizeof(void*)*4, x_281);
+x_327 = 1;
+lean_ctor_set(x_1, 0, x_193);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_327);
+return x_1;
+}
+else
+{
+lean_object* x_328; lean_object* x_329; lean_object* x_330; lean_object* x_331; lean_object* x_332; uint8_t x_333; 
+x_328 = lean_ctor_get(x_195, 0);
+x_329 = lean_ctor_get(x_195, 1);
+x_330 = lean_ctor_get(x_195, 2);
+x_331 = lean_ctor_get(x_195, 3);
+lean_inc(x_331);
+lean_inc(x_330);
+lean_inc(x_329);
+lean_inc(x_328);
+lean_dec(x_195);
+x_332 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_332, 0, x_328);
+lean_ctor_set(x_332, 1, x_329);
+lean_ctor_set(x_332, 2, x_330);
+lean_ctor_set(x_332, 3, x_331);
+lean_ctor_set_uint8(x_332, sizeof(void*)*4, x_281);
+lean_ctor_set(x_193, 0, x_332);
+x_333 = 1;
+lean_ctor_set(x_1, 0, x_193);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_333);
+return x_1;
+}
+}
+else
+{
+lean_object* x_334; lean_object* x_335; lean_object* x_336; lean_object* x_337; lean_object* x_338; lean_object* x_339; lean_object* x_340; lean_object* x_341; lean_object* x_342; uint8_t x_343; 
+x_334 = lean_ctor_get(x_193, 1);
+x_335 = lean_ctor_get(x_193, 2);
+lean_inc(x_335);
+lean_inc(x_334);
+lean_dec(x_193);
+x_336 = lean_ctor_get(x_195, 0);
+lean_inc(x_336);
+x_337 = lean_ctor_get(x_195, 1);
+lean_inc(x_337);
+x_338 = lean_ctor_get(x_195, 2);
+lean_inc(x_338);
+x_339 = lean_ctor_get(x_195, 3);
+lean_inc(x_339);
+if (lean_is_exclusive(x_195)) {
+ lean_ctor_release(x_195, 0);
+ lean_ctor_release(x_195, 1);
+ lean_ctor_release(x_195, 2);
+ lean_ctor_release(x_195, 3);
+ x_340 = x_195;
+} else {
+ lean_dec_ref(x_195);
+ x_340 = lean_box(0);
+}
+if (lean_is_scalar(x_340)) {
+ x_341 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_341 = x_340;
+}
+lean_ctor_set(x_341, 0, x_336);
+lean_ctor_set(x_341, 1, x_337);
+lean_ctor_set(x_341, 2, x_338);
+lean_ctor_set(x_341, 3, x_339);
+lean_ctor_set_uint8(x_341, sizeof(void*)*4, x_281);
+x_342 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_342, 0, x_341);
+lean_ctor_set(x_342, 1, x_334);
+lean_ctor_set(x_342, 2, x_335);
+lean_ctor_set(x_342, 3, x_272);
+lean_ctor_set_uint8(x_342, sizeof(void*)*4, x_194);
+x_343 = 1;
+lean_ctor_set(x_1, 0, x_342);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_343);
+return x_1;
+}
+}
+}
+}
+}
+}
+else
+{
+uint8_t x_344; 
+x_344 = 1;
+lean_ctor_set(x_1, 0, x_193);
+lean_ctor_set_uint8(x_1, sizeof(void*)*4, x_344);
+return x_1;
+}
+}
+}
+else
+{
+lean_object* x_345; lean_object* x_346; lean_object* x_347; lean_object* x_348; uint8_t x_349; 
+x_345 = lean_ctor_get(x_1, 0);
+x_346 = lean_ctor_get(x_1, 1);
+x_347 = lean_ctor_get(x_1, 2);
+x_348 = lean_ctor_get(x_1, 3);
+lean_inc(x_348);
+lean_inc(x_347);
+lean_inc(x_346);
+lean_inc(x_345);
+lean_dec(x_1);
+x_349 = lean_nat_dec_lt(x_2, x_346);
+if (x_349 == 0)
+{
+uint8_t x_350; 
+x_350 = lean_nat_dec_eq(x_2, x_346);
+if (x_350 == 0)
+{
+lean_object* x_351; uint8_t x_352; 
+x_351 = l_Lean_RBNode_ins___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__2(x_348, x_2, x_3);
+x_352 = lean_ctor_get_uint8(x_351, sizeof(void*)*4);
+if (x_352 == 0)
+{
+lean_object* x_353; 
+x_353 = lean_ctor_get(x_351, 0);
+lean_inc(x_353);
+if (lean_obj_tag(x_353) == 0)
+{
+lean_object* x_354; 
+x_354 = lean_ctor_get(x_351, 3);
+lean_inc(x_354);
+if (lean_obj_tag(x_354) == 0)
+{
+lean_object* x_355; lean_object* x_356; lean_object* x_357; lean_object* x_358; uint8_t x_359; lean_object* x_360; 
+x_355 = lean_ctor_get(x_351, 1);
+lean_inc(x_355);
+x_356 = lean_ctor_get(x_351, 2);
+lean_inc(x_356);
+if (lean_is_exclusive(x_351)) {
+ lean_ctor_release(x_351, 0);
+ lean_ctor_release(x_351, 1);
+ lean_ctor_release(x_351, 2);
+ lean_ctor_release(x_351, 3);
+ x_357 = x_351;
+} else {
+ lean_dec_ref(x_351);
+ x_357 = lean_box(0);
+}
+if (lean_is_scalar(x_357)) {
+ x_358 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_358 = x_357;
+}
+lean_ctor_set(x_358, 0, x_354);
+lean_ctor_set(x_358, 1, x_355);
+lean_ctor_set(x_358, 2, x_356);
+lean_ctor_set(x_358, 3, x_354);
+lean_ctor_set_uint8(x_358, sizeof(void*)*4, x_352);
+x_359 = 1;
+x_360 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_360, 0, x_345);
+lean_ctor_set(x_360, 1, x_346);
+lean_ctor_set(x_360, 2, x_347);
+lean_ctor_set(x_360, 3, x_358);
+lean_ctor_set_uint8(x_360, sizeof(void*)*4, x_359);
+return x_360;
+}
+else
+{
+uint8_t x_361; 
+x_361 = lean_ctor_get_uint8(x_354, sizeof(void*)*4);
+if (x_361 == 0)
+{
+lean_object* x_362; lean_object* x_363; lean_object* x_364; lean_object* x_365; lean_object* x_366; lean_object* x_367; lean_object* x_368; lean_object* x_369; uint8_t x_370; lean_object* x_371; lean_object* x_372; uint8_t x_373; lean_object* x_374; 
+x_362 = lean_ctor_get(x_351, 1);
+lean_inc(x_362);
+x_363 = lean_ctor_get(x_351, 2);
+lean_inc(x_363);
+if (lean_is_exclusive(x_351)) {
+ lean_ctor_release(x_351, 0);
+ lean_ctor_release(x_351, 1);
+ lean_ctor_release(x_351, 2);
+ lean_ctor_release(x_351, 3);
+ x_364 = x_351;
+} else {
+ lean_dec_ref(x_351);
+ x_364 = lean_box(0);
+}
+x_365 = lean_ctor_get(x_354, 0);
+lean_inc(x_365);
+x_366 = lean_ctor_get(x_354, 1);
+lean_inc(x_366);
+x_367 = lean_ctor_get(x_354, 2);
+lean_inc(x_367);
+x_368 = lean_ctor_get(x_354, 3);
+lean_inc(x_368);
+if (lean_is_exclusive(x_354)) {
+ lean_ctor_release(x_354, 0);
+ lean_ctor_release(x_354, 1);
+ lean_ctor_release(x_354, 2);
+ lean_ctor_release(x_354, 3);
+ x_369 = x_354;
+} else {
+ lean_dec_ref(x_354);
+ x_369 = lean_box(0);
+}
+x_370 = 1;
+if (lean_is_scalar(x_369)) {
+ x_371 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_371 = x_369;
+}
+lean_ctor_set(x_371, 0, x_345);
+lean_ctor_set(x_371, 1, x_346);
+lean_ctor_set(x_371, 2, x_347);
+lean_ctor_set(x_371, 3, x_353);
+lean_ctor_set_uint8(x_371, sizeof(void*)*4, x_370);
+if (lean_is_scalar(x_364)) {
+ x_372 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_372 = x_364;
+}
+lean_ctor_set(x_372, 0, x_365);
+lean_ctor_set(x_372, 1, x_366);
+lean_ctor_set(x_372, 2, x_367);
+lean_ctor_set(x_372, 3, x_368);
+lean_ctor_set_uint8(x_372, sizeof(void*)*4, x_370);
+x_373 = 0;
+x_374 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_374, 0, x_371);
+lean_ctor_set(x_374, 1, x_362);
+lean_ctor_set(x_374, 2, x_363);
+lean_ctor_set(x_374, 3, x_372);
+lean_ctor_set_uint8(x_374, sizeof(void*)*4, x_373);
+return x_374;
+}
+else
+{
+lean_object* x_375; uint8_t x_376; lean_object* x_377; 
+if (lean_is_exclusive(x_354)) {
+ lean_ctor_release(x_354, 0);
+ lean_ctor_release(x_354, 1);
+ lean_ctor_release(x_354, 2);
+ lean_ctor_release(x_354, 3);
+ x_375 = x_354;
+} else {
+ lean_dec_ref(x_354);
+ x_375 = lean_box(0);
+}
+x_376 = 1;
+if (lean_is_scalar(x_375)) {
+ x_377 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_377 = x_375;
+}
+lean_ctor_set(x_377, 0, x_345);
+lean_ctor_set(x_377, 1, x_346);
+lean_ctor_set(x_377, 2, x_347);
+lean_ctor_set(x_377, 3, x_351);
+lean_ctor_set_uint8(x_377, sizeof(void*)*4, x_376);
+return x_377;
+}
+}
+}
+else
+{
+uint8_t x_378; 
+x_378 = lean_ctor_get_uint8(x_353, sizeof(void*)*4);
+if (x_378 == 0)
+{
+lean_object* x_379; lean_object* x_380; lean_object* x_381; lean_object* x_382; lean_object* x_383; lean_object* x_384; lean_object* x_385; lean_object* x_386; lean_object* x_387; uint8_t x_388; lean_object* x_389; lean_object* x_390; uint8_t x_391; lean_object* x_392; 
+x_379 = lean_ctor_get(x_351, 1);
+lean_inc(x_379);
+x_380 = lean_ctor_get(x_351, 2);
+lean_inc(x_380);
+x_381 = lean_ctor_get(x_351, 3);
+lean_inc(x_381);
+if (lean_is_exclusive(x_351)) {
+ lean_ctor_release(x_351, 0);
+ lean_ctor_release(x_351, 1);
+ lean_ctor_release(x_351, 2);
+ lean_ctor_release(x_351, 3);
+ x_382 = x_351;
+} else {
+ lean_dec_ref(x_351);
+ x_382 = lean_box(0);
+}
+x_383 = lean_ctor_get(x_353, 0);
+lean_inc(x_383);
+x_384 = lean_ctor_get(x_353, 1);
+lean_inc(x_384);
+x_385 = lean_ctor_get(x_353, 2);
+lean_inc(x_385);
+x_386 = lean_ctor_get(x_353, 3);
+lean_inc(x_386);
+if (lean_is_exclusive(x_353)) {
+ lean_ctor_release(x_353, 0);
+ lean_ctor_release(x_353, 1);
+ lean_ctor_release(x_353, 2);
+ lean_ctor_release(x_353, 3);
+ x_387 = x_353;
+} else {
+ lean_dec_ref(x_353);
+ x_387 = lean_box(0);
+}
+x_388 = 1;
+if (lean_is_scalar(x_387)) {
+ x_389 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_389 = x_387;
+}
+lean_ctor_set(x_389, 0, x_345);
+lean_ctor_set(x_389, 1, x_346);
+lean_ctor_set(x_389, 2, x_347);
+lean_ctor_set(x_389, 3, x_383);
+lean_ctor_set_uint8(x_389, sizeof(void*)*4, x_388);
+if (lean_is_scalar(x_382)) {
+ x_390 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_390 = x_382;
+}
+lean_ctor_set(x_390, 0, x_386);
+lean_ctor_set(x_390, 1, x_379);
+lean_ctor_set(x_390, 2, x_380);
+lean_ctor_set(x_390, 3, x_381);
+lean_ctor_set_uint8(x_390, sizeof(void*)*4, x_388);
+x_391 = 0;
+x_392 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_392, 0, x_389);
+lean_ctor_set(x_392, 1, x_384);
+lean_ctor_set(x_392, 2, x_385);
+lean_ctor_set(x_392, 3, x_390);
+lean_ctor_set_uint8(x_392, sizeof(void*)*4, x_391);
+return x_392;
+}
+else
+{
+lean_object* x_393; 
+x_393 = lean_ctor_get(x_351, 3);
+lean_inc(x_393);
+if (lean_obj_tag(x_393) == 0)
+{
+lean_object* x_394; uint8_t x_395; lean_object* x_396; 
+if (lean_is_exclusive(x_353)) {
+ lean_ctor_release(x_353, 0);
+ lean_ctor_release(x_353, 1);
+ lean_ctor_release(x_353, 2);
+ lean_ctor_release(x_353, 3);
+ x_394 = x_353;
+} else {
+ lean_dec_ref(x_353);
+ x_394 = lean_box(0);
+}
+x_395 = 1;
+if (lean_is_scalar(x_394)) {
+ x_396 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_396 = x_394;
+}
+lean_ctor_set(x_396, 0, x_345);
+lean_ctor_set(x_396, 1, x_346);
+lean_ctor_set(x_396, 2, x_347);
+lean_ctor_set(x_396, 3, x_351);
+lean_ctor_set_uint8(x_396, sizeof(void*)*4, x_395);
+return x_396;
+}
+else
+{
+uint8_t x_397; 
+x_397 = lean_ctor_get_uint8(x_393, sizeof(void*)*4);
+if (x_397 == 0)
+{
+lean_object* x_398; lean_object* x_399; lean_object* x_400; lean_object* x_401; lean_object* x_402; lean_object* x_403; lean_object* x_404; lean_object* x_405; uint8_t x_406; lean_object* x_407; lean_object* x_408; lean_object* x_409; uint8_t x_410; lean_object* x_411; 
+x_398 = lean_ctor_get(x_351, 1);
+lean_inc(x_398);
+x_399 = lean_ctor_get(x_351, 2);
+lean_inc(x_399);
+if (lean_is_exclusive(x_351)) {
+ lean_ctor_release(x_351, 0);
+ lean_ctor_release(x_351, 1);
+ lean_ctor_release(x_351, 2);
+ lean_ctor_release(x_351, 3);
+ x_400 = x_351;
+} else {
+ lean_dec_ref(x_351);
+ x_400 = lean_box(0);
+}
+x_401 = lean_ctor_get(x_393, 0);
+lean_inc(x_401);
+x_402 = lean_ctor_get(x_393, 1);
+lean_inc(x_402);
+x_403 = lean_ctor_get(x_393, 2);
+lean_inc(x_403);
+x_404 = lean_ctor_get(x_393, 3);
+lean_inc(x_404);
+if (lean_is_exclusive(x_393)) {
+ lean_ctor_release(x_393, 0);
+ lean_ctor_release(x_393, 1);
+ lean_ctor_release(x_393, 2);
+ lean_ctor_release(x_393, 3);
+ x_405 = x_393;
+} else {
+ lean_dec_ref(x_393);
+ x_405 = lean_box(0);
+}
+x_406 = 1;
+lean_inc(x_353);
+if (lean_is_scalar(x_405)) {
+ x_407 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_407 = x_405;
+}
+lean_ctor_set(x_407, 0, x_345);
+lean_ctor_set(x_407, 1, x_346);
+lean_ctor_set(x_407, 2, x_347);
+lean_ctor_set(x_407, 3, x_353);
+if (lean_is_exclusive(x_353)) {
+ lean_ctor_release(x_353, 0);
+ lean_ctor_release(x_353, 1);
+ lean_ctor_release(x_353, 2);
+ lean_ctor_release(x_353, 3);
+ x_408 = x_353;
+} else {
+ lean_dec_ref(x_353);
+ x_408 = lean_box(0);
+}
+lean_ctor_set_uint8(x_407, sizeof(void*)*4, x_406);
+if (lean_is_scalar(x_408)) {
+ x_409 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_409 = x_408;
+}
+lean_ctor_set(x_409, 0, x_401);
+lean_ctor_set(x_409, 1, x_402);
+lean_ctor_set(x_409, 2, x_403);
+lean_ctor_set(x_409, 3, x_404);
+lean_ctor_set_uint8(x_409, sizeof(void*)*4, x_406);
+x_410 = 0;
+if (lean_is_scalar(x_400)) {
+ x_411 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_411 = x_400;
+}
+lean_ctor_set(x_411, 0, x_407);
+lean_ctor_set(x_411, 1, x_398);
+lean_ctor_set(x_411, 2, x_399);
+lean_ctor_set(x_411, 3, x_409);
+lean_ctor_set_uint8(x_411, sizeof(void*)*4, x_410);
+return x_411;
+}
+else
+{
+lean_object* x_412; lean_object* x_413; lean_object* x_414; lean_object* x_415; lean_object* x_416; lean_object* x_417; lean_object* x_418; lean_object* x_419; lean_object* x_420; lean_object* x_421; uint8_t x_422; lean_object* x_423; 
+x_412 = lean_ctor_get(x_351, 1);
+lean_inc(x_412);
+x_413 = lean_ctor_get(x_351, 2);
+lean_inc(x_413);
+if (lean_is_exclusive(x_351)) {
+ lean_ctor_release(x_351, 0);
+ lean_ctor_release(x_351, 1);
+ lean_ctor_release(x_351, 2);
+ lean_ctor_release(x_351, 3);
+ x_414 = x_351;
+} else {
+ lean_dec_ref(x_351);
+ x_414 = lean_box(0);
+}
+x_415 = lean_ctor_get(x_353, 0);
+lean_inc(x_415);
+x_416 = lean_ctor_get(x_353, 1);
+lean_inc(x_416);
+x_417 = lean_ctor_get(x_353, 2);
+lean_inc(x_417);
+x_418 = lean_ctor_get(x_353, 3);
+lean_inc(x_418);
+if (lean_is_exclusive(x_353)) {
+ lean_ctor_release(x_353, 0);
+ lean_ctor_release(x_353, 1);
+ lean_ctor_release(x_353, 2);
+ lean_ctor_release(x_353, 3);
+ x_419 = x_353;
+} else {
+ lean_dec_ref(x_353);
+ x_419 = lean_box(0);
+}
+if (lean_is_scalar(x_419)) {
+ x_420 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_420 = x_419;
+}
+lean_ctor_set(x_420, 0, x_415);
+lean_ctor_set(x_420, 1, x_416);
+lean_ctor_set(x_420, 2, x_417);
+lean_ctor_set(x_420, 3, x_418);
+lean_ctor_set_uint8(x_420, sizeof(void*)*4, x_397);
+if (lean_is_scalar(x_414)) {
+ x_421 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_421 = x_414;
+}
+lean_ctor_set(x_421, 0, x_420);
+lean_ctor_set(x_421, 1, x_412);
+lean_ctor_set(x_421, 2, x_413);
+lean_ctor_set(x_421, 3, x_393);
+lean_ctor_set_uint8(x_421, sizeof(void*)*4, x_352);
+x_422 = 1;
+x_423 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_423, 0, x_345);
+lean_ctor_set(x_423, 1, x_346);
+lean_ctor_set(x_423, 2, x_347);
+lean_ctor_set(x_423, 3, x_421);
+lean_ctor_set_uint8(x_423, sizeof(void*)*4, x_422);
+return x_423;
+}
+}
+}
+}
+}
+else
+{
+uint8_t x_424; lean_object* x_425; 
+x_424 = 1;
+x_425 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_425, 0, x_345);
+lean_ctor_set(x_425, 1, x_346);
+lean_ctor_set(x_425, 2, x_347);
+lean_ctor_set(x_425, 3, x_351);
+lean_ctor_set_uint8(x_425, sizeof(void*)*4, x_424);
+return x_425;
+}
+}
+else
+{
+uint8_t x_426; lean_object* x_427; 
+lean_dec(x_347);
+lean_dec(x_346);
+x_426 = 1;
+x_427 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_427, 0, x_345);
+lean_ctor_set(x_427, 1, x_2);
+lean_ctor_set(x_427, 2, x_3);
+lean_ctor_set(x_427, 3, x_348);
+lean_ctor_set_uint8(x_427, sizeof(void*)*4, x_426);
+return x_427;
+}
+}
+else
+{
+lean_object* x_428; uint8_t x_429; 
+x_428 = l_Lean_RBNode_ins___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__2(x_345, x_2, x_3);
+x_429 = lean_ctor_get_uint8(x_428, sizeof(void*)*4);
+if (x_429 == 0)
+{
+lean_object* x_430; 
+x_430 = lean_ctor_get(x_428, 0);
+lean_inc(x_430);
+if (lean_obj_tag(x_430) == 0)
+{
+lean_object* x_431; 
+x_431 = lean_ctor_get(x_428, 3);
+lean_inc(x_431);
+if (lean_obj_tag(x_431) == 0)
+{
+lean_object* x_432; lean_object* x_433; lean_object* x_434; lean_object* x_435; uint8_t x_436; lean_object* x_437; 
+x_432 = lean_ctor_get(x_428, 1);
+lean_inc(x_432);
+x_433 = lean_ctor_get(x_428, 2);
+lean_inc(x_433);
+if (lean_is_exclusive(x_428)) {
+ lean_ctor_release(x_428, 0);
+ lean_ctor_release(x_428, 1);
+ lean_ctor_release(x_428, 2);
+ lean_ctor_release(x_428, 3);
+ x_434 = x_428;
+} else {
+ lean_dec_ref(x_428);
+ x_434 = lean_box(0);
+}
+if (lean_is_scalar(x_434)) {
+ x_435 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_435 = x_434;
+}
+lean_ctor_set(x_435, 0, x_431);
+lean_ctor_set(x_435, 1, x_432);
+lean_ctor_set(x_435, 2, x_433);
+lean_ctor_set(x_435, 3, x_431);
+lean_ctor_set_uint8(x_435, sizeof(void*)*4, x_429);
+x_436 = 1;
+x_437 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_437, 0, x_435);
+lean_ctor_set(x_437, 1, x_346);
+lean_ctor_set(x_437, 2, x_347);
+lean_ctor_set(x_437, 3, x_348);
+lean_ctor_set_uint8(x_437, sizeof(void*)*4, x_436);
+return x_437;
+}
+else
+{
+uint8_t x_438; 
+x_438 = lean_ctor_get_uint8(x_431, sizeof(void*)*4);
+if (x_438 == 0)
+{
+lean_object* x_439; lean_object* x_440; lean_object* x_441; lean_object* x_442; lean_object* x_443; lean_object* x_444; lean_object* x_445; lean_object* x_446; uint8_t x_447; lean_object* x_448; lean_object* x_449; uint8_t x_450; lean_object* x_451; 
+x_439 = lean_ctor_get(x_428, 1);
+lean_inc(x_439);
+x_440 = lean_ctor_get(x_428, 2);
+lean_inc(x_440);
+if (lean_is_exclusive(x_428)) {
+ lean_ctor_release(x_428, 0);
+ lean_ctor_release(x_428, 1);
+ lean_ctor_release(x_428, 2);
+ lean_ctor_release(x_428, 3);
+ x_441 = x_428;
+} else {
+ lean_dec_ref(x_428);
+ x_441 = lean_box(0);
+}
+x_442 = lean_ctor_get(x_431, 0);
+lean_inc(x_442);
+x_443 = lean_ctor_get(x_431, 1);
+lean_inc(x_443);
+x_444 = lean_ctor_get(x_431, 2);
+lean_inc(x_444);
+x_445 = lean_ctor_get(x_431, 3);
+lean_inc(x_445);
+if (lean_is_exclusive(x_431)) {
+ lean_ctor_release(x_431, 0);
+ lean_ctor_release(x_431, 1);
+ lean_ctor_release(x_431, 2);
+ lean_ctor_release(x_431, 3);
+ x_446 = x_431;
+} else {
+ lean_dec_ref(x_431);
+ x_446 = lean_box(0);
+}
+x_447 = 1;
+if (lean_is_scalar(x_446)) {
+ x_448 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_448 = x_446;
+}
+lean_ctor_set(x_448, 0, x_430);
+lean_ctor_set(x_448, 1, x_439);
+lean_ctor_set(x_448, 2, x_440);
+lean_ctor_set(x_448, 3, x_442);
+lean_ctor_set_uint8(x_448, sizeof(void*)*4, x_447);
+if (lean_is_scalar(x_441)) {
+ x_449 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_449 = x_441;
+}
+lean_ctor_set(x_449, 0, x_445);
+lean_ctor_set(x_449, 1, x_346);
+lean_ctor_set(x_449, 2, x_347);
+lean_ctor_set(x_449, 3, x_348);
+lean_ctor_set_uint8(x_449, sizeof(void*)*4, x_447);
+x_450 = 0;
+x_451 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_451, 0, x_448);
+lean_ctor_set(x_451, 1, x_443);
+lean_ctor_set(x_451, 2, x_444);
+lean_ctor_set(x_451, 3, x_449);
+lean_ctor_set_uint8(x_451, sizeof(void*)*4, x_450);
+return x_451;
+}
+else
+{
+lean_object* x_452; uint8_t x_453; lean_object* x_454; 
+if (lean_is_exclusive(x_431)) {
+ lean_ctor_release(x_431, 0);
+ lean_ctor_release(x_431, 1);
+ lean_ctor_release(x_431, 2);
+ lean_ctor_release(x_431, 3);
+ x_452 = x_431;
+} else {
+ lean_dec_ref(x_431);
+ x_452 = lean_box(0);
+}
+x_453 = 1;
+if (lean_is_scalar(x_452)) {
+ x_454 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_454 = x_452;
+}
+lean_ctor_set(x_454, 0, x_428);
+lean_ctor_set(x_454, 1, x_346);
+lean_ctor_set(x_454, 2, x_347);
+lean_ctor_set(x_454, 3, x_348);
+lean_ctor_set_uint8(x_454, sizeof(void*)*4, x_453);
+return x_454;
+}
+}
+}
+else
+{
+uint8_t x_455; 
+x_455 = lean_ctor_get_uint8(x_430, sizeof(void*)*4);
+if (x_455 == 0)
+{
+lean_object* x_456; lean_object* x_457; lean_object* x_458; lean_object* x_459; lean_object* x_460; lean_object* x_461; lean_object* x_462; lean_object* x_463; lean_object* x_464; uint8_t x_465; lean_object* x_466; lean_object* x_467; uint8_t x_468; lean_object* x_469; 
+x_456 = lean_ctor_get(x_428, 1);
+lean_inc(x_456);
+x_457 = lean_ctor_get(x_428, 2);
+lean_inc(x_457);
+x_458 = lean_ctor_get(x_428, 3);
+lean_inc(x_458);
+if (lean_is_exclusive(x_428)) {
+ lean_ctor_release(x_428, 0);
+ lean_ctor_release(x_428, 1);
+ lean_ctor_release(x_428, 2);
+ lean_ctor_release(x_428, 3);
+ x_459 = x_428;
+} else {
+ lean_dec_ref(x_428);
+ x_459 = lean_box(0);
+}
+x_460 = lean_ctor_get(x_430, 0);
+lean_inc(x_460);
+x_461 = lean_ctor_get(x_430, 1);
+lean_inc(x_461);
+x_462 = lean_ctor_get(x_430, 2);
+lean_inc(x_462);
+x_463 = lean_ctor_get(x_430, 3);
+lean_inc(x_463);
+if (lean_is_exclusive(x_430)) {
+ lean_ctor_release(x_430, 0);
+ lean_ctor_release(x_430, 1);
+ lean_ctor_release(x_430, 2);
+ lean_ctor_release(x_430, 3);
+ x_464 = x_430;
+} else {
+ lean_dec_ref(x_430);
+ x_464 = lean_box(0);
+}
+x_465 = 1;
+if (lean_is_scalar(x_464)) {
+ x_466 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_466 = x_464;
+}
+lean_ctor_set(x_466, 0, x_460);
+lean_ctor_set(x_466, 1, x_461);
+lean_ctor_set(x_466, 2, x_462);
+lean_ctor_set(x_466, 3, x_463);
+lean_ctor_set_uint8(x_466, sizeof(void*)*4, x_465);
+if (lean_is_scalar(x_459)) {
+ x_467 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_467 = x_459;
+}
+lean_ctor_set(x_467, 0, x_458);
+lean_ctor_set(x_467, 1, x_346);
+lean_ctor_set(x_467, 2, x_347);
+lean_ctor_set(x_467, 3, x_348);
+lean_ctor_set_uint8(x_467, sizeof(void*)*4, x_465);
+x_468 = 0;
+x_469 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_469, 0, x_466);
+lean_ctor_set(x_469, 1, x_456);
+lean_ctor_set(x_469, 2, x_457);
+lean_ctor_set(x_469, 3, x_467);
+lean_ctor_set_uint8(x_469, sizeof(void*)*4, x_468);
+return x_469;
+}
+else
+{
+lean_object* x_470; 
+x_470 = lean_ctor_get(x_428, 3);
+lean_inc(x_470);
+if (lean_obj_tag(x_470) == 0)
+{
+lean_object* x_471; uint8_t x_472; lean_object* x_473; 
+if (lean_is_exclusive(x_430)) {
+ lean_ctor_release(x_430, 0);
+ lean_ctor_release(x_430, 1);
+ lean_ctor_release(x_430, 2);
+ lean_ctor_release(x_430, 3);
+ x_471 = x_430;
+} else {
+ lean_dec_ref(x_430);
+ x_471 = lean_box(0);
+}
+x_472 = 1;
+if (lean_is_scalar(x_471)) {
+ x_473 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_473 = x_471;
+}
+lean_ctor_set(x_473, 0, x_428);
+lean_ctor_set(x_473, 1, x_346);
+lean_ctor_set(x_473, 2, x_347);
+lean_ctor_set(x_473, 3, x_348);
+lean_ctor_set_uint8(x_473, sizeof(void*)*4, x_472);
+return x_473;
+}
+else
+{
+uint8_t x_474; 
+x_474 = lean_ctor_get_uint8(x_470, sizeof(void*)*4);
+if (x_474 == 0)
+{
+lean_object* x_475; lean_object* x_476; lean_object* x_477; lean_object* x_478; lean_object* x_479; lean_object* x_480; lean_object* x_481; lean_object* x_482; uint8_t x_483; lean_object* x_484; lean_object* x_485; lean_object* x_486; uint8_t x_487; lean_object* x_488; 
+x_475 = lean_ctor_get(x_428, 1);
+lean_inc(x_475);
+x_476 = lean_ctor_get(x_428, 2);
+lean_inc(x_476);
+if (lean_is_exclusive(x_428)) {
+ lean_ctor_release(x_428, 0);
+ lean_ctor_release(x_428, 1);
+ lean_ctor_release(x_428, 2);
+ lean_ctor_release(x_428, 3);
+ x_477 = x_428;
+} else {
+ lean_dec_ref(x_428);
+ x_477 = lean_box(0);
+}
+x_478 = lean_ctor_get(x_470, 0);
+lean_inc(x_478);
+x_479 = lean_ctor_get(x_470, 1);
+lean_inc(x_479);
+x_480 = lean_ctor_get(x_470, 2);
+lean_inc(x_480);
+x_481 = lean_ctor_get(x_470, 3);
+lean_inc(x_481);
+if (lean_is_exclusive(x_470)) {
+ lean_ctor_release(x_470, 0);
+ lean_ctor_release(x_470, 1);
+ lean_ctor_release(x_470, 2);
+ lean_ctor_release(x_470, 3);
+ x_482 = x_470;
+} else {
+ lean_dec_ref(x_470);
+ x_482 = lean_box(0);
+}
+x_483 = 1;
+lean_inc(x_430);
+if (lean_is_scalar(x_482)) {
+ x_484 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_484 = x_482;
+}
+lean_ctor_set(x_484, 0, x_430);
+lean_ctor_set(x_484, 1, x_475);
+lean_ctor_set(x_484, 2, x_476);
+lean_ctor_set(x_484, 3, x_478);
+if (lean_is_exclusive(x_430)) {
+ lean_ctor_release(x_430, 0);
+ lean_ctor_release(x_430, 1);
+ lean_ctor_release(x_430, 2);
+ lean_ctor_release(x_430, 3);
+ x_485 = x_430;
+} else {
+ lean_dec_ref(x_430);
+ x_485 = lean_box(0);
+}
+lean_ctor_set_uint8(x_484, sizeof(void*)*4, x_483);
+if (lean_is_scalar(x_485)) {
+ x_486 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_486 = x_485;
+}
+lean_ctor_set(x_486, 0, x_481);
+lean_ctor_set(x_486, 1, x_346);
+lean_ctor_set(x_486, 2, x_347);
+lean_ctor_set(x_486, 3, x_348);
+lean_ctor_set_uint8(x_486, sizeof(void*)*4, x_483);
+x_487 = 0;
+if (lean_is_scalar(x_477)) {
+ x_488 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_488 = x_477;
+}
+lean_ctor_set(x_488, 0, x_484);
+lean_ctor_set(x_488, 1, x_479);
+lean_ctor_set(x_488, 2, x_480);
+lean_ctor_set(x_488, 3, x_486);
+lean_ctor_set_uint8(x_488, sizeof(void*)*4, x_487);
+return x_488;
+}
+else
+{
+lean_object* x_489; lean_object* x_490; lean_object* x_491; lean_object* x_492; lean_object* x_493; lean_object* x_494; lean_object* x_495; lean_object* x_496; lean_object* x_497; lean_object* x_498; uint8_t x_499; lean_object* x_500; 
+x_489 = lean_ctor_get(x_428, 1);
+lean_inc(x_489);
+x_490 = lean_ctor_get(x_428, 2);
+lean_inc(x_490);
+if (lean_is_exclusive(x_428)) {
+ lean_ctor_release(x_428, 0);
+ lean_ctor_release(x_428, 1);
+ lean_ctor_release(x_428, 2);
+ lean_ctor_release(x_428, 3);
+ x_491 = x_428;
+} else {
+ lean_dec_ref(x_428);
+ x_491 = lean_box(0);
+}
+x_492 = lean_ctor_get(x_430, 0);
+lean_inc(x_492);
+x_493 = lean_ctor_get(x_430, 1);
+lean_inc(x_493);
+x_494 = lean_ctor_get(x_430, 2);
+lean_inc(x_494);
+x_495 = lean_ctor_get(x_430, 3);
+lean_inc(x_495);
+if (lean_is_exclusive(x_430)) {
+ lean_ctor_release(x_430, 0);
+ lean_ctor_release(x_430, 1);
+ lean_ctor_release(x_430, 2);
+ lean_ctor_release(x_430, 3);
+ x_496 = x_430;
+} else {
+ lean_dec_ref(x_430);
+ x_496 = lean_box(0);
+}
+if (lean_is_scalar(x_496)) {
+ x_497 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_497 = x_496;
+}
+lean_ctor_set(x_497, 0, x_492);
+lean_ctor_set(x_497, 1, x_493);
+lean_ctor_set(x_497, 2, x_494);
+lean_ctor_set(x_497, 3, x_495);
+lean_ctor_set_uint8(x_497, sizeof(void*)*4, x_474);
+if (lean_is_scalar(x_491)) {
+ x_498 = lean_alloc_ctor(1, 4, 1);
+} else {
+ x_498 = x_491;
+}
+lean_ctor_set(x_498, 0, x_497);
+lean_ctor_set(x_498, 1, x_489);
+lean_ctor_set(x_498, 2, x_490);
+lean_ctor_set(x_498, 3, x_470);
+lean_ctor_set_uint8(x_498, sizeof(void*)*4, x_429);
+x_499 = 1;
+x_500 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_500, 0, x_498);
+lean_ctor_set(x_500, 1, x_346);
+lean_ctor_set(x_500, 2, x_347);
+lean_ctor_set(x_500, 3, x_348);
+lean_ctor_set_uint8(x_500, sizeof(void*)*4, x_499);
+return x_500;
+}
+}
+}
+}
+}
+else
+{
+uint8_t x_501; lean_object* x_502; 
+x_501 = 1;
+x_502 = lean_alloc_ctor(1, 4, 1);
+lean_ctor_set(x_502, 0, x_428);
+lean_ctor_set(x_502, 1, x_346);
+lean_ctor_set(x_502, 2, x_347);
+lean_ctor_set(x_502, 3, x_348);
+lean_ctor_set_uint8(x_502, sizeof(void*)*4, x_501);
+return x_502;
+}
+}
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_RBNode_insert___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
+_start:
+{
+uint8_t x_4; 
+x_4 = l_Lean_RBNode_isRed___rarg(x_1);
+if (x_4 == 0)
+{
+lean_object* x_5; 
+x_5 = l_Lean_RBNode_ins___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__2(x_1, x_2, x_3);
+return x_5;
+}
+else
+{
+lean_object* x_6; lean_object* x_7; 
+x_6 = l_Lean_RBNode_ins___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__2(x_1, x_2, x_3);
+x_7 = l_Lean_RBNode_setBlack___rarg(x_6);
+return x_7;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__3(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, lean_object* x_11) {
+_start:
+{
+uint8_t x_12; 
+x_12 = !lean_is_exclusive(x_2);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; 
+x_13 = lean_ctor_get(x_2, 0);
+x_14 = lean_ctor_get(x_2, 1);
+lean_inc(x_13);
+x_15 = l_Lean_Meta_Grind_getENode(x_13, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+if (lean_obj_tag(x_15) == 0)
+{
+uint8_t x_16; 
+x_16 = !lean_is_exclusive(x_15);
+if (x_16 == 0)
+{
+lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; 
+x_17 = lean_ctor_get(x_15, 0);
+x_18 = lean_ctor_get(x_15, 1);
+x_19 = lean_ctor_get(x_17, 7);
+lean_inc(x_19);
+x_20 = lean_ctor_get(x_17, 0);
+lean_inc(x_20);
+x_21 = lean_ctor_get(x_17, 4);
+lean_inc(x_21);
+lean_dec(x_17);
+x_22 = l_Lean_RBNode_insert___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__1(x_14, x_19, x_20);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_ctor_set(x_2, 1, x_22);
+lean_ctor_set(x_15, 0, x_2);
+return x_15;
+}
+else
+{
+lean_object* x_23; 
+lean_free_object(x_15);
+lean_dec(x_13);
+x_23 = lean_ctor_get(x_21, 0);
+lean_inc(x_23);
+lean_dec(x_21);
+lean_ctor_set(x_2, 1, x_22);
+lean_ctor_set(x_2, 0, x_23);
+x_11 = x_18;
+goto _start;
+}
+}
+else
+{
+lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; 
+x_25 = lean_ctor_get(x_15, 0);
+x_26 = lean_ctor_get(x_15, 1);
+lean_inc(x_26);
+lean_inc(x_25);
+lean_dec(x_15);
+x_27 = lean_ctor_get(x_25, 7);
+lean_inc(x_27);
+x_28 = lean_ctor_get(x_25, 0);
+lean_inc(x_28);
+x_29 = lean_ctor_get(x_25, 4);
+lean_inc(x_29);
+lean_dec(x_25);
+x_30 = l_Lean_RBNode_insert___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__1(x_14, x_27, x_28);
+if (lean_obj_tag(x_29) == 0)
+{
+lean_object* x_31; 
+lean_ctor_set(x_2, 1, x_30);
+x_31 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_31, 0, x_2);
+lean_ctor_set(x_31, 1, x_26);
+return x_31;
+}
+else
+{
+lean_object* x_32; 
+lean_dec(x_13);
+x_32 = lean_ctor_get(x_29, 0);
+lean_inc(x_32);
+lean_dec(x_29);
+lean_ctor_set(x_2, 1, x_30);
+lean_ctor_set(x_2, 0, x_32);
+x_11 = x_26;
+goto _start;
+}
+}
+}
+else
+{
+uint8_t x_34; 
+lean_free_object(x_2);
+lean_dec(x_14);
+lean_dec(x_13);
+x_34 = !lean_is_exclusive(x_15);
+if (x_34 == 0)
+{
+return x_15;
+}
+else
+{
+lean_object* x_35; lean_object* x_36; lean_object* x_37; 
+x_35 = lean_ctor_get(x_15, 0);
+x_36 = lean_ctor_get(x_15, 1);
+lean_inc(x_36);
+lean_inc(x_35);
+lean_dec(x_15);
+x_37 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_37, 0, x_35);
+lean_ctor_set(x_37, 1, x_36);
+return x_37;
+}
+}
+}
+else
+{
+lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+x_38 = lean_ctor_get(x_2, 0);
+x_39 = lean_ctor_get(x_2, 1);
+lean_inc(x_39);
+lean_inc(x_38);
+lean_dec(x_2);
+lean_inc(x_38);
+x_40 = l_Lean_Meta_Grind_getENode(x_38, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+if (lean_obj_tag(x_40) == 0)
+{
+lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; 
+x_41 = lean_ctor_get(x_40, 0);
+lean_inc(x_41);
+x_42 = lean_ctor_get(x_40, 1);
+lean_inc(x_42);
+if (lean_is_exclusive(x_40)) {
+ lean_ctor_release(x_40, 0);
+ lean_ctor_release(x_40, 1);
+ x_43 = x_40;
+} else {
+ lean_dec_ref(x_40);
+ x_43 = lean_box(0);
+}
+x_44 = lean_ctor_get(x_41, 7);
+lean_inc(x_44);
+x_45 = lean_ctor_get(x_41, 0);
+lean_inc(x_45);
+x_46 = lean_ctor_get(x_41, 4);
+lean_inc(x_46);
+lean_dec(x_41);
+x_47 = l_Lean_RBNode_insert___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__1(x_39, x_44, x_45);
+if (lean_obj_tag(x_46) == 0)
+{
+lean_object* x_48; lean_object* x_49; 
+x_48 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_48, 0, x_38);
+lean_ctor_set(x_48, 1, x_47);
+if (lean_is_scalar(x_43)) {
+ x_49 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_49 = x_43;
+}
+lean_ctor_set(x_49, 0, x_48);
+lean_ctor_set(x_49, 1, x_42);
+return x_49;
+}
+else
+{
+lean_object* x_50; lean_object* x_51; 
+lean_dec(x_43);
+lean_dec(x_38);
+x_50 = lean_ctor_get(x_46, 0);
+lean_inc(x_50);
+lean_dec(x_46);
+x_51 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_51, 0, x_50);
+lean_ctor_set(x_51, 1, x_47);
+x_2 = x_51;
+x_11 = x_42;
+goto _start;
+}
+}
+else
+{
+lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; 
+lean_dec(x_39);
+lean_dec(x_38);
+x_53 = lean_ctor_get(x_40, 0);
+lean_inc(x_53);
+x_54 = lean_ctor_get(x_40, 1);
+lean_inc(x_54);
+if (lean_is_exclusive(x_40)) {
+ lean_ctor_release(x_40, 0);
+ lean_ctor_release(x_40, 1);
+ x_55 = x_40;
+} else {
+ lean_dec_ref(x_40);
+ x_55 = lean_box(0);
+}
+if (lean_is_scalar(x_55)) {
+ x_56 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_56 = x_55;
+}
+lean_ctor_set(x_56, 0, x_53);
+lean_ctor_set(x_56, 1, x_54);
+return x_56;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__3___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__4(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:
+{
+uint8_t x_11; 
+x_11 = !lean_is_exclusive(x_1);
+if (x_11 == 0)
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; 
+x_12 = lean_ctor_get(x_1, 0);
+x_13 = lean_ctor_get(x_1, 1);
+lean_inc(x_12);
+x_14 = l_Lean_Meta_Grind_getENode(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_14) == 0)
+{
+uint8_t x_15; 
+x_15 = !lean_is_exclusive(x_14);
+if (x_15 == 0)
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_16 = lean_ctor_get(x_14, 0);
+x_17 = lean_ctor_get(x_14, 1);
+x_18 = lean_ctor_get(x_16, 7);
+lean_inc(x_18);
+x_19 = lean_ctor_get(x_16, 0);
+lean_inc(x_19);
+x_20 = lean_ctor_get(x_16, 4);
+lean_inc(x_20);
+lean_dec(x_16);
+x_21 = l_Lean_RBNode_insert___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__1(x_13, x_18, x_19);
+if (lean_obj_tag(x_20) == 0)
+{
+lean_ctor_set(x_1, 1, x_21);
+lean_ctor_set(x_14, 0, x_1);
+return x_14;
+}
+else
+{
+lean_object* x_22; 
+lean_free_object(x_14);
+lean_dec(x_12);
+x_22 = lean_ctor_get(x_20, 0);
+lean_inc(x_22);
+lean_dec(x_20);
+lean_ctor_set(x_1, 1, x_21);
+lean_ctor_set(x_1, 0, x_22);
+x_10 = x_17;
+goto _start;
+}
+}
+else
+{
+lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_24 = lean_ctor_get(x_14, 0);
+x_25 = lean_ctor_get(x_14, 1);
+lean_inc(x_25);
+lean_inc(x_24);
+lean_dec(x_14);
+x_26 = lean_ctor_get(x_24, 7);
+lean_inc(x_26);
+x_27 = lean_ctor_get(x_24, 0);
+lean_inc(x_27);
+x_28 = lean_ctor_get(x_24, 4);
+lean_inc(x_28);
+lean_dec(x_24);
+x_29 = l_Lean_RBNode_insert___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__1(x_13, x_26, x_27);
+if (lean_obj_tag(x_28) == 0)
+{
+lean_object* x_30; 
+lean_ctor_set(x_1, 1, x_29);
+x_30 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_30, 0, x_1);
+lean_ctor_set(x_30, 1, x_25);
+return x_30;
+}
+else
+{
+lean_object* x_31; 
+lean_dec(x_12);
+x_31 = lean_ctor_get(x_28, 0);
+lean_inc(x_31);
+lean_dec(x_28);
+lean_ctor_set(x_1, 1, x_29);
+lean_ctor_set(x_1, 0, x_31);
+x_10 = x_25;
+goto _start;
+}
+}
+}
+else
+{
+uint8_t x_33; 
+lean_free_object(x_1);
+lean_dec(x_13);
+lean_dec(x_12);
+x_33 = !lean_is_exclusive(x_14);
+if (x_33 == 0)
+{
+return x_14;
+}
+else
+{
+lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_34 = lean_ctor_get(x_14, 0);
+x_35 = lean_ctor_get(x_14, 1);
+lean_inc(x_35);
+lean_inc(x_34);
+lean_dec(x_14);
+x_36 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_36, 0, x_34);
+lean_ctor_set(x_36, 1, x_35);
+return x_36;
+}
+}
+}
+else
+{
+lean_object* x_37; lean_object* x_38; lean_object* x_39; 
+x_37 = lean_ctor_get(x_1, 0);
+x_38 = lean_ctor_get(x_1, 1);
+lean_inc(x_38);
+lean_inc(x_37);
+lean_dec(x_1);
+lean_inc(x_37);
+x_39 = l_Lean_Meta_Grind_getENode(x_37, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_39) == 0)
+{
+lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; 
+x_40 = lean_ctor_get(x_39, 0);
+lean_inc(x_40);
+x_41 = lean_ctor_get(x_39, 1);
+lean_inc(x_41);
+if (lean_is_exclusive(x_39)) {
+ lean_ctor_release(x_39, 0);
+ lean_ctor_release(x_39, 1);
+ x_42 = x_39;
+} else {
+ lean_dec_ref(x_39);
+ x_42 = lean_box(0);
+}
+x_43 = lean_ctor_get(x_40, 7);
+lean_inc(x_43);
+x_44 = lean_ctor_get(x_40, 0);
+lean_inc(x_44);
+x_45 = lean_ctor_get(x_40, 4);
+lean_inc(x_45);
+lean_dec(x_40);
+x_46 = l_Lean_RBNode_insert___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__1(x_38, x_43, x_44);
+if (lean_obj_tag(x_45) == 0)
+{
+lean_object* x_47; lean_object* x_48; 
+x_47 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_47, 0, x_37);
+lean_ctor_set(x_47, 1, x_46);
+if (lean_is_scalar(x_42)) {
+ x_48 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_48 = x_42;
+}
+lean_ctor_set(x_48, 0, x_47);
+lean_ctor_set(x_48, 1, x_41);
+return x_48;
+}
+else
+{
+lean_object* x_49; lean_object* x_50; 
+lean_dec(x_42);
+lean_dec(x_37);
+x_49 = lean_ctor_get(x_45, 0);
+lean_inc(x_49);
+lean_dec(x_45);
+x_50 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_50, 0, x_49);
+lean_ctor_set(x_50, 1, x_46);
+x_1 = x_50;
+x_10 = x_41;
+goto _start;
+}
+}
+else
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; 
+lean_dec(x_38);
+lean_dec(x_37);
+x_52 = lean_ctor_get(x_39, 0);
+lean_inc(x_52);
+x_53 = lean_ctor_get(x_39, 1);
+lean_inc(x_53);
+if (lean_is_exclusive(x_39)) {
+ lean_ctor_release(x_39, 0);
+ lean_ctor_release(x_39, 1);
+ x_54 = x_39;
+} else {
+ lean_dec_ref(x_39);
+ x_54 = lean_box(0);
+}
+if (lean_is_scalar(x_54)) {
+ x_55 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_55 = x_54;
+}
+lean_ctor_set(x_55, 0, x_52);
+lean_ctor_set(x_55, 1, x_53);
+return x_55;
+}
+}
+}
+}
+static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_instMonadMetaM;
+x_2 = l_ReaderT_instMonad___rarg(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__1;
+x_2 = l_ReaderT_instMonad___rarg(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__2;
+x_2 = l_ReaderT_instMonad___rarg(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__3;
+x_2 = l_ReaderT_instMonad___rarg(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__4;
+x_2 = l_instInhabitedPUnit;
+x_3 = l_instInhabitedOfMonad___rarg(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5(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:
+{
+lean_object* x_11; lean_object* x_12; lean_object* x_13; 
+x_11 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__5;
+x_12 = lean_panic_fn(x_11, x_1);
+x_13 = lean_apply_9(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_RBNode_find___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__6(lean_object* x_1, lean_object* x_2) {
+_start:
+{
+if (lean_obj_tag(x_1) == 0)
+{
+lean_object* x_3; 
+x_3 = lean_box(0);
+return x_3;
+}
+else
+{
+lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; uint8_t x_8; 
+x_4 = lean_ctor_get(x_1, 0);
+x_5 = lean_ctor_get(x_1, 1);
+x_6 = lean_ctor_get(x_1, 2);
+x_7 = lean_ctor_get(x_1, 3);
+x_8 = lean_nat_dec_lt(x_2, x_5);
+if (x_8 == 0)
+{
+uint8_t x_9; 
+x_9 = lean_nat_dec_eq(x_2, x_5);
+if (x_9 == 0)
+{
+x_1 = x_7;
+goto _start;
+}
+else
+{
+lean_object* x_11; 
+lean_inc(x_6);
+x_11 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_11, 0, x_6);
+return x_11;
+}
+}
+else
+{
+x_1 = x_4;
+goto _start;
+}
+}
+}
+}
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Lean.Meta.Tactic.Grind.Proof", 28, 28);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("_private.Lean.Meta.Tactic.Grind.Proof.0.Lean.Meta.Grind.findCommon", 66, 66);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("unreachable code has been reached", 33, 33);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1;
+x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__2;
+x_3 = lean_unsigned_to_nat(66u);
+x_4 = lean_unsigned_to_nat(35u);
+x_5 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__3;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; 
+x_14 = lean_ctor_get(x_1, 4);
+lean_inc(x_14);
+lean_dec(x_1);
+if (lean_obj_tag(x_14) == 0)
+{
+lean_object* x_15; lean_object* x_16; 
+x_15 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__4;
+x_16 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5(x_15, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+if (lean_obj_tag(x_16) == 0)
+{
+uint8_t x_17; 
+x_17 = !lean_is_exclusive(x_16);
+if (x_17 == 0)
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_18 = lean_ctor_get(x_16, 0);
+lean_dec(x_18);
+x_19 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_19, 0, x_2);
+lean_ctor_set(x_19, 1, x_3);
+x_20 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_20, 0, x_19);
+lean_ctor_set(x_16, 0, x_20);
+return x_16;
+}
+else
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_21 = lean_ctor_get(x_16, 1);
+lean_inc(x_21);
+lean_dec(x_16);
+x_22 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_22, 0, x_2);
+lean_ctor_set(x_22, 1, x_3);
+x_23 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_23, 0, x_22);
+x_24 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_24, 0, x_23);
+lean_ctor_set(x_24, 1, x_21);
+return x_24;
+}
+}
+else
+{
+uint8_t x_25; 
+lean_dec(x_3);
+lean_dec(x_2);
+x_25 = !lean_is_exclusive(x_16);
+if (x_25 == 0)
+{
+return x_16;
+}
+else
+{
+lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_26 = lean_ctor_get(x_16, 0);
+x_27 = lean_ctor_get(x_16, 1);
+lean_inc(x_27);
+lean_inc(x_26);
+lean_dec(x_16);
+x_28 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_28, 0, x_26);
+lean_ctor_set(x_28, 1, x_27);
+return x_28;
+}
+}
+}
+else
+{
+uint8_t x_29; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+x_29 = !lean_is_exclusive(x_14);
+if (x_29 == 0)
+{
+lean_object* x_30; lean_object* x_31; lean_object* x_32; 
+x_30 = lean_ctor_get(x_14, 0);
+x_31 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_31, 0, x_2);
+lean_ctor_set(x_31, 1, x_30);
+lean_ctor_set(x_14, 0, x_31);
+x_32 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_32, 0, x_14);
+lean_ctor_set(x_32, 1, x_13);
+return x_32;
+}
+else
+{
+lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_33 = lean_ctor_get(x_14, 0);
+lean_inc(x_33);
+lean_dec(x_14);
+x_34 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_34, 0, x_2);
+lean_ctor_set(x_34, 1, x_33);
+x_35 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_35, 0, x_34);
+x_36 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_36, 0, x_35);
+lean_ctor_set(x_36, 1, x_13);
+return x_36;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7(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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+uint8_t x_14; 
+x_14 = !lean_is_exclusive(x_4);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; 
+x_15 = lean_ctor_get(x_4, 1);
+x_16 = lean_ctor_get(x_4, 0);
+lean_dec(x_16);
+lean_inc(x_15);
+x_17 = l_Lean_Meta_Grind_getENode(x_15, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+if (lean_obj_tag(x_17) == 0)
+{
+uint8_t x_18; 
+x_18 = !lean_is_exclusive(x_17);
+if (x_18 == 0)
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; 
+x_19 = lean_ctor_get(x_17, 0);
+x_20 = lean_ctor_get(x_17, 1);
+x_21 = lean_ctor_get(x_19, 7);
+lean_inc(x_21);
+x_22 = l_Lean_RBNode_find___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__6(x_2, x_21);
+lean_dec(x_21);
+if (lean_obj_tag(x_22) == 0)
+{
+lean_object* x_23; lean_object* x_24; 
+lean_free_object(x_17);
+lean_free_object(x_4);
+x_23 = lean_box(0);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_3);
+x_24 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1(x_19, x_3, x_15, x_23, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_20);
+if (lean_obj_tag(x_24) == 0)
+{
+lean_object* x_25; 
+x_25 = lean_ctor_get(x_24, 0);
+lean_inc(x_25);
+if (lean_obj_tag(x_25) == 0)
+{
+uint8_t x_26; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+x_26 = !lean_is_exclusive(x_24);
+if (x_26 == 0)
+{
+lean_object* x_27; lean_object* x_28; 
+x_27 = lean_ctor_get(x_24, 0);
+lean_dec(x_27);
+x_28 = lean_ctor_get(x_25, 0);
+lean_inc(x_28);
+lean_dec(x_25);
+lean_ctor_set(x_24, 0, x_28);
+return x_24;
+}
+else
+{
+lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+x_29 = lean_ctor_get(x_24, 1);
+lean_inc(x_29);
+lean_dec(x_24);
+x_30 = lean_ctor_get(x_25, 0);
+lean_inc(x_30);
+lean_dec(x_25);
+x_31 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_31, 0, x_30);
+lean_ctor_set(x_31, 1, x_29);
+return x_31;
+}
+}
+else
+{
+lean_object* x_32; lean_object* x_33; 
+x_32 = lean_ctor_get(x_24, 1);
+lean_inc(x_32);
+lean_dec(x_24);
+x_33 = lean_ctor_get(x_25, 0);
+lean_inc(x_33);
+lean_dec(x_25);
+x_4 = x_33;
+x_13 = x_32;
+goto _start;
+}
+}
+else
+{
+uint8_t x_35; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+x_35 = !lean_is_exclusive(x_24);
+if (x_35 == 0)
+{
+return x_24;
+}
+else
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; 
+x_36 = lean_ctor_get(x_24, 0);
+x_37 = lean_ctor_get(x_24, 1);
+lean_inc(x_37);
+lean_inc(x_36);
+lean_dec(x_24);
+x_38 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_38, 0, x_36);
+lean_ctor_set(x_38, 1, x_37);
+return x_38;
+}
+}
+}
+else
+{
+uint8_t x_39; 
+lean_dec(x_19);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+x_39 = !lean_is_exclusive(x_22);
+if (x_39 == 0)
+{
+lean_ctor_set(x_4, 0, x_22);
+lean_ctor_set(x_17, 0, x_4);
+return x_17;
+}
+else
+{
+lean_object* x_40; lean_object* x_41; 
+x_40 = lean_ctor_get(x_22, 0);
+lean_inc(x_40);
+lean_dec(x_22);
+x_41 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_41, 0, x_40);
+lean_ctor_set(x_4, 0, x_41);
+lean_ctor_set(x_17, 0, x_4);
+return x_17;
+}
+}
+}
+else
+{
+lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; 
+x_42 = lean_ctor_get(x_17, 0);
+x_43 = lean_ctor_get(x_17, 1);
+lean_inc(x_43);
+lean_inc(x_42);
+lean_dec(x_17);
+x_44 = lean_ctor_get(x_42, 7);
+lean_inc(x_44);
+x_45 = l_Lean_RBNode_find___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__6(x_2, x_44);
+lean_dec(x_44);
+if (lean_obj_tag(x_45) == 0)
+{
+lean_object* x_46; lean_object* x_47; 
+lean_free_object(x_4);
+x_46 = lean_box(0);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_3);
+x_47 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1(x_42, x_3, x_15, x_46, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_43);
+if (lean_obj_tag(x_47) == 0)
+{
+lean_object* x_48; 
+x_48 = lean_ctor_get(x_47, 0);
+lean_inc(x_48);
+if (lean_obj_tag(x_48) == 0)
+{
+lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+x_49 = lean_ctor_get(x_47, 1);
+lean_inc(x_49);
+if (lean_is_exclusive(x_47)) {
+ lean_ctor_release(x_47, 0);
+ lean_ctor_release(x_47, 1);
+ x_50 = x_47;
+} else {
+ lean_dec_ref(x_47);
+ x_50 = lean_box(0);
+}
+x_51 = lean_ctor_get(x_48, 0);
+lean_inc(x_51);
+lean_dec(x_48);
+if (lean_is_scalar(x_50)) {
+ x_52 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_52 = x_50;
+}
+lean_ctor_set(x_52, 0, x_51);
+lean_ctor_set(x_52, 1, x_49);
+return x_52;
+}
+else
+{
+lean_object* x_53; lean_object* x_54; 
+x_53 = lean_ctor_get(x_47, 1);
+lean_inc(x_53);
+lean_dec(x_47);
+x_54 = lean_ctor_get(x_48, 0);
+lean_inc(x_54);
+lean_dec(x_48);
+x_4 = x_54;
+x_13 = x_53;
+goto _start;
+}
+}
+else
+{
+lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+x_56 = lean_ctor_get(x_47, 0);
+lean_inc(x_56);
+x_57 = lean_ctor_get(x_47, 1);
+lean_inc(x_57);
+if (lean_is_exclusive(x_47)) {
+ lean_ctor_release(x_47, 0);
+ lean_ctor_release(x_47, 1);
+ x_58 = x_47;
+} else {
+ lean_dec_ref(x_47);
+ x_58 = lean_box(0);
+}
+if (lean_is_scalar(x_58)) {
+ x_59 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_59 = x_58;
+}
+lean_ctor_set(x_59, 0, x_56);
+lean_ctor_set(x_59, 1, x_57);
+return x_59;
+}
+}
+else
+{
+lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; 
+lean_dec(x_42);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+x_60 = lean_ctor_get(x_45, 0);
+lean_inc(x_60);
+if (lean_is_exclusive(x_45)) {
+ lean_ctor_release(x_45, 0);
+ x_61 = x_45;
+} else {
+ lean_dec_ref(x_45);
+ x_61 = lean_box(0);
+}
+if (lean_is_scalar(x_61)) {
+ x_62 = lean_alloc_ctor(1, 1, 0);
+} else {
+ x_62 = x_61;
+}
+lean_ctor_set(x_62, 0, x_60);
+lean_ctor_set(x_4, 0, x_62);
+x_63 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_63, 0, x_4);
+lean_ctor_set(x_63, 1, x_43);
+return x_63;
+}
+}
+}
+else
+{
+uint8_t x_64; 
+lean_free_object(x_4);
+lean_dec(x_15);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+x_64 = !lean_is_exclusive(x_17);
+if (x_64 == 0)
+{
+return x_17;
+}
+else
+{
+lean_object* x_65; lean_object* x_66; lean_object* x_67; 
+x_65 = lean_ctor_get(x_17, 0);
+x_66 = lean_ctor_get(x_17, 1);
+lean_inc(x_66);
+lean_inc(x_65);
+lean_dec(x_17);
+x_67 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_67, 0, x_65);
+lean_ctor_set(x_67, 1, x_66);
+return x_67;
+}
+}
+}
+else
+{
+lean_object* x_68; lean_object* x_69; 
+x_68 = lean_ctor_get(x_4, 1);
+lean_inc(x_68);
+lean_dec(x_4);
+lean_inc(x_68);
+x_69 = l_Lean_Meta_Grind_getENode(x_68, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+if (lean_obj_tag(x_69) == 0)
+{
+lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; 
+x_70 = lean_ctor_get(x_69, 0);
+lean_inc(x_70);
+x_71 = lean_ctor_get(x_69, 1);
+lean_inc(x_71);
+if (lean_is_exclusive(x_69)) {
+ lean_ctor_release(x_69, 0);
+ lean_ctor_release(x_69, 1);
+ x_72 = x_69;
+} else {
+ lean_dec_ref(x_69);
+ x_72 = lean_box(0);
+}
+x_73 = lean_ctor_get(x_70, 7);
+lean_inc(x_73);
+x_74 = l_Lean_RBNode_find___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__6(x_2, x_73);
+lean_dec(x_73);
+if (lean_obj_tag(x_74) == 0)
+{
+lean_object* x_75; lean_object* x_76; 
+lean_dec(x_72);
+x_75 = lean_box(0);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_3);
+x_76 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1(x_70, x_3, x_68, x_75, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_71);
+if (lean_obj_tag(x_76) == 0)
+{
+lean_object* x_77; 
+x_77 = lean_ctor_get(x_76, 0);
+lean_inc(x_77);
+if (lean_obj_tag(x_77) == 0)
+{
+lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+x_78 = lean_ctor_get(x_76, 1);
+lean_inc(x_78);
+if (lean_is_exclusive(x_76)) {
+ lean_ctor_release(x_76, 0);
+ lean_ctor_release(x_76, 1);
+ x_79 = x_76;
+} else {
+ lean_dec_ref(x_76);
+ x_79 = lean_box(0);
+}
+x_80 = lean_ctor_get(x_77, 0);
+lean_inc(x_80);
+lean_dec(x_77);
+if (lean_is_scalar(x_79)) {
+ x_81 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_81 = x_79;
+}
+lean_ctor_set(x_81, 0, x_80);
+lean_ctor_set(x_81, 1, x_78);
+return x_81;
+}
+else
+{
+lean_object* x_82; lean_object* x_83; 
+x_82 = lean_ctor_get(x_76, 1);
+lean_inc(x_82);
+lean_dec(x_76);
+x_83 = lean_ctor_get(x_77, 0);
+lean_inc(x_83);
+lean_dec(x_77);
+x_4 = x_83;
+x_13 = x_82;
+goto _start;
+}
+}
+else
+{
+lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+x_85 = lean_ctor_get(x_76, 0);
+lean_inc(x_85);
+x_86 = lean_ctor_get(x_76, 1);
+lean_inc(x_86);
+if (lean_is_exclusive(x_76)) {
+ lean_ctor_release(x_76, 0);
+ lean_ctor_release(x_76, 1);
+ x_87 = x_76;
+} else {
+ lean_dec_ref(x_76);
+ x_87 = lean_box(0);
+}
+if (lean_is_scalar(x_87)) {
+ x_88 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_88 = x_87;
+}
+lean_ctor_set(x_88, 0, x_85);
+lean_ctor_set(x_88, 1, x_86);
+return x_88;
+}
+}
+else
+{
+lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; 
+lean_dec(x_70);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+x_89 = lean_ctor_get(x_74, 0);
+lean_inc(x_89);
+if (lean_is_exclusive(x_74)) {
+ lean_ctor_release(x_74, 0);
+ x_90 = x_74;
+} else {
+ lean_dec_ref(x_74);
+ x_90 = lean_box(0);
+}
+if (lean_is_scalar(x_90)) {
+ x_91 = lean_alloc_ctor(1, 1, 0);
+} else {
+ x_91 = x_90;
+}
+lean_ctor_set(x_91, 0, x_89);
+x_92 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_92, 0, x_91);
+lean_ctor_set(x_92, 1, x_68);
+if (lean_is_scalar(x_72)) {
+ x_93 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_93 = x_72;
+}
+lean_ctor_set(x_93, 0, x_92);
+lean_ctor_set(x_93, 1, x_71);
+return x_93;
+}
+}
+else
+{
+lean_object* x_94; lean_object* x_95; lean_object* x_96; lean_object* x_97; 
+lean_dec(x_68);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+x_94 = lean_ctor_get(x_69, 0);
+lean_inc(x_94);
+x_95 = lean_ctor_get(x_69, 1);
+lean_inc(x_95);
+if (lean_is_exclusive(x_69)) {
+ lean_ctor_release(x_69, 0);
+ lean_ctor_release(x_69, 1);
+ x_96 = x_69;
+} else {
+ lean_dec_ref(x_69);
+ x_96 = lean_box(0);
+}
+if (lean_is_scalar(x_96)) {
+ x_97 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_97 = x_96;
+}
+lean_ctor_set(x_97, 0, x_94);
+lean_ctor_set(x_97, 1, x_95);
+return x_97;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__8(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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+uint8_t x_13; 
+x_13 = !lean_is_exclusive(x_3);
+if (x_13 == 0)
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_14 = lean_ctor_get(x_3, 1);
+x_15 = lean_ctor_get(x_3, 0);
+lean_dec(x_15);
+lean_inc(x_14);
+x_16 = l_Lean_Meta_Grind_getENode(x_14, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_16) == 0)
+{
+uint8_t x_17; 
+x_17 = !lean_is_exclusive(x_16);
+if (x_17 == 0)
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_18 = lean_ctor_get(x_16, 0);
+x_19 = lean_ctor_get(x_16, 1);
+x_20 = lean_ctor_get(x_18, 7);
+lean_inc(x_20);
+x_21 = l_Lean_RBNode_find___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__6(x_1, x_20);
+lean_dec(x_20);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_object* x_22; lean_object* x_23; 
+lean_free_object(x_16);
+lean_free_object(x_3);
+x_22 = lean_box(0);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_2);
+x_23 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1(x_18, x_2, x_14, x_22, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_19);
+if (lean_obj_tag(x_23) == 0)
+{
+lean_object* x_24; 
+x_24 = lean_ctor_get(x_23, 0);
+lean_inc(x_24);
+if (lean_obj_tag(x_24) == 0)
+{
+uint8_t x_25; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_25 = !lean_is_exclusive(x_23);
+if (x_25 == 0)
+{
+lean_object* x_26; lean_object* x_27; 
+x_26 = lean_ctor_get(x_23, 0);
+lean_dec(x_26);
+x_27 = lean_ctor_get(x_24, 0);
+lean_inc(x_27);
+lean_dec(x_24);
+lean_ctor_set(x_23, 0, x_27);
+return x_23;
+}
+else
+{
+lean_object* x_28; lean_object* x_29; lean_object* x_30; 
+x_28 = lean_ctor_get(x_23, 1);
+lean_inc(x_28);
+lean_dec(x_23);
+x_29 = lean_ctor_get(x_24, 0);
+lean_inc(x_29);
+lean_dec(x_24);
+x_30 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_30, 0, x_29);
+lean_ctor_set(x_30, 1, x_28);
+return x_30;
+}
+}
+else
+{
+lean_object* x_31; lean_object* x_32; 
+x_31 = lean_ctor_get(x_23, 1);
+lean_inc(x_31);
+lean_dec(x_23);
+x_32 = lean_ctor_get(x_24, 0);
+lean_inc(x_32);
+lean_dec(x_24);
+x_3 = x_32;
+x_12 = x_31;
+goto _start;
+}
+}
+else
+{
+uint8_t x_34; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_34 = !lean_is_exclusive(x_23);
+if (x_34 == 0)
+{
+return x_23;
+}
+else
+{
+lean_object* x_35; lean_object* x_36; lean_object* x_37; 
+x_35 = lean_ctor_get(x_23, 0);
+x_36 = lean_ctor_get(x_23, 1);
+lean_inc(x_36);
+lean_inc(x_35);
+lean_dec(x_23);
+x_37 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_37, 0, x_35);
+lean_ctor_set(x_37, 1, x_36);
+return x_37;
+}
+}
+}
+else
+{
+uint8_t x_38; 
+lean_dec(x_18);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_38 = !lean_is_exclusive(x_21);
+if (x_38 == 0)
+{
+lean_ctor_set(x_3, 0, x_21);
+lean_ctor_set(x_16, 0, x_3);
+return x_16;
+}
+else
+{
+lean_object* x_39; lean_object* x_40; 
+x_39 = lean_ctor_get(x_21, 0);
+lean_inc(x_39);
+lean_dec(x_21);
+x_40 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_40, 0, x_39);
+lean_ctor_set(x_3, 0, x_40);
+lean_ctor_set(x_16, 0, x_3);
+return x_16;
+}
+}
+}
+else
+{
+lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; 
+x_41 = lean_ctor_get(x_16, 0);
+x_42 = lean_ctor_get(x_16, 1);
+lean_inc(x_42);
+lean_inc(x_41);
+lean_dec(x_16);
+x_43 = lean_ctor_get(x_41, 7);
+lean_inc(x_43);
+x_44 = l_Lean_RBNode_find___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__6(x_1, x_43);
+lean_dec(x_43);
+if (lean_obj_tag(x_44) == 0)
+{
+lean_object* x_45; lean_object* x_46; 
+lean_free_object(x_3);
+x_45 = lean_box(0);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_2);
+x_46 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1(x_41, x_2, x_14, x_45, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_42);
+if (lean_obj_tag(x_46) == 0)
+{
+lean_object* x_47; 
+x_47 = lean_ctor_get(x_46, 0);
+lean_inc(x_47);
+if (lean_obj_tag(x_47) == 0)
+{
+lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_48 = lean_ctor_get(x_46, 1);
+lean_inc(x_48);
+if (lean_is_exclusive(x_46)) {
+ lean_ctor_release(x_46, 0);
+ lean_ctor_release(x_46, 1);
+ x_49 = x_46;
+} else {
+ lean_dec_ref(x_46);
+ x_49 = lean_box(0);
+}
+x_50 = lean_ctor_get(x_47, 0);
+lean_inc(x_50);
+lean_dec(x_47);
+if (lean_is_scalar(x_49)) {
+ x_51 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_51 = x_49;
+}
+lean_ctor_set(x_51, 0, x_50);
+lean_ctor_set(x_51, 1, x_48);
+return x_51;
+}
+else
+{
+lean_object* x_52; lean_object* x_53; 
+x_52 = lean_ctor_get(x_46, 1);
+lean_inc(x_52);
+lean_dec(x_46);
+x_53 = lean_ctor_get(x_47, 0);
+lean_inc(x_53);
+lean_dec(x_47);
+x_3 = x_53;
+x_12 = x_52;
+goto _start;
+}
+}
+else
+{
+lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_55 = lean_ctor_get(x_46, 0);
+lean_inc(x_55);
+x_56 = lean_ctor_get(x_46, 1);
+lean_inc(x_56);
+if (lean_is_exclusive(x_46)) {
+ lean_ctor_release(x_46, 0);
+ lean_ctor_release(x_46, 1);
+ x_57 = x_46;
+} else {
+ lean_dec_ref(x_46);
+ x_57 = lean_box(0);
+}
+if (lean_is_scalar(x_57)) {
+ x_58 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_58 = x_57;
+}
+lean_ctor_set(x_58, 0, x_55);
+lean_ctor_set(x_58, 1, x_56);
+return x_58;
+}
+}
+else
+{
+lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; 
+lean_dec(x_41);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_59 = lean_ctor_get(x_44, 0);
+lean_inc(x_59);
+if (lean_is_exclusive(x_44)) {
+ lean_ctor_release(x_44, 0);
+ x_60 = x_44;
+} else {
+ lean_dec_ref(x_44);
+ x_60 = lean_box(0);
+}
+if (lean_is_scalar(x_60)) {
+ x_61 = lean_alloc_ctor(1, 1, 0);
+} else {
+ x_61 = x_60;
+}
+lean_ctor_set(x_61, 0, x_59);
+lean_ctor_set(x_3, 0, x_61);
+x_62 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_62, 0, x_3);
+lean_ctor_set(x_62, 1, x_42);
+return x_62;
+}
+}
+}
+else
+{
+uint8_t x_63; 
+lean_free_object(x_3);
+lean_dec(x_14);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_63 = !lean_is_exclusive(x_16);
+if (x_63 == 0)
+{
+return x_16;
+}
+else
+{
+lean_object* x_64; lean_object* x_65; lean_object* x_66; 
+x_64 = lean_ctor_get(x_16, 0);
+x_65 = lean_ctor_get(x_16, 1);
+lean_inc(x_65);
+lean_inc(x_64);
+lean_dec(x_16);
+x_66 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_66, 0, x_64);
+lean_ctor_set(x_66, 1, x_65);
+return x_66;
+}
+}
+}
+else
+{
+lean_object* x_67; lean_object* x_68; 
+x_67 = lean_ctor_get(x_3, 1);
+lean_inc(x_67);
+lean_dec(x_3);
+lean_inc(x_67);
+x_68 = l_Lean_Meta_Grind_getENode(x_67, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_68) == 0)
+{
+lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; 
+x_69 = lean_ctor_get(x_68, 0);
+lean_inc(x_69);
+x_70 = lean_ctor_get(x_68, 1);
+lean_inc(x_70);
+if (lean_is_exclusive(x_68)) {
+ lean_ctor_release(x_68, 0);
+ lean_ctor_release(x_68, 1);
+ x_71 = x_68;
+} else {
+ lean_dec_ref(x_68);
+ x_71 = lean_box(0);
+}
+x_72 = lean_ctor_get(x_69, 7);
+lean_inc(x_72);
+x_73 = l_Lean_RBNode_find___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__6(x_1, x_72);
+lean_dec(x_72);
+if (lean_obj_tag(x_73) == 0)
+{
+lean_object* x_74; lean_object* x_75; 
+lean_dec(x_71);
+x_74 = lean_box(0);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_2);
+x_75 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1(x_69, x_2, x_67, x_74, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_70);
+if (lean_obj_tag(x_75) == 0)
+{
+lean_object* x_76; 
+x_76 = lean_ctor_get(x_75, 0);
+lean_inc(x_76);
+if (lean_obj_tag(x_76) == 0)
+{
+lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_77 = lean_ctor_get(x_75, 1);
+lean_inc(x_77);
+if (lean_is_exclusive(x_75)) {
+ lean_ctor_release(x_75, 0);
+ lean_ctor_release(x_75, 1);
+ x_78 = x_75;
+} else {
+ lean_dec_ref(x_75);
+ x_78 = lean_box(0);
+}
+x_79 = lean_ctor_get(x_76, 0);
+lean_inc(x_79);
+lean_dec(x_76);
+if (lean_is_scalar(x_78)) {
+ x_80 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_80 = x_78;
+}
+lean_ctor_set(x_80, 0, x_79);
+lean_ctor_set(x_80, 1, x_77);
+return x_80;
+}
+else
+{
+lean_object* x_81; lean_object* x_82; 
+x_81 = lean_ctor_get(x_75, 1);
+lean_inc(x_81);
+lean_dec(x_75);
+x_82 = lean_ctor_get(x_76, 0);
+lean_inc(x_82);
+lean_dec(x_76);
+x_3 = x_82;
+x_12 = x_81;
+goto _start;
+}
+}
+else
+{
+lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_84 = lean_ctor_get(x_75, 0);
+lean_inc(x_84);
+x_85 = lean_ctor_get(x_75, 1);
+lean_inc(x_85);
+if (lean_is_exclusive(x_75)) {
+ lean_ctor_release(x_75, 0);
+ lean_ctor_release(x_75, 1);
+ x_86 = x_75;
+} else {
+ lean_dec_ref(x_75);
+ x_86 = lean_box(0);
+}
+if (lean_is_scalar(x_86)) {
+ x_87 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_87 = x_86;
+}
+lean_ctor_set(x_87, 0, x_84);
+lean_ctor_set(x_87, 1, x_85);
+return x_87;
+}
+}
+else
+{
+lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; 
+lean_dec(x_69);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_88 = lean_ctor_get(x_73, 0);
+lean_inc(x_88);
+if (lean_is_exclusive(x_73)) {
+ lean_ctor_release(x_73, 0);
+ x_89 = x_73;
+} else {
+ lean_dec_ref(x_73);
+ x_89 = lean_box(0);
+}
+if (lean_is_scalar(x_89)) {
+ x_90 = lean_alloc_ctor(1, 1, 0);
+} else {
+ x_90 = x_89;
+}
+lean_ctor_set(x_90, 0, x_88);
+x_91 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_91, 0, x_90);
+lean_ctor_set(x_91, 1, x_67);
+if (lean_is_scalar(x_71)) {
+ x_92 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_92 = x_71;
+}
+lean_ctor_set(x_92, 0, x_91);
+lean_ctor_set(x_92, 1, x_70);
+return x_92;
+}
+}
+else
+{
+lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; 
+lean_dec(x_67);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_93 = lean_ctor_get(x_68, 0);
+lean_inc(x_93);
+x_94 = lean_ctor_get(x_68, 1);
+lean_inc(x_94);
+if (lean_is_exclusive(x_68)) {
+ lean_ctor_release(x_68, 0);
+ lean_ctor_release(x_68, 1);
+ x_95 = x_68;
+} else {
+ lean_dec_ref(x_68);
+ x_95 = lean_box(0);
+}
+if (lean_is_scalar(x_95)) {
+ x_96 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_96 = x_95;
+}
+lean_ctor_set(x_96, 0, x_93);
+lean_ctor_set(x_96, 1, x_94);
+return x_96;
+}
+}
+}
+}
+static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__9___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__4;
+x_2 = l_Lean_instInhabitedExpr;
+x_3 = l_instInhabitedOfMonad___rarg(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__9(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:
+{
+lean_object* x_11; lean_object* x_12; lean_object* x_13; 
+x_11 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__9___closed__1;
+x_12 = lean_panic_fn(x_11, x_1);
+x_13 = lean_apply_9(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_13;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___lambda__1___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1;
+x_2 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__2;
+x_3 = lean_unsigned_to_nat(68u);
+x_4 = lean_unsigned_to_nat(2u);
+x_5 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__3;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___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:
+{
+lean_object* x_11; lean_object* x_12; 
+x_11 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___lambda__1___closed__1;
+x_12 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__9(x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_12;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___lambda__1___boxed), 10, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon(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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; 
+x_12 = lean_box(0);
+x_13 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_13, 0, x_1);
+lean_ctor_set(x_13, 1, x_12);
+x_14 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__3___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__4(x_13, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+if (lean_obj_tag(x_14) == 0)
+{
+lean_object* x_15; lean_object* x_16; uint8_t x_17; 
+x_15 = lean_ctor_get(x_14, 0);
+lean_inc(x_15);
+x_16 = lean_ctor_get(x_14, 1);
+lean_inc(x_16);
+lean_dec(x_14);
+x_17 = !lean_is_exclusive(x_15);
+if (x_17 == 0)
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_18 = lean_ctor_get(x_15, 1);
+x_19 = lean_ctor_get(x_15, 0);
+lean_dec(x_19);
+x_20 = lean_box(0);
+lean_ctor_set(x_15, 1, x_2);
+lean_ctor_set(x_15, 0, x_20);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_21 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__8(x_18, x_20, x_15, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_16);
+lean_dec(x_18);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_object* x_22; lean_object* x_23; 
+x_22 = lean_ctor_get(x_21, 0);
+lean_inc(x_22);
+x_23 = lean_ctor_get(x_22, 0);
+lean_inc(x_23);
+lean_dec(x_22);
+if (lean_obj_tag(x_23) == 0)
+{
+lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; 
+x_24 = lean_ctor_get(x_21, 1);
+lean_inc(x_24);
+lean_dec(x_21);
+x_25 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___closed__1;
+x_26 = lean_box(0);
+x_27 = lean_apply_10(x_25, x_26, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_24);
+return x_27;
+}
+else
+{
+uint8_t x_28; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_28 = !lean_is_exclusive(x_21);
+if (x_28 == 0)
+{
+lean_object* x_29; lean_object* x_30; 
+x_29 = lean_ctor_get(x_21, 0);
+lean_dec(x_29);
+x_30 = lean_ctor_get(x_23, 0);
+lean_inc(x_30);
+lean_dec(x_23);
+lean_ctor_set(x_21, 0, x_30);
+return x_21;
+}
+else
+{
+lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_31 = lean_ctor_get(x_21, 1);
+lean_inc(x_31);
+lean_dec(x_21);
+x_32 = lean_ctor_get(x_23, 0);
+lean_inc(x_32);
+lean_dec(x_23);
+x_33 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_33, 0, x_32);
+lean_ctor_set(x_33, 1, x_31);
+return x_33;
+}
+}
+}
+else
+{
+uint8_t x_34; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_34 = !lean_is_exclusive(x_21);
+if (x_34 == 0)
+{
+return x_21;
+}
+else
+{
+lean_object* x_35; lean_object* x_36; lean_object* x_37; 
+x_35 = lean_ctor_get(x_21, 0);
+x_36 = lean_ctor_get(x_21, 1);
+lean_inc(x_36);
+lean_inc(x_35);
+lean_dec(x_21);
+x_37 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_37, 0, x_35);
+lean_ctor_set(x_37, 1, x_36);
+return x_37;
+}
+}
+}
+else
+{
+lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; 
+x_38 = lean_ctor_get(x_15, 1);
+lean_inc(x_38);
+lean_dec(x_15);
+x_39 = lean_box(0);
+x_40 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_40, 0, x_39);
+lean_ctor_set(x_40, 1, x_2);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_41 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__8(x_38, x_39, x_40, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_16);
+lean_dec(x_38);
+if (lean_obj_tag(x_41) == 0)
+{
+lean_object* x_42; lean_object* x_43; 
+x_42 = lean_ctor_get(x_41, 0);
+lean_inc(x_42);
+x_43 = lean_ctor_get(x_42, 0);
+lean_inc(x_43);
+lean_dec(x_42);
+if (lean_obj_tag(x_43) == 0)
+{
+lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; 
+x_44 = lean_ctor_get(x_41, 1);
+lean_inc(x_44);
+lean_dec(x_41);
+x_45 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___closed__1;
+x_46 = lean_box(0);
+x_47 = lean_apply_10(x_45, x_46, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_44);
+return x_47;
+}
+else
+{
+lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_48 = lean_ctor_get(x_41, 1);
+lean_inc(x_48);
+if (lean_is_exclusive(x_41)) {
+ lean_ctor_release(x_41, 0);
+ lean_ctor_release(x_41, 1);
+ x_49 = x_41;
+} else {
+ lean_dec_ref(x_41);
+ x_49 = lean_box(0);
+}
+x_50 = lean_ctor_get(x_43, 0);
+lean_inc(x_50);
+lean_dec(x_43);
+if (lean_is_scalar(x_49)) {
+ x_51 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_51 = x_49;
+}
+lean_ctor_set(x_51, 0, x_50);
+lean_ctor_set(x_51, 1, x_48);
+return x_51;
+}
+}
+else
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_52 = lean_ctor_get(x_41, 0);
+lean_inc(x_52);
+x_53 = lean_ctor_get(x_41, 1);
+lean_inc(x_53);
+if (lean_is_exclusive(x_41)) {
+ lean_ctor_release(x_41, 0);
+ lean_ctor_release(x_41, 1);
+ x_54 = x_41;
+} else {
+ lean_dec_ref(x_41);
+ x_54 = lean_box(0);
+}
+if (lean_is_scalar(x_54)) {
+ x_55 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_55 = x_54;
+}
+lean_ctor_set(x_55, 0, x_52);
+lean_ctor_set(x_55, 1, x_53);
+return x_55;
+}
+}
+}
+else
+{
+uint8_t x_56; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_56 = !lean_is_exclusive(x_14);
+if (x_56 == 0)
+{
+return x_14;
+}
+else
+{
+lean_object* x_57; lean_object* x_58; lean_object* x_59; 
+x_57 = lean_ctor_get(x_14, 0);
+x_58 = lean_ctor_get(x_14, 1);
+lean_inc(x_58);
+lean_inc(x_57);
+lean_dec(x_14);
+x_59 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_59, 0, x_57);
+lean_ctor_set(x_59, 1, x_58);
+return x_59;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__3___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, lean_object* x_10, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_12;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__3___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__4___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__3___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__4(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_11;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_RBNode_find___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__6___boxed(lean_object* x_1, lean_object* x_2) {
+_start:
+{
+lean_object* x_3; 
+x_3 = l_Lean_RBNode_find___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__6(x_1, x_2);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; 
+x_14 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_4);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; 
+x_14 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__8___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__8(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_1);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___lambda__1___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_1);
+return x_11;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget_loop___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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; 
+x_15 = l_Lean_Expr_appFn_x21(x_1);
+x_16 = l_Lean_Expr_appFn_x21(x_2);
+x_17 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget_loop(x_3, x_15, x_16, x_4, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_16);
+lean_dec(x_15);
+return x_17;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget_loop(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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+uint8_t x_14; 
+x_14 = l_Lean_Expr_isApp(x_2);
+if (x_14 == 0)
+{
+uint8_t x_15; lean_object* x_16; lean_object* x_17; 
+x_15 = 1;
+x_16 = lean_box(x_15);
+x_17 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_17, 0, x_16);
+lean_ctor_set(x_17, 1, x_13);
+return x_17;
+}
+else
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; uint8_t x_22; 
+x_18 = l_Lean_Expr_appArg_x21(x_2);
+x_19 = l_Lean_Expr_appArg_x21(x_3);
+x_20 = lean_unsigned_to_nat(1u);
+x_21 = lean_nat_sub(x_4, x_20);
+x_22 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_18, x_19);
+lean_dec(x_19);
+lean_dec(x_18);
+if (x_22 == 0)
+{
+lean_object* x_23; uint8_t x_24; 
+x_23 = lean_array_get_size(x_1);
+x_24 = lean_nat_dec_lt(x_21, x_23);
+lean_dec(x_23);
+if (x_24 == 0)
+{
+uint8_t x_25; lean_object* x_26; lean_object* x_27; 
+lean_dec(x_21);
+x_25 = 0;
+x_26 = lean_box(x_25);
+x_27 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_27, 0, x_26);
+lean_ctor_set(x_27, 1, x_13);
+return x_27;
+}
+else
+{
+lean_object* x_28; uint8_t x_29; 
+x_28 = lean_array_fget(x_1, x_21);
+x_29 = lean_ctor_get_uint8(x_28, sizeof(void*)*1 + 1);
+lean_dec(x_28);
+if (x_29 == 0)
+{
+lean_object* x_30; lean_object* x_31; 
+x_30 = lean_box(0);
+x_31 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget_loop___lambda__1(x_2, x_3, x_1, x_21, x_30, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_21);
+return x_31;
+}
+else
+{
+uint8_t x_32; lean_object* x_33; lean_object* x_34; 
+lean_dec(x_21);
+x_32 = 0;
+x_33 = lean_box(x_32);
+x_34 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_34, 0, x_33);
+lean_ctor_set(x_34, 1, x_13);
+return x_34;
+}
+}
+}
+else
+{
+lean_object* x_35; lean_object* x_36; 
+x_35 = lean_box(0);
+x_36 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget_loop___lambda__1(x_2, x_3, x_1, x_21, x_35, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_21);
+return x_36;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget_loop___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+lean_object* x_15; 
+x_15 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget_loop___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_15;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget_loop___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; 
+x_14 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget_loop(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_14;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget___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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+lean_object* x_15; 
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+x_15 = l_Lean_Meta_getFunInfo(x_1, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_15) == 0)
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_16 = lean_ctor_get(x_15, 0);
+lean_inc(x_16);
+x_17 = lean_ctor_get(x_15, 1);
+lean_inc(x_17);
+lean_dec(x_15);
+x_18 = lean_ctor_get(x_16, 0);
+lean_inc(x_18);
+lean_dec(x_16);
+x_19 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget_loop(x_18, x_2, x_3, x_4, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_17);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_18);
+return x_19;
+}
+else
+{
+uint8_t x_20; 
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+x_20 = !lean_is_exclusive(x_15);
+if (x_20 == 0)
+{
+return x_15;
+}
+else
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; 
+x_21 = lean_ctor_get(x_15, 0);
+x_22 = lean_ctor_get(x_15, 1);
+lean_inc(x_22);
+lean_inc(x_21);
+lean_dec(x_15);
+x_23 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_23, 0, x_21);
+lean_ctor_set(x_23, 1, x_22);
+return x_23;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget(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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+uint8_t x_15; 
+x_15 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_3, x_4);
+if (x_15 == 0)
+{
+uint8_t x_16; lean_object* x_17; lean_object* x_18; 
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_3);
+x_16 = 0;
+x_17 = lean_box(x_16);
+x_18 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_18, 0, x_17);
+lean_ctor_set(x_18, 1, x_14);
+return x_18;
+}
+else
+{
+lean_object* x_19; lean_object* x_20; 
+x_19 = lean_box(0);
+x_20 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget___lambda__1(x_3, x_1, x_2, x_5, x_19, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+return x_20;
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+lean_object* x_15; 
+x_15 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_15;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+lean_object* x_15; 
+x_15 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_15;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof_loop(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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; lean_object* x_15; uint8_t x_16; 
+x_14 = lean_unsigned_to_nat(1u);
+x_15 = lean_nat_sub(x_4, x_14);
+x_16 = l_Lean_Expr_isApp(x_2);
+if (x_16 == 0)
+{
+lean_object* x_17; lean_object* x_18; 
+lean_dec(x_15);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+x_17 = lean_ctor_get(x_1, 1);
+lean_inc(x_17);
+x_18 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_18, 0, x_17);
+lean_ctor_set(x_18, 1, x_13);
+return x_18;
+}
+else
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_19 = l_Lean_Expr_appFn_x21(x_2);
+x_20 = l_Lean_Expr_appFn_x21(x_3);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+x_21 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof_loop(x_1, x_19, x_20, x_15, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_20);
+lean_dec(x_19);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; uint8_t x_26; lean_object* x_40; lean_object* x_41; uint8_t x_42; 
+x_22 = lean_ctor_get(x_21, 0);
+lean_inc(x_22);
+x_23 = lean_ctor_get(x_21, 1);
+lean_inc(x_23);
+lean_dec(x_21);
+x_24 = l_Lean_Expr_appArg_x21(x_2);
+x_25 = l_Lean_Expr_appArg_x21(x_3);
+x_40 = lean_ctor_get(x_1, 2);
+x_41 = lean_array_get_size(x_40);
+x_42 = lean_nat_dec_lt(x_15, x_41);
+lean_dec(x_41);
+if (x_42 == 0)
+{
+uint8_t x_43; lean_object* x_44; lean_object* x_45; uint8_t x_46; lean_object* x_47; 
+lean_dec(x_15);
+x_43 = l_Lean_Meta_instInhabitedCongrArgKind;
+x_44 = lean_box(x_43);
+x_45 = l_outOfBounds___rarg(x_44);
+x_46 = lean_unbox(x_45);
+lean_dec(x_45);
+x_47 = lean_box(x_46);
+if (lean_obj_tag(x_47) == 4)
+{
+uint8_t x_48; 
+x_48 = 1;
+x_26 = x_48;
+goto block_39;
+}
+else
+{
+uint8_t x_49; 
+lean_dec(x_47);
+x_49 = 0;
+x_26 = x_49;
+goto block_39;
+}
+}
+else
+{
+lean_object* x_50; uint8_t x_51; lean_object* x_52; 
+x_50 = lean_array_fget(x_40, x_15);
+lean_dec(x_15);
+x_51 = lean_unbox(x_50);
+lean_dec(x_50);
+x_52 = lean_box(x_51);
+if (lean_obj_tag(x_52) == 4)
+{
+uint8_t x_53; 
+x_53 = 1;
+x_26 = x_53;
+goto block_39;
+}
+else
+{
+uint8_t x_54; 
+lean_dec(x_52);
+x_54 = 0;
+x_26 = x_54;
+goto block_39;
+}
+}
+block_39:
+{
+lean_object* x_27; 
+lean_inc(x_25);
+lean_inc(x_24);
+x_27 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_24, x_25, x_26, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_23);
+if (lean_obj_tag(x_27) == 0)
+{
+uint8_t x_28; 
+x_28 = !lean_is_exclusive(x_27);
+if (x_28 == 0)
+{
+lean_object* x_29; lean_object* x_30; 
+x_29 = lean_ctor_get(x_27, 0);
+x_30 = l_Lean_mkApp3(x_22, x_24, x_25, x_29);
+lean_ctor_set(x_27, 0, x_30);
+return x_27;
+}
+else
+{
+lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; 
+x_31 = lean_ctor_get(x_27, 0);
+x_32 = lean_ctor_get(x_27, 1);
+lean_inc(x_32);
+lean_inc(x_31);
+lean_dec(x_27);
+x_33 = l_Lean_mkApp3(x_22, x_24, x_25, x_31);
+x_34 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_34, 0, x_33);
+lean_ctor_set(x_34, 1, x_32);
+return x_34;
+}
+}
+else
+{
+uint8_t x_35; 
+lean_dec(x_25);
+lean_dec(x_24);
+lean_dec(x_22);
+x_35 = !lean_is_exclusive(x_27);
+if (x_35 == 0)
+{
+return x_27;
+}
+else
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; 
+x_36 = lean_ctor_get(x_27, 0);
+x_37 = lean_ctor_get(x_27, 1);
+lean_inc(x_37);
+lean_inc(x_36);
+lean_dec(x_27);
+x_38 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_38, 0, x_36);
+lean_ctor_set(x_38, 1, x_37);
+return x_38;
+}
+}
+}
+}
+else
+{
+uint8_t x_55; 
+lean_dec(x_15);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+x_55 = !lean_is_exclusive(x_21);
+if (x_55 == 0)
+{
+return x_21;
+}
+else
+{
+lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+x_56 = lean_ctor_get(x_21, 0);
+x_57 = lean_ctor_get(x_21, 1);
+lean_inc(x_57);
+lean_inc(x_56);
+lean_dec(x_21);
+x_58 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_58, 0, x_56);
+lean_ctor_set(x_58, 1, x_57);
+return x_58;
+}
+}
+}
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("assertion violation: ", 21, 21);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("isSameExpr n₁.root n₂.root\n    ", 35, 31);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__2;
+x_3 = lean_string_append(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("_private.Lean.Meta.Tactic.Grind.Proof.0.Lean.Meta.Grind.mkEqProofCore", 69, 69);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__4;
+x_3 = lean_unsigned_to_nat(206u);
+x_4 = lean_unsigned_to_nat(4u);
+x_5 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__3;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__6() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__4;
+x_3 = lean_unsigned_to_nat(209u);
+x_4 = lean_unsigned_to_nat(66u);
+x_5 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__3;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1(lean_object* x_1, lean_object* x_2, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; 
+lean_inc(x_1);
+x_14 = l_Lean_Meta_Grind_getENode(x_1, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+if (lean_obj_tag(x_14) == 0)
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; 
+x_15 = lean_ctor_get(x_14, 0);
+lean_inc(x_15);
+x_16 = lean_ctor_get(x_14, 1);
+lean_inc(x_16);
+lean_dec(x_14);
+lean_inc(x_2);
+x_17 = l_Lean_Meta_Grind_getENode(x_2, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, 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; uint8_t x_22; 
+x_18 = lean_ctor_get(x_17, 0);
+lean_inc(x_18);
+x_19 = lean_ctor_get(x_17, 1);
+lean_inc(x_19);
+lean_dec(x_17);
+x_20 = lean_ctor_get(x_15, 2);
+lean_inc(x_20);
+lean_dec(x_15);
+x_21 = lean_ctor_get(x_18, 2);
+lean_inc(x_21);
+lean_dec(x_18);
+x_22 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_20, x_21);
+lean_dec(x_21);
+lean_dec(x_20);
+if (x_22 == 0)
+{
+lean_object* x_23; lean_object* x_24; 
+lean_dec(x_2);
+lean_dec(x_1);
+x_23 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__5;
+x_24 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__9(x_23, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_19);
+return x_24;
+}
+else
+{
+lean_object* x_25; 
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_2);
+lean_inc(x_1);
+x_25 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon(x_1, x_2, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_19);
+if (lean_obj_tag(x_25) == 0)
+{
+lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_26 = lean_ctor_get(x_25, 0);
+lean_inc(x_26);
+x_27 = lean_ctor_get(x_25, 1);
+lean_inc(x_27);
+lean_dec(x_25);
+x_28 = lean_box(0);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+x_29 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo(x_1, x_26, x_28, x_3, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_27);
+if (lean_obj_tag(x_29) == 0)
+{
+lean_object* x_30; lean_object* x_31; lean_object* x_32; 
+x_30 = lean_ctor_get(x_29, 0);
+lean_inc(x_30);
+x_31 = lean_ctor_get(x_29, 1);
+lean_inc(x_31);
+lean_dec(x_29);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+x_32 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom(x_2, x_26, x_30, x_3, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_31);
+lean_dec(x_26);
+if (lean_obj_tag(x_32) == 0)
+{
+lean_object* x_33; 
+x_33 = lean_ctor_get(x_32, 0);
+lean_inc(x_33);
+if (lean_obj_tag(x_33) == 0)
+{
+lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_34 = lean_ctor_get(x_32, 1);
+lean_inc(x_34);
+lean_dec(x_32);
+x_35 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__6;
+x_36 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__9(x_35, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_34);
+return x_36;
+}
+else
+{
+uint8_t x_37; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+x_37 = !lean_is_exclusive(x_32);
+if (x_37 == 0)
+{
+lean_object* x_38; lean_object* x_39; 
+x_38 = lean_ctor_get(x_32, 0);
+lean_dec(x_38);
+x_39 = lean_ctor_get(x_33, 0);
+lean_inc(x_39);
+lean_dec(x_33);
+lean_ctor_set(x_32, 0, x_39);
+return x_32;
+}
+else
+{
+lean_object* x_40; lean_object* x_41; lean_object* x_42; 
+x_40 = lean_ctor_get(x_32, 1);
+lean_inc(x_40);
+lean_dec(x_32);
+x_41 = lean_ctor_get(x_33, 0);
+lean_inc(x_41);
+lean_dec(x_33);
+x_42 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_42, 0, x_41);
+lean_ctor_set(x_42, 1, x_40);
+return x_42;
+}
+}
+}
+else
+{
+uint8_t x_43; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+x_43 = !lean_is_exclusive(x_32);
+if (x_43 == 0)
+{
+return x_32;
+}
+else
+{
+lean_object* x_44; lean_object* x_45; lean_object* x_46; 
+x_44 = lean_ctor_get(x_32, 0);
+x_45 = lean_ctor_get(x_32, 1);
+lean_inc(x_45);
+lean_inc(x_44);
+lean_dec(x_32);
+x_46 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_46, 0, x_44);
+lean_ctor_set(x_46, 1, x_45);
+return x_46;
+}
+}
+}
+else
+{
+uint8_t x_47; 
+lean_dec(x_26);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_2);
+x_47 = !lean_is_exclusive(x_29);
+if (x_47 == 0)
+{
+return x_29;
+}
+else
+{
+lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_48 = lean_ctor_get(x_29, 0);
+x_49 = lean_ctor_get(x_29, 1);
+lean_inc(x_49);
+lean_inc(x_48);
+lean_dec(x_29);
+x_50 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_50, 0, x_48);
+lean_ctor_set(x_50, 1, x_49);
+return x_50;
+}
+}
+}
+else
+{
+uint8_t x_51; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_2);
+lean_dec(x_1);
+x_51 = !lean_is_exclusive(x_25);
+if (x_51 == 0)
+{
+return x_25;
+}
+else
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_52 = lean_ctor_get(x_25, 0);
+x_53 = lean_ctor_get(x_25, 1);
+lean_inc(x_53);
+lean_inc(x_52);
+lean_dec(x_25);
+x_54 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_54, 0, x_52);
+lean_ctor_set(x_54, 1, x_53);
+return x_54;
+}
+}
+}
+}
+else
+{
+uint8_t x_55; 
+lean_dec(x_15);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_2);
+lean_dec(x_1);
+x_55 = !lean_is_exclusive(x_17);
+if (x_55 == 0)
+{
+return x_17;
+}
+else
+{
+lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+x_56 = lean_ctor_get(x_17, 0);
+x_57 = lean_ctor_get(x_17, 1);
+lean_inc(x_57);
+lean_inc(x_56);
+lean_dec(x_17);
+x_58 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_58, 0, x_56);
+lean_ctor_set(x_58, 1, x_57);
+return x_58;
+}
+}
+}
+else
+{
+uint8_t x_59; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_2);
+lean_dec(x_1);
+x_59 = !lean_is_exclusive(x_14);
+if (x_59 == 0)
+{
+return x_14;
+}
+else
+{
+lean_object* x_60; lean_object* x_61; lean_object* x_62; 
+x_60 = lean_ctor_get(x_14, 0);
+x_61 = lean_ctor_get(x_14, 1);
+lean_inc(x_61);
+lean_inc(x_60);
+lean_dec(x_14);
+x_62 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_62, 0, x_60);
+lean_ctor_set(x_62, 1, x_61);
+return x_62;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(lean_object* x_1, lean_object* x_2, uint8_t 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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+uint8_t x_13; 
+x_13 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_2);
+if (x_13 == 0)
+{
+lean_object* x_14; lean_object* x_15; 
+x_14 = lean_box(0);
+x_15 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1(x_1, x_2, x_3, x_14, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+return x_15;
+}
+else
+{
+lean_object* x_16; 
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_16 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkRefl(x_1, x_3, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_16) == 0)
+{
+uint8_t x_17; 
+x_17 = !lean_is_exclusive(x_16);
+if (x_17 == 0)
+{
+return x_16;
+}
+else
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_18 = lean_ctor_get(x_16, 0);
+x_19 = lean_ctor_get(x_16, 1);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_dec(x_16);
+x_20 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_20, 0, x_18);
+lean_ctor_set(x_20, 1, x_19);
+return x_20;
+}
+}
+else
+{
+uint8_t x_21; 
+x_21 = !lean_is_exclusive(x_16);
+if (x_21 == 0)
+{
+return x_16;
+}
+else
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_22 = lean_ctor_get(x_16, 0);
+x_23 = lean_ctor_get(x_16, 1);
+lean_inc(x_23);
+lean_inc(x_22);
+lean_dec(x_16);
+x_24 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_24, 0, x_22);
+lean_ctor_set(x_24, 1, x_23);
+return x_24;
+}
+}
+}
+}
+}
+static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___spec__1___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__4;
+x_3 = l_instInhabitedOfMonad___rarg(x_2, x_1);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___spec__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:
+{
+lean_object* x_11; lean_object* x_12; lean_object* x_13; 
+x_11 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___spec__1___closed__1;
+x_12 = lean_panic_fn(x_11, x_1);
+x_13 = lean_apply_9(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_13;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("_private.Lean.Meta.Tactic.Grind.Proof.0.Lean.Meta.Grind.mkProofFrom", 67, 67);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__1;
+x_3 = lean_unsigned_to_nat(193u);
+x_4 = lean_unsigned_to_nat(35u);
+x_5 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__3;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__1;
+x_3 = lean_unsigned_to_nat(194u);
+x_4 = lean_unsigned_to_nat(29u);
+x_5 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__3;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1(lean_object* x_1, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+lean_object* x_15; 
+lean_inc(x_1);
+x_15 = l_Lean_Meta_Grind_getENode(x_1, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_15) == 0)
+{
+lean_object* x_16; lean_object* x_17; 
+x_16 = lean_ctor_get(x_15, 0);
+lean_inc(x_16);
+x_17 = lean_ctor_get(x_16, 4);
+lean_inc(x_17);
+if (lean_obj_tag(x_17) == 0)
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+lean_dec(x_16);
+lean_dec(x_4);
+lean_dec(x_1);
+x_18 = lean_ctor_get(x_15, 1);
+lean_inc(x_18);
+lean_dec(x_15);
+x_19 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__2;
+x_20 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___spec__1(x_19, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_18);
+return x_20;
+}
+else
+{
+lean_object* x_21; 
+x_21 = lean_ctor_get(x_16, 5);
+lean_inc(x_21);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_4);
+lean_dec(x_1);
+x_22 = lean_ctor_get(x_15, 1);
+lean_inc(x_22);
+lean_dec(x_15);
+x_23 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__3;
+x_24 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___spec__1(x_23, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_22);
+return x_24;
+}
+else
+{
+uint8_t x_25; 
+x_25 = lean_ctor_get_uint8(x_16, sizeof(void*)*10);
+lean_dec(x_16);
+if (x_25 == 0)
+{
+lean_object* x_26; lean_object* x_27; uint8_t x_28; 
+x_26 = lean_ctor_get(x_15, 1);
+lean_inc(x_26);
+lean_dec(x_15);
+x_27 = lean_ctor_get(x_17, 0);
+lean_inc(x_27);
+lean_dec(x_17);
+x_28 = !lean_is_exclusive(x_21);
+if (x_28 == 0)
+{
+lean_object* x_29; uint8_t x_30; lean_object* x_31; 
+x_29 = lean_ctor_get(x_21, 0);
+x_30 = 1;
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_27);
+x_31 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_realizeEqProof(x_27, x_1, x_29, x_30, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_26);
+if (lean_obj_tag(x_31) == 0)
+{
+lean_object* x_32; lean_object* x_33; lean_object* x_34; 
+x_32 = lean_ctor_get(x_31, 0);
+lean_inc(x_32);
+x_33 = lean_ctor_get(x_31, 1);
+lean_inc(x_33);
+lean_dec(x_31);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+x_34 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom(x_27, x_3, x_4, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_33);
+if (lean_obj_tag(x_34) == 0)
+{
+lean_object* x_35; lean_object* x_36; lean_object* x_37; 
+x_35 = lean_ctor_get(x_34, 0);
+lean_inc(x_35);
+x_36 = lean_ctor_get(x_34, 1);
+lean_inc(x_36);
+lean_dec(x_34);
+x_37 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans_x27(x_35, x_32, x_2, x_10, x_11, x_12, x_13, x_36);
+if (lean_obj_tag(x_37) == 0)
+{
+uint8_t x_38; 
+x_38 = !lean_is_exclusive(x_37);
+if (x_38 == 0)
+{
+lean_object* x_39; 
+x_39 = lean_ctor_get(x_37, 0);
+lean_ctor_set(x_21, 0, x_39);
+lean_ctor_set(x_37, 0, x_21);
+return x_37;
+}
+else
+{
+lean_object* x_40; lean_object* x_41; lean_object* x_42; 
+x_40 = lean_ctor_get(x_37, 0);
+x_41 = lean_ctor_get(x_37, 1);
+lean_inc(x_41);
+lean_inc(x_40);
+lean_dec(x_37);
+lean_ctor_set(x_21, 0, x_40);
+x_42 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_42, 0, x_21);
+lean_ctor_set(x_42, 1, x_41);
+return x_42;
+}
+}
+else
+{
+uint8_t x_43; 
+lean_free_object(x_21);
+x_43 = !lean_is_exclusive(x_37);
+if (x_43 == 0)
+{
+return x_37;
+}
+else
+{
+lean_object* x_44; lean_object* x_45; lean_object* x_46; 
+x_44 = lean_ctor_get(x_37, 0);
+x_45 = lean_ctor_get(x_37, 1);
+lean_inc(x_45);
+lean_inc(x_44);
+lean_dec(x_37);
+x_46 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_46, 0, x_44);
+lean_ctor_set(x_46, 1, x_45);
+return x_46;
+}
+}
+}
+else
+{
+uint8_t x_47; 
+lean_dec(x_32);
+lean_free_object(x_21);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+x_47 = !lean_is_exclusive(x_34);
+if (x_47 == 0)
+{
+return x_34;
+}
+else
+{
+lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_48 = lean_ctor_get(x_34, 0);
+x_49 = lean_ctor_get(x_34, 1);
+lean_inc(x_49);
+lean_inc(x_48);
+lean_dec(x_34);
+x_50 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_50, 0, x_48);
+lean_ctor_set(x_50, 1, x_49);
+return x_50;
+}
+}
+}
+else
+{
+uint8_t x_51; 
+lean_free_object(x_21);
+lean_dec(x_27);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+x_51 = !lean_is_exclusive(x_31);
+if (x_51 == 0)
+{
+return x_31;
+}
+else
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_52 = lean_ctor_get(x_31, 0);
+x_53 = lean_ctor_get(x_31, 1);
+lean_inc(x_53);
+lean_inc(x_52);
+lean_dec(x_31);
+x_54 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_54, 0, x_52);
+lean_ctor_set(x_54, 1, x_53);
+return x_54;
+}
+}
+}
+else
+{
+lean_object* x_55; uint8_t x_56; lean_object* x_57; 
+x_55 = lean_ctor_get(x_21, 0);
+lean_inc(x_55);
+lean_dec(x_21);
+x_56 = 1;
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_27);
+x_57 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_realizeEqProof(x_27, x_1, x_55, x_56, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_26);
+if (lean_obj_tag(x_57) == 0)
+{
+lean_object* x_58; lean_object* x_59; lean_object* x_60; 
+x_58 = lean_ctor_get(x_57, 0);
+lean_inc(x_58);
+x_59 = lean_ctor_get(x_57, 1);
+lean_inc(x_59);
+lean_dec(x_57);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+x_60 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom(x_27, x_3, x_4, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_59);
+if (lean_obj_tag(x_60) == 0)
+{
+lean_object* x_61; lean_object* x_62; lean_object* x_63; 
+x_61 = lean_ctor_get(x_60, 0);
+lean_inc(x_61);
+x_62 = lean_ctor_get(x_60, 1);
+lean_inc(x_62);
+lean_dec(x_60);
+x_63 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans_x27(x_61, x_58, x_2, x_10, x_11, x_12, x_13, x_62);
+if (lean_obj_tag(x_63) == 0)
+{
+lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; 
+x_64 = lean_ctor_get(x_63, 0);
+lean_inc(x_64);
+x_65 = lean_ctor_get(x_63, 1);
+lean_inc(x_65);
+if (lean_is_exclusive(x_63)) {
+ lean_ctor_release(x_63, 0);
+ lean_ctor_release(x_63, 1);
+ x_66 = x_63;
+} else {
+ lean_dec_ref(x_63);
+ x_66 = lean_box(0);
+}
+x_67 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_67, 0, x_64);
+if (lean_is_scalar(x_66)) {
+ x_68 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_68 = x_66;
+}
+lean_ctor_set(x_68, 0, x_67);
+lean_ctor_set(x_68, 1, x_65);
+return x_68;
+}
+else
+{
+lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; 
+x_69 = lean_ctor_get(x_63, 0);
+lean_inc(x_69);
+x_70 = lean_ctor_get(x_63, 1);
+lean_inc(x_70);
+if (lean_is_exclusive(x_63)) {
+ lean_ctor_release(x_63, 0);
+ lean_ctor_release(x_63, 1);
+ x_71 = x_63;
+} else {
+ lean_dec_ref(x_63);
+ x_71 = lean_box(0);
+}
+if (lean_is_scalar(x_71)) {
+ x_72 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_72 = x_71;
+}
+lean_ctor_set(x_72, 0, x_69);
+lean_ctor_set(x_72, 1, x_70);
+return x_72;
+}
+}
+else
+{
+lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; 
+lean_dec(x_58);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+x_73 = lean_ctor_get(x_60, 0);
+lean_inc(x_73);
+x_74 = lean_ctor_get(x_60, 1);
+lean_inc(x_74);
+if (lean_is_exclusive(x_60)) {
+ lean_ctor_release(x_60, 0);
+ lean_ctor_release(x_60, 1);
+ x_75 = x_60;
+} else {
+ lean_dec_ref(x_60);
+ x_75 = lean_box(0);
+}
+if (lean_is_scalar(x_75)) {
+ x_76 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_76 = x_75;
+}
+lean_ctor_set(x_76, 0, x_73);
+lean_ctor_set(x_76, 1, x_74);
+return x_76;
+}
+}
+else
+{
+lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; 
+lean_dec(x_27);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+x_77 = lean_ctor_get(x_57, 0);
+lean_inc(x_77);
+x_78 = lean_ctor_get(x_57, 1);
+lean_inc(x_78);
+if (lean_is_exclusive(x_57)) {
+ lean_ctor_release(x_57, 0);
+ lean_ctor_release(x_57, 1);
+ x_79 = x_57;
+} else {
+ lean_dec_ref(x_57);
+ x_79 = lean_box(0);
+}
+if (lean_is_scalar(x_79)) {
+ x_80 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_80 = x_79;
+}
+lean_ctor_set(x_80, 0, x_77);
+lean_ctor_set(x_80, 1, x_78);
+return x_80;
+}
+}
+}
+else
+{
+lean_object* x_81; lean_object* x_82; uint8_t x_83; 
+x_81 = lean_ctor_get(x_15, 1);
+lean_inc(x_81);
+lean_dec(x_15);
+x_82 = lean_ctor_get(x_17, 0);
+lean_inc(x_82);
+lean_dec(x_17);
+x_83 = !lean_is_exclusive(x_21);
+if (x_83 == 0)
+{
+lean_object* x_84; uint8_t x_85; lean_object* x_86; 
+x_84 = lean_ctor_get(x_21, 0);
+x_85 = 0;
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_82);
+x_86 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_realizeEqProof(x_82, x_1, x_84, x_85, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_81);
+if (lean_obj_tag(x_86) == 0)
+{
+lean_object* x_87; lean_object* x_88; lean_object* x_89; 
+x_87 = lean_ctor_get(x_86, 0);
+lean_inc(x_87);
+x_88 = lean_ctor_get(x_86, 1);
+lean_inc(x_88);
+lean_dec(x_86);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+x_89 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom(x_82, x_3, x_4, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_88);
+if (lean_obj_tag(x_89) == 0)
+{
+lean_object* x_90; lean_object* x_91; lean_object* x_92; 
+x_90 = lean_ctor_get(x_89, 0);
+lean_inc(x_90);
+x_91 = lean_ctor_get(x_89, 1);
+lean_inc(x_91);
+lean_dec(x_89);
+x_92 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans_x27(x_90, x_87, x_2, x_10, x_11, x_12, x_13, x_91);
+if (lean_obj_tag(x_92) == 0)
+{
+uint8_t x_93; 
+x_93 = !lean_is_exclusive(x_92);
+if (x_93 == 0)
+{
+lean_object* x_94; 
+x_94 = lean_ctor_get(x_92, 0);
+lean_ctor_set(x_21, 0, x_94);
+lean_ctor_set(x_92, 0, x_21);
+return x_92;
+}
+else
+{
+lean_object* x_95; lean_object* x_96; lean_object* x_97; 
+x_95 = lean_ctor_get(x_92, 0);
+x_96 = lean_ctor_get(x_92, 1);
+lean_inc(x_96);
+lean_inc(x_95);
+lean_dec(x_92);
+lean_ctor_set(x_21, 0, x_95);
+x_97 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_97, 0, x_21);
+lean_ctor_set(x_97, 1, x_96);
+return x_97;
+}
+}
+else
+{
+uint8_t x_98; 
+lean_free_object(x_21);
+x_98 = !lean_is_exclusive(x_92);
+if (x_98 == 0)
+{
+return x_92;
+}
+else
+{
+lean_object* x_99; lean_object* x_100; lean_object* x_101; 
+x_99 = lean_ctor_get(x_92, 0);
+x_100 = lean_ctor_get(x_92, 1);
+lean_inc(x_100);
+lean_inc(x_99);
+lean_dec(x_92);
+x_101 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_101, 0, x_99);
+lean_ctor_set(x_101, 1, x_100);
+return x_101;
+}
+}
+}
+else
+{
+uint8_t x_102; 
+lean_dec(x_87);
+lean_free_object(x_21);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+x_102 = !lean_is_exclusive(x_89);
+if (x_102 == 0)
+{
+return x_89;
+}
+else
+{
+lean_object* x_103; lean_object* x_104; lean_object* x_105; 
+x_103 = lean_ctor_get(x_89, 0);
+x_104 = lean_ctor_get(x_89, 1);
+lean_inc(x_104);
+lean_inc(x_103);
+lean_dec(x_89);
+x_105 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_105, 0, x_103);
+lean_ctor_set(x_105, 1, x_104);
+return x_105;
+}
+}
+}
+else
+{
+uint8_t x_106; 
+lean_free_object(x_21);
+lean_dec(x_82);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+x_106 = !lean_is_exclusive(x_86);
+if (x_106 == 0)
+{
+return x_86;
+}
+else
+{
+lean_object* x_107; lean_object* x_108; lean_object* x_109; 
+x_107 = lean_ctor_get(x_86, 0);
+x_108 = lean_ctor_get(x_86, 1);
+lean_inc(x_108);
+lean_inc(x_107);
+lean_dec(x_86);
+x_109 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_109, 0, x_107);
+lean_ctor_set(x_109, 1, x_108);
+return x_109;
+}
+}
+}
+else
+{
+lean_object* x_110; uint8_t x_111; lean_object* x_112; 
+x_110 = lean_ctor_get(x_21, 0);
+lean_inc(x_110);
+lean_dec(x_21);
+x_111 = 0;
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_82);
+x_112 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_realizeEqProof(x_82, x_1, x_110, x_111, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_81);
+if (lean_obj_tag(x_112) == 0)
+{
+lean_object* x_113; lean_object* x_114; lean_object* x_115; 
+x_113 = lean_ctor_get(x_112, 0);
+lean_inc(x_113);
+x_114 = lean_ctor_get(x_112, 1);
+lean_inc(x_114);
+lean_dec(x_112);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+x_115 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom(x_82, x_3, x_4, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_114);
+if (lean_obj_tag(x_115) == 0)
+{
+lean_object* x_116; lean_object* x_117; lean_object* x_118; 
+x_116 = lean_ctor_get(x_115, 0);
+lean_inc(x_116);
+x_117 = lean_ctor_get(x_115, 1);
+lean_inc(x_117);
+lean_dec(x_115);
+x_118 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans_x27(x_116, x_113, x_2, x_10, x_11, x_12, x_13, x_117);
+if (lean_obj_tag(x_118) == 0)
+{
+lean_object* x_119; lean_object* x_120; lean_object* x_121; lean_object* x_122; lean_object* x_123; 
+x_119 = lean_ctor_get(x_118, 0);
+lean_inc(x_119);
+x_120 = lean_ctor_get(x_118, 1);
+lean_inc(x_120);
+if (lean_is_exclusive(x_118)) {
+ lean_ctor_release(x_118, 0);
+ lean_ctor_release(x_118, 1);
+ x_121 = x_118;
+} else {
+ lean_dec_ref(x_118);
+ x_121 = lean_box(0);
+}
+x_122 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_122, 0, x_119);
+if (lean_is_scalar(x_121)) {
+ x_123 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_123 = x_121;
+}
+lean_ctor_set(x_123, 0, x_122);
+lean_ctor_set(x_123, 1, x_120);
+return x_123;
+}
+else
+{
+lean_object* x_124; lean_object* x_125; lean_object* x_126; lean_object* x_127; 
+x_124 = lean_ctor_get(x_118, 0);
+lean_inc(x_124);
+x_125 = lean_ctor_get(x_118, 1);
+lean_inc(x_125);
+if (lean_is_exclusive(x_118)) {
+ lean_ctor_release(x_118, 0);
+ lean_ctor_release(x_118, 1);
+ x_126 = x_118;
+} else {
+ lean_dec_ref(x_118);
+ x_126 = lean_box(0);
+}
+if (lean_is_scalar(x_126)) {
+ x_127 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_127 = x_126;
+}
+lean_ctor_set(x_127, 0, x_124);
+lean_ctor_set(x_127, 1, x_125);
+return x_127;
+}
+}
+else
+{
+lean_object* x_128; lean_object* x_129; lean_object* x_130; lean_object* x_131; 
+lean_dec(x_113);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+x_128 = lean_ctor_get(x_115, 0);
+lean_inc(x_128);
+x_129 = lean_ctor_get(x_115, 1);
+lean_inc(x_129);
+if (lean_is_exclusive(x_115)) {
+ lean_ctor_release(x_115, 0);
+ lean_ctor_release(x_115, 1);
+ x_130 = x_115;
+} else {
+ lean_dec_ref(x_115);
+ x_130 = lean_box(0);
+}
+if (lean_is_scalar(x_130)) {
+ x_131 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_131 = x_130;
+}
+lean_ctor_set(x_131, 0, x_128);
+lean_ctor_set(x_131, 1, x_129);
+return x_131;
+}
+}
+else
+{
+lean_object* x_132; lean_object* x_133; lean_object* x_134; lean_object* x_135; 
+lean_dec(x_82);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+x_132 = lean_ctor_get(x_112, 0);
+lean_inc(x_132);
+x_133 = lean_ctor_get(x_112, 1);
+lean_inc(x_133);
+if (lean_is_exclusive(x_112)) {
+ lean_ctor_release(x_112, 0);
+ lean_ctor_release(x_112, 1);
+ x_134 = x_112;
+} else {
+ lean_dec_ref(x_112);
+ x_134 = lean_box(0);
+}
+if (lean_is_scalar(x_134)) {
+ x_135 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_135 = x_134;
+}
+lean_ctor_set(x_135, 0, x_132);
+lean_ctor_set(x_135, 1, x_133);
+return x_135;
+}
+}
+}
+}
+}
+}
+else
+{
+uint8_t x_136; 
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_1);
+x_136 = !lean_is_exclusive(x_15);
+if (x_136 == 0)
+{
+return x_15;
+}
+else
+{
+lean_object* x_137; lean_object* x_138; lean_object* x_139; 
+x_137 = lean_ctor_get(x_15, 0);
+x_138 = lean_ctor_get(x_15, 1);
+lean_inc(x_138);
+lean_inc(x_137);
+lean_dec(x_15);
+x_139 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_139, 0, x_137);
+lean_ctor_set(x_139, 1, x_138);
+return x_139;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+uint8_t x_14; 
+x_14 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_2);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; 
+x_15 = lean_box(0);
+x_16 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1(x_1, x_4, x_2, x_3, x_15, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+return x_16;
+}
+else
+{
+lean_object* x_17; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_1);
+x_17 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_17, 0, x_3);
+lean_ctor_set(x_17, 1, x_13);
+return x_17;
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_realizeEqProof(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t x_4, uint8_t x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+lean_object* x_15; uint8_t x_16; 
+x_15 = l_Lean_Meta_Grind_congrPlaceholderProof;
+x_16 = lean_expr_eqv(x_3, x_15);
+if (x_16 == 0)
+{
+lean_object* x_17; 
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+lean_dec(x_1);
+x_17 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_flipProof(x_3, x_4, x_5, x_10, x_11, x_12, x_13, x_14);
+return x_17;
+}
+else
+{
+lean_object* x_18; 
+lean_dec(x_3);
+x_18 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof(x_1, x_2, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+return x_18;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_withLocalDecl___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___spec__1___rarg___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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = lean_apply_10(x_1, x_6, x_2, x_3, x_4, x_5, x_7, x_8, x_9, x_10, x_11);
+return x_12;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_withLocalDecl___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___spec__1___rarg(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, uint8_t x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+lean_object* x_15; lean_object* x_16; 
+x_15 = lean_alloc_closure((void*)(l_Lean_Meta_withLocalDecl___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___spec__1___rarg___lambda__1), 11, 5);
+lean_closure_set(x_15, 0, x_4);
+lean_closure_set(x_15, 1, x_6);
+lean_closure_set(x_15, 2, x_7);
+lean_closure_set(x_15, 3, x_8);
+lean_closure_set(x_15, 4, x_9);
+x_16 = l___private_Lean_Meta_Basic_0__Lean_Meta_withLocalDeclImp___rarg(x_1, x_2, x_3, x_15, x_5, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_16) == 0)
+{
+uint8_t x_17; 
+x_17 = !lean_is_exclusive(x_16);
+if (x_17 == 0)
+{
+return x_16;
+}
+else
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_18 = lean_ctor_get(x_16, 0);
+x_19 = lean_ctor_get(x_16, 1);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_dec(x_16);
+x_20 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_20, 0, x_18);
+lean_ctor_set(x_20, 1, x_19);
+return x_20;
+}
+}
+else
+{
+uint8_t x_21; 
+x_21 = !lean_is_exclusive(x_16);
+if (x_21 == 0)
+{
+return x_16;
+}
+else
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_22 = lean_ctor_get(x_16, 0);
+x_23 = lean_ctor_get(x_16, 1);
+lean_inc(x_23);
+lean_inc(x_22);
+lean_dec(x_16);
+x_24 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_24, 0, x_22);
+lean_ctor_set(x_24, 1, x_23);
+return x_24;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_withLocalDecl___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___spec__1(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; 
+x_2 = lean_alloc_closure((void*)(l_Lean_Meta_withLocalDecl___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___spec__1___rarg___boxed), 14, 0);
+return x_2;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___lambda__1___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_levelZero;
+x_2 = l_Lean_Expr_sort___override(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_13 = lean_unsigned_to_nat(0u);
+x_14 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_13);
+x_15 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___lambda__1___closed__1;
+lean_inc(x_14);
+x_16 = lean_mk_array(x_14, x_15);
+x_17 = lean_unsigned_to_nat(1u);
+x_18 = lean_nat_sub(x_14, x_17);
+lean_dec(x_14);
+x_19 = l___private_Lean_Expr_0__Lean_Expr_getAppArgsAux(x_1, x_16, x_18);
+lean_inc(x_3);
+x_20 = l_Lean_mkAppN(x_3, x_19);
+lean_dec(x_19);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+x_21 = l_Lean_Meta_mkHEq(x_2, x_20, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; uint8_t x_27; uint8_t x_28; uint8_t x_29; lean_object* x_30; 
+x_22 = lean_ctor_get(x_21, 0);
+lean_inc(x_22);
+x_23 = lean_ctor_get(x_21, 1);
+lean_inc(x_23);
+lean_dec(x_21);
+x_24 = lean_box(0);
+x_25 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_25, 0, x_3);
+lean_ctor_set(x_25, 1, x_24);
+x_26 = lean_array_mk(x_25);
+x_27 = 0;
+x_28 = 1;
+x_29 = 1;
+x_30 = l_Lean_Meta_mkLambdaFVars(x_26, x_22, x_27, x_28, x_27, x_29, x_8, x_9, x_10, x_11, x_23);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_26);
+return x_30;
+}
+else
+{
+uint8_t x_31; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_3);
+x_31 = !lean_is_exclusive(x_21);
+if (x_31 == 0)
+{
+return x_21;
+}
+else
+{
+lean_object* x_32; lean_object* x_33; lean_object* x_34; 
+x_32 = lean_ctor_get(x_21, 0);
+x_33 = lean_ctor_get(x_21, 1);
+lean_inc(x_33);
+lean_inc(x_32);
+lean_dec(x_21);
+x_34 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_34, 0, x_32);
+lean_ctor_set(x_34, 1, x_33);
+return x_34;
+}
+}
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("thm.argKinds.size == numArgs\n      ", 35, 35);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__1;
+x_3 = lean_string_append(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("_private.Lean.Meta.Tactic.Grind.Proof.0.Lean.Meta.Grind.mkCongrProof", 68, 68);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__3;
+x_3 = lean_unsigned_to_nat(143u);
+x_4 = lean_unsigned_to_nat(6u);
+x_5 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__2;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__5() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("x", 1, 1);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__6() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__5;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__7() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("rhs.getAppNumArgs == numArgs\n    ", 33, 33);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__8() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__7;
+x_3 = lean_string_append(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__9() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__3;
+x_3 = lean_unsigned_to_nat(136u);
+x_4 = lean_unsigned_to_nat(4u);
+x_5 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__8;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__10() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Lean", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__11() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Grind", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__12() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("nestedProof", 11, 11);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__13() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__10;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__11;
+x_3 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__12;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof(lean_object* x_1, lean_object* x_2, uint8_t 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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_87; uint8_t x_88; 
+x_13 = l_Lean_Expr_getAppFn(x_1);
+x_14 = l_Lean_Expr_getAppFn(x_2);
+x_15 = lean_unsigned_to_nat(0u);
+x_16 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_15);
+x_87 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_2, x_15);
+x_88 = lean_nat_dec_eq(x_87, x_16);
+lean_dec(x_87);
+if (x_88 == 0)
+{
+lean_object* x_89; lean_object* x_90; 
+lean_dec(x_16);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_2);
+lean_dec(x_1);
+x_89 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__9;
+x_90 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__9(x_89, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+return x_90;
+}
+else
+{
+lean_object* x_91; uint8_t x_92; 
+x_91 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__13;
+x_92 = l_Lean_Expr_isConstOf(x_13, x_91);
+if (x_92 == 0)
+{
+lean_object* x_93; 
+x_93 = lean_box(0);
+x_17 = x_93;
+goto block_86;
+}
+else
+{
+uint8_t x_94; 
+x_94 = l_Lean_Expr_isConstOf(x_14, x_91);
+if (x_94 == 0)
+{
+lean_object* x_95; 
+x_95 = lean_box(0);
+x_17 = x_95;
+goto block_86;
+}
+else
+{
+lean_object* x_96; uint8_t x_97; 
+x_96 = lean_unsigned_to_nat(2u);
+x_97 = lean_nat_dec_eq(x_16, x_96);
+if (x_97 == 0)
+{
+lean_object* x_98; 
+x_98 = lean_box(0);
+x_17 = x_98;
+goto block_86;
+}
+else
+{
+lean_object* x_99; 
+lean_dec(x_16);
+lean_dec(x_14);
+lean_dec(x_13);
+x_99 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_99;
+}
+}
+}
+}
+block_86:
+{
+lean_object* x_18; 
+lean_dec(x_17);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_13);
+x_18 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isCongrDefaultProofTarget(x_1, x_2, x_13, x_14, x_16, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_18) == 0)
+{
+lean_object* x_19; uint8_t x_20; 
+x_19 = lean_ctor_get(x_18, 0);
+lean_inc(x_19);
+x_20 = lean_unbox(x_19);
+lean_dec(x_19);
+if (x_20 == 0)
+{
+lean_object* x_21; lean_object* x_22; 
+x_21 = lean_ctor_get(x_18, 1);
+lean_inc(x_21);
+lean_dec(x_18);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_16);
+lean_inc(x_13);
+x_22 = l_Lean_Meta_Grind_mkHCongrWithArity(x_13, x_16, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_21);
+if (lean_obj_tag(x_22) == 0)
+{
+lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; uint8_t x_27; 
+x_23 = lean_ctor_get(x_22, 0);
+lean_inc(x_23);
+x_24 = lean_ctor_get(x_22, 1);
+lean_inc(x_24);
+lean_dec(x_22);
+x_25 = lean_ctor_get(x_23, 2);
+lean_inc(x_25);
+x_26 = lean_array_get_size(x_25);
+lean_dec(x_25);
+x_27 = lean_nat_dec_eq(x_26, x_16);
+lean_dec(x_26);
+if (x_27 == 0)
+{
+lean_object* x_28; lean_object* x_29; 
+lean_dec(x_23);
+lean_dec(x_16);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_2);
+lean_dec(x_1);
+x_28 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__4;
+x_29 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__9(x_28, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_24);
+return x_29;
+}
+else
+{
+lean_object* x_30; 
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_30 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof_loop(x_23, x_1, x_2, x_16, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_24);
+lean_dec(x_16);
+lean_dec(x_23);
+if (lean_obj_tag(x_30) == 0)
+{
+lean_object* x_31; lean_object* x_32; uint8_t x_33; 
+x_31 = lean_ctor_get(x_30, 0);
+lean_inc(x_31);
+x_32 = lean_ctor_get(x_30, 1);
+lean_inc(x_32);
+lean_dec(x_30);
+x_33 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_13, x_14);
+if (x_33 == 0)
+{
+lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; 
+x_34 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__6;
+x_35 = l___private_Lean_CoreM_0__Lean_Core_mkFreshNameImp(x_34, x_10, x_11, x_32);
+x_36 = lean_ctor_get(x_35, 0);
+lean_inc(x_36);
+x_37 = lean_ctor_get(x_35, 1);
+lean_inc(x_37);
+lean_dec(x_35);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_13);
+x_38 = lean_infer_type(x_13, x_8, x_9, x_10, x_11, x_37);
+if (lean_obj_tag(x_38) == 0)
+{
+lean_object* x_39; lean_object* x_40; lean_object* x_41; uint8_t x_42; uint8_t x_43; lean_object* x_44; 
+x_39 = lean_ctor_get(x_38, 0);
+lean_inc(x_39);
+x_40 = lean_ctor_get(x_38, 1);
+lean_inc(x_40);
+lean_dec(x_38);
+x_41 = lean_alloc_closure((void*)(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___lambda__1___boxed), 12, 2);
+lean_closure_set(x_41, 0, x_2);
+lean_closure_set(x_41, 1, x_1);
+x_42 = 0;
+x_43 = 0;
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_44 = l_Lean_Meta_withLocalDecl___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___spec__1___rarg(x_36, x_42, x_39, x_41, x_43, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_40);
+if (lean_obj_tag(x_44) == 0)
+{
+lean_object* x_45; lean_object* x_46; uint8_t x_47; lean_object* x_48; 
+x_45 = lean_ctor_get(x_44, 0);
+lean_inc(x_45);
+x_46 = lean_ctor_get(x_44, 1);
+lean_inc(x_46);
+lean_dec(x_44);
+x_47 = 0;
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+x_48 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_13, x_14, x_47, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_46);
+if (lean_obj_tag(x_48) == 0)
+{
+lean_object* x_49; lean_object* x_50; lean_object* x_51; 
+x_49 = lean_ctor_get(x_48, 0);
+lean_inc(x_49);
+x_50 = lean_ctor_get(x_48, 1);
+lean_inc(x_50);
+lean_dec(x_48);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+x_51 = l_Lean_Meta_mkEqNDRec(x_45, x_31, x_49, x_8, x_9, x_10, x_11, x_50);
+if (lean_obj_tag(x_51) == 0)
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_52 = lean_ctor_get(x_51, 0);
+lean_inc(x_52);
+x_53 = lean_ctor_get(x_51, 1);
+lean_inc(x_53);
+lean_dec(x_51);
+x_54 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqOfHEqIfNeeded(x_52, x_3, x_8, x_9, x_10, x_11, x_53);
+return x_54;
+}
+else
+{
+uint8_t x_55; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+x_55 = !lean_is_exclusive(x_51);
+if (x_55 == 0)
+{
+return x_51;
+}
+else
+{
+lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+x_56 = lean_ctor_get(x_51, 0);
+x_57 = lean_ctor_get(x_51, 1);
+lean_inc(x_57);
+lean_inc(x_56);
+lean_dec(x_51);
+x_58 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_58, 0, x_56);
+lean_ctor_set(x_58, 1, x_57);
+return x_58;
+}
+}
+}
+else
+{
+uint8_t x_59; 
+lean_dec(x_45);
+lean_dec(x_31);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+x_59 = !lean_is_exclusive(x_48);
+if (x_59 == 0)
+{
+return x_48;
+}
+else
+{
+lean_object* x_60; lean_object* x_61; lean_object* x_62; 
+x_60 = lean_ctor_get(x_48, 0);
+x_61 = lean_ctor_get(x_48, 1);
+lean_inc(x_61);
+lean_inc(x_60);
+lean_dec(x_48);
+x_62 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_62, 0, x_60);
+lean_ctor_set(x_62, 1, x_61);
+return x_62;
+}
+}
+}
+else
+{
+uint8_t x_63; 
+lean_dec(x_31);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_63 = !lean_is_exclusive(x_44);
+if (x_63 == 0)
+{
+return x_44;
+}
+else
+{
+lean_object* x_64; lean_object* x_65; lean_object* x_66; 
+x_64 = lean_ctor_get(x_44, 0);
+x_65 = lean_ctor_get(x_44, 1);
+lean_inc(x_65);
+lean_inc(x_64);
+lean_dec(x_44);
+x_66 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_66, 0, x_64);
+lean_ctor_set(x_66, 1, x_65);
+return x_66;
+}
+}
+}
+else
+{
+uint8_t x_67; 
+lean_dec(x_36);
+lean_dec(x_31);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+x_67 = !lean_is_exclusive(x_38);
+if (x_67 == 0)
+{
+return x_38;
+}
+else
+{
+lean_object* x_68; lean_object* x_69; lean_object* x_70; 
+x_68 = lean_ctor_get(x_38, 0);
+x_69 = lean_ctor_get(x_38, 1);
+lean_inc(x_69);
+lean_inc(x_68);
+lean_dec(x_38);
+x_70 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_70, 0, x_68);
+lean_ctor_set(x_70, 1, x_69);
+return x_70;
+}
+}
+}
+else
+{
+lean_object* x_71; 
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+x_71 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqOfHEqIfNeeded(x_31, x_3, x_8, x_9, x_10, x_11, x_32);
+return x_71;
+}
+}
+else
+{
+uint8_t x_72; 
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+x_72 = !lean_is_exclusive(x_30);
+if (x_72 == 0)
+{
+return x_30;
+}
+else
+{
+lean_object* x_73; lean_object* x_74; lean_object* x_75; 
+x_73 = lean_ctor_get(x_30, 0);
+x_74 = lean_ctor_get(x_30, 1);
+lean_inc(x_74);
+lean_inc(x_73);
+lean_dec(x_30);
+x_75 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_75, 0, x_73);
+lean_ctor_set(x_75, 1, x_74);
+return x_75;
+}
+}
+}
+}
+else
+{
+uint8_t x_76; 
+lean_dec(x_16);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+x_76 = !lean_is_exclusive(x_22);
+if (x_76 == 0)
+{
+return x_22;
+}
+else
+{
+lean_object* x_77; lean_object* x_78; lean_object* x_79; 
+x_77 = lean_ctor_get(x_22, 0);
+x_78 = lean_ctor_get(x_22, 1);
+lean_inc(x_78);
+lean_inc(x_77);
+lean_dec(x_22);
+x_79 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_79, 0, x_77);
+lean_ctor_set(x_79, 1, x_78);
+return x_79;
+}
+}
+}
+else
+{
+lean_object* x_80; lean_object* x_81; 
+lean_dec(x_16);
+lean_dec(x_14);
+lean_dec(x_13);
+x_80 = lean_ctor_get(x_18, 1);
+lean_inc(x_80);
+lean_dec(x_18);
+x_81 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_80);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_81;
+}
+}
+else
+{
+uint8_t x_82; 
+lean_dec(x_16);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+lean_dec(x_1);
+x_82 = !lean_is_exclusive(x_18);
+if (x_82 == 0)
+{
+return x_18;
+}
+else
+{
+lean_object* x_83; lean_object* x_84; lean_object* x_85; 
+x_83 = lean_ctor_get(x_18, 0);
+x_84 = lean_ctor_get(x_18, 1);
+lean_inc(x_84);
+lean_inc(x_83);
+lean_dec(x_18);
+x_85 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_85, 0, x_83);
+lean_ctor_set(x_85, 1, x_84);
+return x_85;
+}
+}
+}
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Init.Data.Option.BasicAux", 25, 25);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Option.get!", 11, 11);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("value is none", 13, 13);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__2;
+x_3 = lean_unsigned_to_nat(16u);
+x_4 = lean_unsigned_to_nat(14u);
+x_5 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__3;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof(lean_object* x_1, lean_object* x_2, uint8_t 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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+x_13 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof_loop(x_1, x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
+{
+lean_object* x_14; 
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+if (lean_obj_tag(x_14) == 0)
+{
+uint8_t x_15; 
+x_15 = !lean_is_exclusive(x_13);
+if (x_15 == 0)
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_16 = lean_ctor_get(x_13, 1);
+x_17 = lean_ctor_get(x_13, 0);
+lean_dec(x_17);
+x_18 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__4;
+x_19 = l_panic___at_Lean_Expr_appFn_x21___spec__1(x_18);
+if (x_3 == 0)
+{
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_ctor_set(x_13, 0, x_19);
+return x_13;
+}
+else
+{
+lean_object* x_20; 
+lean_free_object(x_13);
+x_20 = l_Lean_Meta_mkHEqOfEq(x_19, x_8, x_9, x_10, x_11, x_16);
+return x_20;
+}
+}
+else
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; 
+x_21 = lean_ctor_get(x_13, 1);
+lean_inc(x_21);
+lean_dec(x_13);
+x_22 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__4;
+x_23 = l_panic___at_Lean_Expr_appFn_x21___spec__1(x_22);
+if (x_3 == 0)
+{
+lean_object* x_24; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+x_24 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_24, 0, x_23);
+lean_ctor_set(x_24, 1, x_21);
+return x_24;
+}
+else
+{
+lean_object* x_25; 
+x_25 = l_Lean_Meta_mkHEqOfEq(x_23, x_8, x_9, x_10, x_11, x_21);
+return x_25;
+}
+}
+}
+else
+{
+if (x_3 == 0)
+{
+uint8_t x_26; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+x_26 = !lean_is_exclusive(x_13);
+if (x_26 == 0)
+{
+lean_object* x_27; lean_object* x_28; 
+x_27 = lean_ctor_get(x_13, 0);
+lean_dec(x_27);
+x_28 = lean_ctor_get(x_14, 0);
+lean_inc(x_28);
+lean_dec(x_14);
+lean_ctor_set(x_13, 0, x_28);
+return x_13;
+}
+else
+{
+lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+x_29 = lean_ctor_get(x_13, 1);
+lean_inc(x_29);
+lean_dec(x_13);
+x_30 = lean_ctor_get(x_14, 0);
+lean_inc(x_30);
+lean_dec(x_14);
+x_31 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_31, 0, x_30);
+lean_ctor_set(x_31, 1, x_29);
+return x_31;
+}
+}
+else
+{
+lean_object* x_32; lean_object* x_33; lean_object* x_34; 
+x_32 = lean_ctor_get(x_13, 1);
+lean_inc(x_32);
+lean_dec(x_13);
+x_33 = lean_ctor_get(x_14, 0);
+lean_inc(x_33);
+lean_dec(x_14);
+x_34 = l_Lean_Meta_mkHEqOfEq(x_33, x_8, x_9, x_10, x_11, x_32);
+return x_34;
+}
+}
+}
+else
+{
+uint8_t x_35; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+x_35 = !lean_is_exclusive(x_13);
+if (x_35 == 0)
+{
+return x_13;
+}
+else
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; 
+x_36 = lean_ctor_get(x_13, 0);
+x_37 = lean_ctor_get(x_13, 1);
+lean_inc(x_37);
+lean_inc(x_36);
+lean_dec(x_13);
+x_38 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_38, 0, x_36);
+lean_ctor_set(x_38, 1, x_37);
+return x_38;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof_loop(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, lean_object* x_11) {
+_start:
+{
+uint8_t x_12; 
+x_12 = l_Lean_Expr_isApp(x_1);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_13 = lean_box(0);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_13);
+lean_ctor_set(x_14, 1, x_11);
+return x_14;
+}
+else
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_15 = l_Lean_Expr_appArg_x21(x_1);
+x_16 = l_Lean_Expr_appArg_x21(x_2);
+x_17 = l_Lean_Expr_appFn_x21(x_1);
+x_18 = l_Lean_Expr_appFn_x21(x_2);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_19 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof_loop(x_17, x_18, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_18);
+if (lean_obj_tag(x_19) == 0)
+{
+lean_object* x_20; 
+x_20 = lean_ctor_get(x_19, 0);
+lean_inc(x_20);
+if (lean_obj_tag(x_20) == 0)
+{
+uint8_t x_21; 
+x_21 = !lean_is_exclusive(x_19);
+if (x_21 == 0)
+{
+lean_object* x_22; lean_object* x_23; uint8_t x_24; 
+x_22 = lean_ctor_get(x_19, 1);
+x_23 = lean_ctor_get(x_19, 0);
+lean_dec(x_23);
+x_24 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_15, x_16);
+if (x_24 == 0)
+{
+uint8_t x_25; lean_object* x_26; 
+lean_free_object(x_19);
+x_25 = 0;
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+x_26 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_15, x_16, x_25, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_22);
+if (lean_obj_tag(x_26) == 0)
+{
+lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_27 = lean_ctor_get(x_26, 0);
+lean_inc(x_27);
+x_28 = lean_ctor_get(x_26, 1);
+lean_inc(x_28);
+lean_dec(x_26);
+x_29 = l_Lean_Meta_mkCongrArg(x_17, x_27, x_7, x_8, x_9, x_10, x_28);
+if (lean_obj_tag(x_29) == 0)
+{
+uint8_t x_30; 
+x_30 = !lean_is_exclusive(x_29);
+if (x_30 == 0)
+{
+lean_object* x_31; lean_object* x_32; 
+x_31 = lean_ctor_get(x_29, 0);
+x_32 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_32, 0, x_31);
+lean_ctor_set(x_29, 0, x_32);
+return x_29;
+}
+else
+{
+lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_33 = lean_ctor_get(x_29, 0);
+x_34 = lean_ctor_get(x_29, 1);
+lean_inc(x_34);
+lean_inc(x_33);
+lean_dec(x_29);
+x_35 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_35, 0, x_33);
+x_36 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_36, 0, x_35);
+lean_ctor_set(x_36, 1, x_34);
+return x_36;
+}
+}
+else
+{
+uint8_t x_37; 
+x_37 = !lean_is_exclusive(x_29);
+if (x_37 == 0)
+{
+return x_29;
+}
+else
+{
+lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+x_38 = lean_ctor_get(x_29, 0);
+x_39 = lean_ctor_get(x_29, 1);
+lean_inc(x_39);
+lean_inc(x_38);
+lean_dec(x_29);
+x_40 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_40, 0, x_38);
+lean_ctor_set(x_40, 1, x_39);
+return x_40;
+}
+}
+}
+else
+{
+uint8_t x_41; 
+lean_dec(x_17);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+x_41 = !lean_is_exclusive(x_26);
+if (x_41 == 0)
+{
+return x_26;
+}
+else
+{
+lean_object* x_42; lean_object* x_43; lean_object* x_44; 
+x_42 = lean_ctor_get(x_26, 0);
+x_43 = lean_ctor_get(x_26, 1);
+lean_inc(x_43);
+lean_inc(x_42);
+lean_dec(x_26);
+x_44 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_44, 0, x_42);
+lean_ctor_set(x_44, 1, x_43);
+return x_44;
+}
+}
+}
+else
+{
+lean_object* x_45; 
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_45 = lean_box(0);
+lean_ctor_set(x_19, 0, x_45);
+return x_19;
+}
+}
+else
+{
+lean_object* x_46; uint8_t x_47; 
+x_46 = lean_ctor_get(x_19, 1);
+lean_inc(x_46);
+lean_dec(x_19);
+x_47 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_15, x_16);
+if (x_47 == 0)
+{
+uint8_t x_48; lean_object* x_49; 
+x_48 = 0;
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+x_49 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_15, x_16, x_48, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_46);
+if (lean_obj_tag(x_49) == 0)
+{
+lean_object* x_50; lean_object* x_51; lean_object* x_52; 
+x_50 = lean_ctor_get(x_49, 0);
+lean_inc(x_50);
+x_51 = lean_ctor_get(x_49, 1);
+lean_inc(x_51);
+lean_dec(x_49);
+x_52 = l_Lean_Meta_mkCongrArg(x_17, x_50, x_7, x_8, x_9, x_10, x_51);
+if (lean_obj_tag(x_52) == 0)
+{
+lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; 
+x_53 = lean_ctor_get(x_52, 0);
+lean_inc(x_53);
+x_54 = lean_ctor_get(x_52, 1);
+lean_inc(x_54);
+if (lean_is_exclusive(x_52)) {
+ lean_ctor_release(x_52, 0);
+ lean_ctor_release(x_52, 1);
+ x_55 = x_52;
+} else {
+ lean_dec_ref(x_52);
+ x_55 = lean_box(0);
+}
+x_56 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_56, 0, x_53);
+if (lean_is_scalar(x_55)) {
+ x_57 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_57 = x_55;
+}
+lean_ctor_set(x_57, 0, x_56);
+lean_ctor_set(x_57, 1, x_54);
+return x_57;
+}
+else
+{
+lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; 
+x_58 = lean_ctor_get(x_52, 0);
+lean_inc(x_58);
+x_59 = lean_ctor_get(x_52, 1);
+lean_inc(x_59);
+if (lean_is_exclusive(x_52)) {
+ lean_ctor_release(x_52, 0);
+ lean_ctor_release(x_52, 1);
+ x_60 = x_52;
+} else {
+ lean_dec_ref(x_52);
+ x_60 = lean_box(0);
+}
+if (lean_is_scalar(x_60)) {
+ x_61 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_61 = x_60;
+}
+lean_ctor_set(x_61, 0, x_58);
+lean_ctor_set(x_61, 1, x_59);
+return x_61;
+}
+}
+else
+{
+lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; 
+lean_dec(x_17);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+x_62 = lean_ctor_get(x_49, 0);
+lean_inc(x_62);
+x_63 = lean_ctor_get(x_49, 1);
+lean_inc(x_63);
+if (lean_is_exclusive(x_49)) {
+ lean_ctor_release(x_49, 0);
+ lean_ctor_release(x_49, 1);
+ x_64 = x_49;
+} else {
+ lean_dec_ref(x_49);
+ x_64 = lean_box(0);
+}
+if (lean_is_scalar(x_64)) {
+ x_65 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_65 = x_64;
+}
+lean_ctor_set(x_65, 0, x_62);
+lean_ctor_set(x_65, 1, x_63);
+return x_65;
+}
+}
+else
+{
+lean_object* x_66; lean_object* x_67; 
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_66 = lean_box(0);
+x_67 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_67, 0, x_66);
+lean_ctor_set(x_67, 1, x_46);
+return x_67;
+}
+}
+}
+else
+{
+lean_object* x_68; uint8_t x_69; 
+lean_dec(x_17);
+x_68 = lean_ctor_get(x_19, 1);
+lean_inc(x_68);
+lean_dec(x_19);
+x_69 = !lean_is_exclusive(x_20);
+if (x_69 == 0)
+{
+lean_object* x_70; uint8_t x_71; 
+x_70 = lean_ctor_get(x_20, 0);
+x_71 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_15, x_16);
+if (x_71 == 0)
+{
+uint8_t x_72; lean_object* x_73; 
+x_72 = 0;
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+x_73 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_15, x_16, x_72, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_68);
+if (lean_obj_tag(x_73) == 0)
+{
+lean_object* x_74; lean_object* x_75; lean_object* x_76; 
+x_74 = lean_ctor_get(x_73, 0);
+lean_inc(x_74);
+x_75 = lean_ctor_get(x_73, 1);
+lean_inc(x_75);
+lean_dec(x_73);
+x_76 = l_Lean_Meta_mkCongr(x_70, x_74, x_7, x_8, x_9, x_10, x_75);
+if (lean_obj_tag(x_76) == 0)
+{
+uint8_t x_77; 
+x_77 = !lean_is_exclusive(x_76);
+if (x_77 == 0)
+{
+lean_object* x_78; 
+x_78 = lean_ctor_get(x_76, 0);
+lean_ctor_set(x_20, 0, x_78);
+lean_ctor_set(x_76, 0, x_20);
+return x_76;
+}
+else
+{
+lean_object* x_79; lean_object* x_80; lean_object* x_81; 
+x_79 = lean_ctor_get(x_76, 0);
+x_80 = lean_ctor_get(x_76, 1);
+lean_inc(x_80);
+lean_inc(x_79);
+lean_dec(x_76);
+lean_ctor_set(x_20, 0, x_79);
+x_81 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_81, 0, x_20);
+lean_ctor_set(x_81, 1, x_80);
+return x_81;
+}
+}
+else
+{
+uint8_t x_82; 
+lean_free_object(x_20);
+x_82 = !lean_is_exclusive(x_76);
+if (x_82 == 0)
+{
+return x_76;
+}
+else
+{
+lean_object* x_83; lean_object* x_84; lean_object* x_85; 
+x_83 = lean_ctor_get(x_76, 0);
+x_84 = lean_ctor_get(x_76, 1);
+lean_inc(x_84);
+lean_inc(x_83);
+lean_dec(x_76);
+x_85 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_85, 0, x_83);
+lean_ctor_set(x_85, 1, x_84);
+return x_85;
+}
+}
+}
+else
+{
+uint8_t x_86; 
+lean_free_object(x_20);
+lean_dec(x_70);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+x_86 = !lean_is_exclusive(x_73);
+if (x_86 == 0)
+{
+return x_73;
+}
+else
+{
+lean_object* x_87; lean_object* x_88; lean_object* x_89; 
+x_87 = lean_ctor_get(x_73, 0);
+x_88 = lean_ctor_get(x_73, 1);
+lean_inc(x_88);
+lean_inc(x_87);
+lean_dec(x_73);
+x_89 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_89, 0, x_87);
+lean_ctor_set(x_89, 1, x_88);
+return x_89;
+}
+}
+}
+else
+{
+lean_object* x_90; 
+lean_dec(x_16);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_90 = l_Lean_Meta_mkCongrFun(x_70, x_15, x_7, x_8, x_9, x_10, x_68);
+if (lean_obj_tag(x_90) == 0)
+{
+uint8_t x_91; 
+x_91 = !lean_is_exclusive(x_90);
+if (x_91 == 0)
+{
+lean_object* x_92; 
+x_92 = lean_ctor_get(x_90, 0);
+lean_ctor_set(x_20, 0, x_92);
+lean_ctor_set(x_90, 0, x_20);
+return x_90;
+}
+else
+{
+lean_object* x_93; lean_object* x_94; lean_object* x_95; 
+x_93 = lean_ctor_get(x_90, 0);
+x_94 = lean_ctor_get(x_90, 1);
+lean_inc(x_94);
+lean_inc(x_93);
+lean_dec(x_90);
+lean_ctor_set(x_20, 0, x_93);
+x_95 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_95, 0, x_20);
+lean_ctor_set(x_95, 1, x_94);
+return x_95;
+}
+}
+else
+{
+uint8_t x_96; 
+lean_free_object(x_20);
+x_96 = !lean_is_exclusive(x_90);
+if (x_96 == 0)
+{
+return x_90;
+}
+else
+{
+lean_object* x_97; lean_object* x_98; lean_object* x_99; 
+x_97 = lean_ctor_get(x_90, 0);
+x_98 = lean_ctor_get(x_90, 1);
+lean_inc(x_98);
+lean_inc(x_97);
+lean_dec(x_90);
+x_99 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_99, 0, x_97);
+lean_ctor_set(x_99, 1, x_98);
+return x_99;
+}
+}
+}
+}
+else
+{
+lean_object* x_100; uint8_t x_101; 
+x_100 = lean_ctor_get(x_20, 0);
+lean_inc(x_100);
+lean_dec(x_20);
+x_101 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_15, x_16);
+if (x_101 == 0)
+{
+uint8_t x_102; lean_object* x_103; 
+x_102 = 0;
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+x_103 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_15, x_16, x_102, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_68);
+if (lean_obj_tag(x_103) == 0)
+{
+lean_object* x_104; lean_object* x_105; lean_object* x_106; 
+x_104 = lean_ctor_get(x_103, 0);
+lean_inc(x_104);
+x_105 = lean_ctor_get(x_103, 1);
+lean_inc(x_105);
+lean_dec(x_103);
+x_106 = l_Lean_Meta_mkCongr(x_100, x_104, x_7, x_8, x_9, x_10, x_105);
+if (lean_obj_tag(x_106) == 0)
+{
+lean_object* x_107; lean_object* x_108; lean_object* x_109; lean_object* x_110; lean_object* x_111; 
+x_107 = lean_ctor_get(x_106, 0);
+lean_inc(x_107);
+x_108 = lean_ctor_get(x_106, 1);
+lean_inc(x_108);
+if (lean_is_exclusive(x_106)) {
+ lean_ctor_release(x_106, 0);
+ lean_ctor_release(x_106, 1);
+ x_109 = x_106;
+} else {
+ lean_dec_ref(x_106);
+ x_109 = lean_box(0);
+}
+x_110 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_110, 0, x_107);
+if (lean_is_scalar(x_109)) {
+ x_111 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_111 = x_109;
+}
+lean_ctor_set(x_111, 0, x_110);
+lean_ctor_set(x_111, 1, x_108);
+return x_111;
+}
+else
+{
+lean_object* x_112; lean_object* x_113; lean_object* x_114; lean_object* x_115; 
+x_112 = lean_ctor_get(x_106, 0);
+lean_inc(x_112);
+x_113 = lean_ctor_get(x_106, 1);
+lean_inc(x_113);
+if (lean_is_exclusive(x_106)) {
+ lean_ctor_release(x_106, 0);
+ lean_ctor_release(x_106, 1);
+ x_114 = x_106;
+} else {
+ lean_dec_ref(x_106);
+ x_114 = lean_box(0);
+}
+if (lean_is_scalar(x_114)) {
+ x_115 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_115 = x_114;
+}
+lean_ctor_set(x_115, 0, x_112);
+lean_ctor_set(x_115, 1, x_113);
+return x_115;
+}
+}
+else
+{
+lean_object* x_116; lean_object* x_117; lean_object* x_118; lean_object* x_119; 
+lean_dec(x_100);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+x_116 = lean_ctor_get(x_103, 0);
+lean_inc(x_116);
+x_117 = lean_ctor_get(x_103, 1);
+lean_inc(x_117);
+if (lean_is_exclusive(x_103)) {
+ lean_ctor_release(x_103, 0);
+ lean_ctor_release(x_103, 1);
+ x_118 = x_103;
+} else {
+ lean_dec_ref(x_103);
+ x_118 = lean_box(0);
+}
+if (lean_is_scalar(x_118)) {
+ x_119 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_119 = x_118;
+}
+lean_ctor_set(x_119, 0, x_116);
+lean_ctor_set(x_119, 1, x_117);
+return x_119;
+}
+}
+else
+{
+lean_object* x_120; 
+lean_dec(x_16);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_120 = l_Lean_Meta_mkCongrFun(x_100, x_15, x_7, x_8, x_9, x_10, x_68);
+if (lean_obj_tag(x_120) == 0)
+{
+lean_object* x_121; lean_object* x_122; lean_object* x_123; lean_object* x_124; lean_object* x_125; 
+x_121 = lean_ctor_get(x_120, 0);
+lean_inc(x_121);
+x_122 = lean_ctor_get(x_120, 1);
+lean_inc(x_122);
+if (lean_is_exclusive(x_120)) {
+ lean_ctor_release(x_120, 0);
+ lean_ctor_release(x_120, 1);
+ x_123 = x_120;
+} else {
+ lean_dec_ref(x_120);
+ x_123 = lean_box(0);
+}
+x_124 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_124, 0, x_121);
+if (lean_is_scalar(x_123)) {
+ x_125 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_125 = x_123;
+}
+lean_ctor_set(x_125, 0, x_124);
+lean_ctor_set(x_125, 1, x_122);
+return x_125;
+}
+else
+{
+lean_object* x_126; lean_object* x_127; lean_object* x_128; lean_object* x_129; 
+x_126 = lean_ctor_get(x_120, 0);
+lean_inc(x_126);
+x_127 = lean_ctor_get(x_120, 1);
+lean_inc(x_127);
+if (lean_is_exclusive(x_120)) {
+ lean_ctor_release(x_120, 0);
+ lean_ctor_release(x_120, 1);
+ x_128 = x_120;
+} else {
+ lean_dec_ref(x_120);
+ x_128 = lean_box(0);
+}
+if (lean_is_scalar(x_128)) {
+ x_129 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_129 = x_128;
+}
+lean_ctor_set(x_129, 0, x_126);
+lean_ctor_set(x_129, 1, x_127);
+return x_129;
+}
+}
+}
+}
+}
+else
+{
+uint8_t x_130; 
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_130 = !lean_is_exclusive(x_19);
+if (x_130 == 0)
+{
+return x_19;
+}
+else
+{
+lean_object* x_131; lean_object* x_132; lean_object* x_133; 
+x_131 = lean_ctor_get(x_19, 0);
+x_132 = lean_ctor_get(x_19, 1);
+lean_inc(x_132);
+lean_inc(x_131);
+lean_dec(x_19);
+x_133 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_133, 0, x_131);
+lean_ctor_set(x_133, 1, x_132);
+return x_133;
+}
+}
+}
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("nestedProof_congr", 17, 17);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__10;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__11;
+x_3 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__1;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__2;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr(lean_object* x_1, lean_object* x_2, uint8_t 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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; lean_object* x_20; 
+x_13 = l_Lean_Expr_appFn_x21(x_1);
+x_14 = l_Lean_Expr_appArg_x21(x_13);
+lean_dec(x_13);
+x_15 = l_Lean_Expr_appArg_x21(x_1);
+x_16 = l_Lean_Expr_appFn_x21(x_2);
+x_17 = l_Lean_Expr_appArg_x21(x_16);
+lean_dec(x_16);
+x_18 = l_Lean_Expr_appArg_x21(x_2);
+x_19 = 0;
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_17);
+lean_inc(x_14);
+x_20 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_14, x_17, x_19, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_20) == 0)
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+x_21 = lean_ctor_get(x_20, 0);
+lean_inc(x_21);
+x_22 = lean_ctor_get(x_20, 1);
+lean_inc(x_22);
+lean_dec(x_20);
+x_23 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__3;
+x_24 = l_Lean_mkApp5(x_23, x_14, x_17, x_21, x_15, x_18);
+x_25 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqOfHEqIfNeeded(x_24, x_3, x_8, x_9, x_10, x_11, x_22);
+return x_25;
+}
+else
+{
+uint8_t x_26; 
+lean_dec(x_18);
+lean_dec(x_17);
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+x_26 = !lean_is_exclusive(x_20);
+if (x_26 == 0)
+{
+return x_20;
+}
+else
+{
+lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_27 = lean_ctor_get(x_20, 0);
+x_28 = lean_ctor_get(x_20, 1);
+lean_inc(x_28);
+lean_inc(x_27);
+lean_dec(x_20);
+x_29 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_29, 0, x_27);
+lean_ctor_set(x_29, 1, x_28);
+return x_29;
+}
+}
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("_private.Lean.Meta.Tactic.Grind.Proof.0.Lean.Meta.Grind.mkProofTo", 65, 65);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__1;
+x_3 = lean_unsigned_to_nat(181u);
+x_4 = lean_unsigned_to_nat(35u);
+x_5 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__3;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__1;
+x_3 = lean_unsigned_to_nat(182u);
+x_4 = lean_unsigned_to_nat(29u);
+x_5 = l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__3;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1(lean_object* x_1, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+lean_object* x_15; 
+lean_inc(x_1);
+x_15 = l_Lean_Meta_Grind_getENode(x_1, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+if (lean_obj_tag(x_15) == 0)
+{
+lean_object* x_16; lean_object* x_17; 
+x_16 = lean_ctor_get(x_15, 0);
+lean_inc(x_16);
+x_17 = lean_ctor_get(x_16, 4);
+lean_inc(x_17);
+if (lean_obj_tag(x_17) == 0)
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+lean_dec(x_16);
+lean_dec(x_3);
+lean_dec(x_1);
+x_18 = lean_ctor_get(x_15, 1);
+lean_inc(x_18);
+lean_dec(x_15);
+x_19 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__2;
+x_20 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___spec__1(x_19, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_18);
+return x_20;
+}
+else
+{
+lean_object* x_21; 
+x_21 = lean_ctor_get(x_16, 5);
+lean_inc(x_21);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_3);
+lean_dec(x_1);
+x_22 = lean_ctor_get(x_15, 1);
+lean_inc(x_22);
+lean_dec(x_15);
+x_23 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__3;
+x_24 = l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___spec__1(x_23, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_22);
+return x_24;
+}
+else
+{
+lean_object* x_25; lean_object* x_26; uint8_t x_27; 
+x_25 = lean_ctor_get(x_15, 1);
+lean_inc(x_25);
+lean_dec(x_15);
+x_26 = lean_ctor_get(x_17, 0);
+lean_inc(x_26);
+lean_dec(x_17);
+x_27 = !lean_is_exclusive(x_21);
+if (x_27 == 0)
+{
+lean_object* x_28; uint8_t x_29; lean_object* x_30; 
+x_28 = lean_ctor_get(x_21, 0);
+x_29 = lean_ctor_get_uint8(x_16, sizeof(void*)*10);
+lean_dec(x_16);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_26);
+x_30 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_realizeEqProof(x_1, x_26, x_28, x_29, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_25);
+if (lean_obj_tag(x_30) == 0)
+{
+lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_31 = lean_ctor_get(x_30, 0);
+lean_inc(x_31);
+x_32 = lean_ctor_get(x_30, 1);
+lean_inc(x_32);
+lean_dec(x_30);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+x_33 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans_x27(x_3, x_31, x_2, x_10, x_11, x_12, x_13, x_32);
+if (lean_obj_tag(x_33) == 0)
+{
+lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_34 = lean_ctor_get(x_33, 0);
+lean_inc(x_34);
+x_35 = lean_ctor_get(x_33, 1);
+lean_inc(x_35);
+lean_dec(x_33);
+lean_ctor_set(x_21, 0, x_34);
+x_36 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo(x_26, x_4, x_21, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_35);
+return x_36;
+}
+else
+{
+uint8_t x_37; 
+lean_free_object(x_21);
+lean_dec(x_26);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+x_37 = !lean_is_exclusive(x_33);
+if (x_37 == 0)
+{
+return x_33;
+}
+else
+{
+lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+x_38 = lean_ctor_get(x_33, 0);
+x_39 = lean_ctor_get(x_33, 1);
+lean_inc(x_39);
+lean_inc(x_38);
+lean_dec(x_33);
+x_40 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_40, 0, x_38);
+lean_ctor_set(x_40, 1, x_39);
+return x_40;
+}
+}
+}
+else
+{
+uint8_t x_41; 
+lean_free_object(x_21);
+lean_dec(x_26);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_3);
+x_41 = !lean_is_exclusive(x_30);
+if (x_41 == 0)
+{
+return x_30;
+}
+else
+{
+lean_object* x_42; lean_object* x_43; lean_object* x_44; 
+x_42 = lean_ctor_get(x_30, 0);
+x_43 = lean_ctor_get(x_30, 1);
+lean_inc(x_43);
+lean_inc(x_42);
+lean_dec(x_30);
+x_44 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_44, 0, x_42);
+lean_ctor_set(x_44, 1, x_43);
+return x_44;
+}
+}
+}
+else
+{
+lean_object* x_45; uint8_t x_46; lean_object* x_47; 
+x_45 = lean_ctor_get(x_21, 0);
+lean_inc(x_45);
+lean_dec(x_21);
+x_46 = lean_ctor_get_uint8(x_16, sizeof(void*)*10);
+lean_dec(x_16);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_26);
+x_47 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_realizeEqProof(x_1, x_26, x_45, x_46, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_25);
+if (lean_obj_tag(x_47) == 0)
+{
+lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_48 = lean_ctor_get(x_47, 0);
+lean_inc(x_48);
+x_49 = lean_ctor_get(x_47, 1);
+lean_inc(x_49);
+lean_dec(x_47);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+x_50 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkTrans_x27(x_3, x_48, x_2, x_10, x_11, x_12, x_13, x_49);
+if (lean_obj_tag(x_50) == 0)
+{
+lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_51 = lean_ctor_get(x_50, 0);
+lean_inc(x_51);
+x_52 = lean_ctor_get(x_50, 1);
+lean_inc(x_52);
+lean_dec(x_50);
+x_53 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_53, 0, x_51);
+x_54 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo(x_26, x_4, x_53, x_2, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_52);
+return x_54;
+}
+else
+{
+lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+lean_dec(x_26);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+x_55 = lean_ctor_get(x_50, 0);
+lean_inc(x_55);
+x_56 = lean_ctor_get(x_50, 1);
+lean_inc(x_56);
+if (lean_is_exclusive(x_50)) {
+ lean_ctor_release(x_50, 0);
+ lean_ctor_release(x_50, 1);
+ x_57 = x_50;
+} else {
+ lean_dec_ref(x_50);
+ x_57 = lean_box(0);
+}
+if (lean_is_scalar(x_57)) {
+ x_58 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_58 = x_57;
+}
+lean_ctor_set(x_58, 0, x_55);
+lean_ctor_set(x_58, 1, x_56);
+return x_58;
+}
+}
+else
+{
+lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; 
+lean_dec(x_26);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_3);
+x_59 = lean_ctor_get(x_47, 0);
+lean_inc(x_59);
+x_60 = lean_ctor_get(x_47, 1);
+lean_inc(x_60);
+if (lean_is_exclusive(x_47)) {
+ lean_ctor_release(x_47, 0);
+ lean_ctor_release(x_47, 1);
+ x_61 = x_47;
+} else {
+ lean_dec_ref(x_47);
+ x_61 = lean_box(0);
+}
+if (lean_is_scalar(x_61)) {
+ x_62 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_62 = x_61;
+}
+lean_ctor_set(x_62, 0, x_59);
+lean_ctor_set(x_62, 1, x_60);
+return x_62;
+}
+}
+}
+}
+}
+else
+{
+uint8_t x_63; 
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_3);
+lean_dec(x_1);
+x_63 = !lean_is_exclusive(x_15);
+if (x_63 == 0)
+{
+return x_15;
+}
+else
+{
+lean_object* x_64; lean_object* x_65; lean_object* x_66; 
+x_64 = lean_ctor_get(x_15, 0);
+x_65 = lean_ctor_get(x_15, 1);
+lean_inc(x_65);
+lean_inc(x_64);
+lean_dec(x_15);
+x_66 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_66, 0, x_64);
+lean_ctor_set(x_66, 1, x_65);
+return x_66;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t 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, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+uint8_t x_14; 
+x_14 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_2);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; 
+x_15 = lean_box(0);
+x_16 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1(x_1, x_4, x_3, x_2, x_15, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+return x_16;
+}
+else
+{
+lean_object* x_17; 
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_1);
+x_17 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_17, 0, x_3);
+lean_ctor_set(x_17, 1, x_13);
+return x_17;
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof_loop___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+lean_object* x_14; 
+x_14 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof_loop(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+uint8_t x_14; lean_object* x_15; 
+x_14 = lean_unbox(x_3);
+lean_dec(x_3);
+x_15 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1(x_1, x_2, x_14, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_4);
+return x_15;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+uint8_t x_13; lean_object* x_14; 
+x_13 = lean_unbox(x_3);
+lean_dec(x_3);
+x_14 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_1, x_2, x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+uint8_t x_15; lean_object* x_16; 
+x_15 = lean_unbox(x_2);
+lean_dec(x_2);
+x_16 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1(x_1, x_15, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_5);
+lean_dec(x_3);
+return x_16;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+uint8_t x_14; lean_object* x_15; 
+x_14 = lean_unbox(x_4);
+lean_dec(x_4);
+x_15 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom(x_1, x_2, x_3, x_14, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_2);
+return x_15;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_realizeEqProof___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+uint8_t x_15; uint8_t x_16; lean_object* x_17; 
+x_15 = lean_unbox(x_4);
+lean_dec(x_4);
+x_16 = lean_unbox(x_5);
+lean_dec(x_5);
+x_17 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_realizeEqProof(x_1, x_2, x_3, x_15, x_16, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+return x_17;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_withLocalDecl___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___spec__1___rarg___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+uint8_t x_15; uint8_t x_16; lean_object* x_17; 
+x_15 = lean_unbox(x_2);
+lean_dec(x_2);
+x_16 = lean_unbox(x_5);
+lean_dec(x_5);
+x_17 = l_Lean_Meta_withLocalDecl___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___spec__1___rarg(x_1, x_15, x_3, x_4, x_16, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+return x_17;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+uint8_t x_13; lean_object* x_14; 
+x_13 = lean_unbox(x_3);
+lean_dec(x_3);
+x_14 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof(x_1, x_2, x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+uint8_t x_13; lean_object* x_14; 
+x_13 = lean_unbox(x_3);
+lean_dec(x_3);
+x_14 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof(x_1, x_2, x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof_loop___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, lean_object* x_10, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof_loop(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_12;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+uint8_t x_13; lean_object* x_14; 
+x_13 = lean_unbox(x_3);
+lean_dec(x_3);
+x_14 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr(x_1, x_2, x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+uint8_t x_15; lean_object* x_16; 
+x_15 = lean_unbox(x_2);
+lean_dec(x_2);
+x_16 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1(x_1, x_15, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_16;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) {
+_start:
+{
+uint8_t x_14; lean_object* x_15; 
+x_14 = lean_unbox(x_4);
+lean_dec(x_4);
+x_15 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo(x_1, x_2, x_3, x_14, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13);
+lean_dec(x_2);
+return x_15;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__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:
+{
+lean_object* x_11; lean_object* x_12; uint8_t x_13; 
+x_11 = lean_ctor_get(x_8, 2);
+x_12 = l_Lean_isTracingEnabledForCore(x_1, x_11, x_10);
+x_13 = !lean_is_exclusive(x_12);
+if (x_13 == 0)
+{
+return x_12;
+}
+else
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_14 = lean_ctor_get(x_12, 0);
+x_15 = lean_ctor_get(x_12, 1);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_dec(x_12);
+x_16 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_16, 0, x_14);
+lean_ctor_set(x_16, 1, x_15);
+return x_16;
+}
+}
+}
+static double _init_l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__1() {
+_start:
+{
+lean_object* x_1; uint8_t x_2; double x_3; 
+x_1 = lean_unsigned_to_nat(0u);
+x_2 = 0;
+x_3 = l_Float_ofScientific(x_1, x_2, x_1);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("", 0, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = lean_box(0);
+x_2 = lean_array_mk(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2(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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; 
+x_12 = lean_ctor_get(x_9, 5);
+x_13 = l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(x_2, x_7, x_8, x_9, x_10, x_11);
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_ctor_get(x_13, 1);
+lean_inc(x_15);
+lean_dec(x_13);
+x_16 = lean_st_ref_take(x_10, x_15);
+x_17 = lean_ctor_get(x_16, 0);
+lean_inc(x_17);
+x_18 = lean_ctor_get(x_17, 3);
+lean_inc(x_18);
+x_19 = !lean_is_exclusive(x_16);
+if (x_19 == 0)
+{
+lean_object* x_20; lean_object* x_21; uint8_t x_22; 
+x_20 = lean_ctor_get(x_16, 1);
+x_21 = lean_ctor_get(x_16, 0);
+lean_dec(x_21);
+x_22 = !lean_is_exclusive(x_17);
+if (x_22 == 0)
+{
+lean_object* x_23; uint8_t x_24; 
+x_23 = lean_ctor_get(x_17, 3);
+lean_dec(x_23);
+x_24 = !lean_is_exclusive(x_18);
+if (x_24 == 0)
+{
+lean_object* x_25; double x_26; uint8_t x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; uint8_t x_34; 
+x_25 = lean_ctor_get(x_18, 0);
+x_26 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__1;
+x_27 = 0;
+x_28 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__2;
+x_29 = lean_alloc_ctor(0, 2, 17);
+lean_ctor_set(x_29, 0, x_1);
+lean_ctor_set(x_29, 1, x_28);
+lean_ctor_set_float(x_29, sizeof(void*)*2, x_26);
+lean_ctor_set_float(x_29, sizeof(void*)*2 + 8, x_26);
+lean_ctor_set_uint8(x_29, sizeof(void*)*2 + 16, x_27);
+x_30 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__3;
+x_31 = lean_alloc_ctor(9, 3, 0);
+lean_ctor_set(x_31, 0, x_29);
+lean_ctor_set(x_31, 1, x_14);
+lean_ctor_set(x_31, 2, x_30);
+lean_inc(x_12);
+lean_ctor_set(x_16, 1, x_31);
+lean_ctor_set(x_16, 0, x_12);
+x_32 = l_Lean_PersistentArray_push___rarg(x_25, x_16);
+lean_ctor_set(x_18, 0, x_32);
+x_33 = lean_st_ref_set(x_10, x_17, x_20);
+x_34 = !lean_is_exclusive(x_33);
+if (x_34 == 0)
+{
+lean_object* x_35; lean_object* x_36; 
+x_35 = lean_ctor_get(x_33, 0);
+lean_dec(x_35);
+x_36 = lean_box(0);
+lean_ctor_set(x_33, 0, x_36);
+return x_33;
+}
+else
+{
+lean_object* x_37; lean_object* x_38; lean_object* x_39; 
+x_37 = lean_ctor_get(x_33, 1);
+lean_inc(x_37);
+lean_dec(x_33);
+x_38 = lean_box(0);
+x_39 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_39, 0, x_38);
+lean_ctor_set(x_39, 1, x_37);
+return x_39;
+}
+}
+else
+{
+uint64_t x_40; lean_object* x_41; double x_42; uint8_t x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_40 = lean_ctor_get_uint64(x_18, sizeof(void*)*1);
+x_41 = lean_ctor_get(x_18, 0);
+lean_inc(x_41);
+lean_dec(x_18);
+x_42 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__1;
+x_43 = 0;
+x_44 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__2;
+x_45 = lean_alloc_ctor(0, 2, 17);
+lean_ctor_set(x_45, 0, x_1);
+lean_ctor_set(x_45, 1, x_44);
+lean_ctor_set_float(x_45, sizeof(void*)*2, x_42);
+lean_ctor_set_float(x_45, sizeof(void*)*2 + 8, x_42);
+lean_ctor_set_uint8(x_45, sizeof(void*)*2 + 16, x_43);
+x_46 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__3;
+x_47 = lean_alloc_ctor(9, 3, 0);
+lean_ctor_set(x_47, 0, x_45);
+lean_ctor_set(x_47, 1, x_14);
+lean_ctor_set(x_47, 2, x_46);
+lean_inc(x_12);
+lean_ctor_set(x_16, 1, x_47);
+lean_ctor_set(x_16, 0, x_12);
+x_48 = l_Lean_PersistentArray_push___rarg(x_41, x_16);
+x_49 = lean_alloc_ctor(0, 1, 8);
+lean_ctor_set(x_49, 0, x_48);
+lean_ctor_set_uint64(x_49, sizeof(void*)*1, x_40);
+lean_ctor_set(x_17, 3, x_49);
+x_50 = lean_st_ref_set(x_10, x_17, x_20);
+x_51 = lean_ctor_get(x_50, 1);
+lean_inc(x_51);
+if (lean_is_exclusive(x_50)) {
+ lean_ctor_release(x_50, 0);
+ lean_ctor_release(x_50, 1);
+ x_52 = x_50;
+} else {
+ lean_dec_ref(x_50);
+ x_52 = lean_box(0);
+}
+x_53 = lean_box(0);
+if (lean_is_scalar(x_52)) {
+ x_54 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_54 = x_52;
+}
+lean_ctor_set(x_54, 0, x_53);
+lean_ctor_set(x_54, 1, x_51);
+return x_54;
+}
+}
+else
+{
+lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; uint64_t x_62; lean_object* x_63; lean_object* x_64; double x_65; uint8_t x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; 
+x_55 = lean_ctor_get(x_17, 0);
+x_56 = lean_ctor_get(x_17, 1);
+x_57 = lean_ctor_get(x_17, 2);
+x_58 = lean_ctor_get(x_17, 4);
+x_59 = lean_ctor_get(x_17, 5);
+x_60 = lean_ctor_get(x_17, 6);
+x_61 = lean_ctor_get(x_17, 7);
+lean_inc(x_61);
+lean_inc(x_60);
+lean_inc(x_59);
+lean_inc(x_58);
+lean_inc(x_57);
+lean_inc(x_56);
+lean_inc(x_55);
+lean_dec(x_17);
+x_62 = lean_ctor_get_uint64(x_18, sizeof(void*)*1);
+x_63 = lean_ctor_get(x_18, 0);
+lean_inc(x_63);
+if (lean_is_exclusive(x_18)) {
+ lean_ctor_release(x_18, 0);
+ x_64 = x_18;
+} else {
+ lean_dec_ref(x_18);
+ x_64 = lean_box(0);
+}
+x_65 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__1;
+x_66 = 0;
+x_67 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__2;
+x_68 = lean_alloc_ctor(0, 2, 17);
+lean_ctor_set(x_68, 0, x_1);
+lean_ctor_set(x_68, 1, x_67);
+lean_ctor_set_float(x_68, sizeof(void*)*2, x_65);
+lean_ctor_set_float(x_68, sizeof(void*)*2 + 8, x_65);
+lean_ctor_set_uint8(x_68, sizeof(void*)*2 + 16, x_66);
+x_69 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__3;
+x_70 = lean_alloc_ctor(9, 3, 0);
+lean_ctor_set(x_70, 0, x_68);
+lean_ctor_set(x_70, 1, x_14);
+lean_ctor_set(x_70, 2, x_69);
+lean_inc(x_12);
+lean_ctor_set(x_16, 1, x_70);
+lean_ctor_set(x_16, 0, x_12);
+x_71 = l_Lean_PersistentArray_push___rarg(x_63, x_16);
+if (lean_is_scalar(x_64)) {
+ x_72 = lean_alloc_ctor(0, 1, 8);
+} else {
+ x_72 = x_64;
+}
+lean_ctor_set(x_72, 0, x_71);
+lean_ctor_set_uint64(x_72, sizeof(void*)*1, x_62);
+x_73 = lean_alloc_ctor(0, 8, 0);
+lean_ctor_set(x_73, 0, x_55);
+lean_ctor_set(x_73, 1, x_56);
+lean_ctor_set(x_73, 2, x_57);
+lean_ctor_set(x_73, 3, x_72);
+lean_ctor_set(x_73, 4, x_58);
+lean_ctor_set(x_73, 5, x_59);
+lean_ctor_set(x_73, 6, x_60);
+lean_ctor_set(x_73, 7, x_61);
+x_74 = lean_st_ref_set(x_10, x_73, x_20);
+x_75 = lean_ctor_get(x_74, 1);
+lean_inc(x_75);
+if (lean_is_exclusive(x_74)) {
+ lean_ctor_release(x_74, 0);
+ lean_ctor_release(x_74, 1);
+ x_76 = x_74;
+} else {
+ lean_dec_ref(x_74);
+ x_76 = lean_box(0);
+}
+x_77 = lean_box(0);
+if (lean_is_scalar(x_76)) {
+ x_78 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_78 = x_76;
+}
+lean_ctor_set(x_78, 0, x_77);
+lean_ctor_set(x_78, 1, x_75);
+return x_78;
+}
+}
+else
+{
+lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; uint64_t x_88; lean_object* x_89; lean_object* x_90; double x_91; uint8_t x_92; lean_object* x_93; lean_object* x_94; 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_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; 
+x_79 = lean_ctor_get(x_16, 1);
+lean_inc(x_79);
+lean_dec(x_16);
+x_80 = lean_ctor_get(x_17, 0);
+lean_inc(x_80);
+x_81 = lean_ctor_get(x_17, 1);
+lean_inc(x_81);
+x_82 = lean_ctor_get(x_17, 2);
+lean_inc(x_82);
+x_83 = lean_ctor_get(x_17, 4);
+lean_inc(x_83);
+x_84 = lean_ctor_get(x_17, 5);
+lean_inc(x_84);
+x_85 = lean_ctor_get(x_17, 6);
+lean_inc(x_85);
+x_86 = lean_ctor_get(x_17, 7);
+lean_inc(x_86);
+if (lean_is_exclusive(x_17)) {
+ lean_ctor_release(x_17, 0);
+ lean_ctor_release(x_17, 1);
+ lean_ctor_release(x_17, 2);
+ lean_ctor_release(x_17, 3);
+ lean_ctor_release(x_17, 4);
+ lean_ctor_release(x_17, 5);
+ lean_ctor_release(x_17, 6);
+ lean_ctor_release(x_17, 7);
+ x_87 = x_17;
+} else {
+ lean_dec_ref(x_17);
+ x_87 = lean_box(0);
+}
+x_88 = lean_ctor_get_uint64(x_18, sizeof(void*)*1);
+x_89 = lean_ctor_get(x_18, 0);
+lean_inc(x_89);
+if (lean_is_exclusive(x_18)) {
+ lean_ctor_release(x_18, 0);
+ x_90 = x_18;
+} else {
+ lean_dec_ref(x_18);
+ x_90 = lean_box(0);
+}
+x_91 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__1;
+x_92 = 0;
+x_93 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__2;
+x_94 = lean_alloc_ctor(0, 2, 17);
+lean_ctor_set(x_94, 0, x_1);
+lean_ctor_set(x_94, 1, x_93);
+lean_ctor_set_float(x_94, sizeof(void*)*2, x_91);
+lean_ctor_set_float(x_94, sizeof(void*)*2 + 8, x_91);
+lean_ctor_set_uint8(x_94, sizeof(void*)*2 + 16, x_92);
+x_95 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__3;
+x_96 = lean_alloc_ctor(9, 3, 0);
+lean_ctor_set(x_96, 0, x_94);
+lean_ctor_set(x_96, 1, x_14);
+lean_ctor_set(x_96, 2, x_95);
+lean_inc(x_12);
+x_97 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_97, 0, x_12);
+lean_ctor_set(x_97, 1, x_96);
+x_98 = l_Lean_PersistentArray_push___rarg(x_89, x_97);
+if (lean_is_scalar(x_90)) {
+ x_99 = lean_alloc_ctor(0, 1, 8);
+} else {
+ x_99 = x_90;
+}
+lean_ctor_set(x_99, 0, x_98);
+lean_ctor_set_uint64(x_99, sizeof(void*)*1, x_88);
+if (lean_is_scalar(x_87)) {
+ x_100 = lean_alloc_ctor(0, 8, 0);
+} else {
+ x_100 = x_87;
+}
+lean_ctor_set(x_100, 0, x_80);
+lean_ctor_set(x_100, 1, x_81);
+lean_ctor_set(x_100, 2, x_82);
+lean_ctor_set(x_100, 3, x_99);
+lean_ctor_set(x_100, 4, x_83);
+lean_ctor_set(x_100, 5, x_84);
+lean_ctor_set(x_100, 6, x_85);
+lean_ctor_set(x_100, 7, x_86);
+x_101 = lean_st_ref_set(x_10, x_100, x_79);
+x_102 = lean_ctor_get(x_101, 1);
+lean_inc(x_102);
+if (lean_is_exclusive(x_101)) {
+ lean_ctor_release(x_101, 0);
+ lean_ctor_release(x_101, 1);
+ x_103 = x_101;
+} else {
+ lean_dec_ref(x_101);
+ x_103 = lean_box(0);
+}
+x_104 = lean_box(0);
+if (lean_is_scalar(x_103)) {
+ x_105 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_105 = x_103;
+}
+lean_ctor_set(x_105, 0, x_104);
+lean_ctor_set(x_105, 1, x_102);
+return x_105;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl_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, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+uint8_t x_13; lean_object* x_14; 
+x_13 = 0;
+x_14 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_1, x_2, x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___lambda__2(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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+uint8_t x_13; lean_object* x_14; 
+x_13 = 1;
+x_14 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_1, x_2, x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+return x_14;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___lambda__3(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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+uint8_t x_13; lean_object* x_14; 
+x_13 = 1;
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+x_14 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_1, x_2, x_13, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_14) == 0)
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; 
+x_15 = lean_ctor_get(x_14, 0);
+lean_inc(x_15);
+x_16 = lean_ctor_get(x_14, 1);
+lean_inc(x_16);
+lean_dec(x_14);
+x_17 = l_Lean_Meta_mkEqOfHEq(x_15, x_8, x_9, x_10, x_11, x_16);
+return x_17;
+}
+else
+{
+uint8_t x_18; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+x_18 = !lean_is_exclusive(x_14);
+if (x_18 == 0)
+{
+return x_14;
+}
+else
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_19 = lean_ctor_get(x_14, 0);
+x_20 = lean_ctor_get(x_14, 1);
+lean_inc(x_20);
+lean_inc(x_19);
+lean_dec(x_14);
+x_21 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_21, 0, x_19);
+lean_ctor_set(x_21, 1, x_20);
+return x_21;
+}
+}
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("grind", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("proof", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__1;
+x_2 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__2;
+x_3 = l_Lean_Name_mkStr2(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__2;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__5() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked(" = ", 3, 3);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__6() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__5;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__7() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked(" ≡ ", 5, 3);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__8() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__7;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go(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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+lean_inc(x_1);
+x_12 = l_Lean_Meta_Grind_getRootENode(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+if (lean_obj_tag(x_12) == 0)
+{
+lean_object* x_13; uint8_t x_14; 
+x_13 = lean_ctor_get(x_12, 0);
+lean_inc(x_13);
+x_14 = lean_ctor_get_uint8(x_13, sizeof(void*)*10 + 4);
+lean_dec(x_13);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; 
+x_15 = lean_ctor_get(x_12, 1);
+lean_inc(x_15);
+lean_dec(x_12);
+x_16 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__3;
+x_17 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__1(x_16, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_15);
+x_18 = lean_ctor_get(x_17, 0);
+lean_inc(x_18);
+x_19 = lean_unbox(x_18);
+lean_dec(x_18);
+if (x_19 == 0)
 {
-lean_object* x_23; lean_object* x_24; uint8_t x_25; lean_object* x_26; 
-x_23 = lean_ctor_get(x_22, 0);
-lean_inc(x_23);
-x_24 = lean_ctor_get(x_22, 1);
-lean_inc(x_24);
-lean_dec(x_22);
-x_25 = 0;
-x_26 = l_Lean_Meta_mkSorry(x_23, x_25, x_7, x_8, x_9, x_10, x_24);
-return x_26;
+lean_object* x_20; uint8_t x_21; lean_object* x_22; 
+x_20 = lean_ctor_get(x_17, 1);
+lean_inc(x_20);
+lean_dec(x_17);
+x_21 = 0;
+x_22 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_1, x_2, x_21, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_20);
+return x_22;
 }
 else
 {
-uint8_t x_27; 
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-x_27 = !lean_is_exclusive(x_22);
-if (x_27 == 0)
+uint8_t x_23; 
+x_23 = !lean_is_exclusive(x_17);
+if (x_23 == 0)
 {
-return x_22;
+lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; uint8_t x_35; lean_object* x_36; 
+x_24 = lean_ctor_get(x_17, 1);
+x_25 = lean_ctor_get(x_17, 0);
+lean_dec(x_25);
+lean_inc(x_1);
+x_26 = l_Lean_MessageData_ofExpr(x_1);
+x_27 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__4;
+lean_ctor_set_tag(x_17, 7);
+lean_ctor_set(x_17, 1, x_26);
+lean_ctor_set(x_17, 0, x_27);
+x_28 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__6;
+x_29 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_29, 0, x_17);
+lean_ctor_set(x_29, 1, x_28);
+lean_inc(x_2);
+x_30 = l_Lean_MessageData_ofExpr(x_2);
+x_31 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_31, 0, x_29);
+lean_ctor_set(x_31, 1, x_30);
+x_32 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_32, 0, x_31);
+lean_ctor_set(x_32, 1, x_27);
+x_33 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2(x_16, x_32, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_24);
+x_34 = lean_ctor_get(x_33, 1);
+lean_inc(x_34);
+lean_dec(x_33);
+x_35 = 0;
+x_36 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_1, x_2, x_35, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_34);
+return x_36;
 }
 else
 {
-lean_object* x_28; lean_object* x_29; lean_object* x_30; 
-x_28 = lean_ctor_get(x_22, 0);
-x_29 = lean_ctor_get(x_22, 1);
-lean_inc(x_29);
-lean_inc(x_28);
-lean_dec(x_22);
-x_30 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_30, 0, x_28);
-lean_ctor_set(x_30, 1, x_29);
-return x_30;
+lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; uint8_t x_48; lean_object* x_49; 
+x_37 = lean_ctor_get(x_17, 1);
+lean_inc(x_37);
+lean_dec(x_17);
+lean_inc(x_1);
+x_38 = l_Lean_MessageData_ofExpr(x_1);
+x_39 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__4;
+x_40 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_40, 0, x_39);
+lean_ctor_set(x_40, 1, x_38);
+x_41 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__6;
+x_42 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_42, 0, x_40);
+lean_ctor_set(x_42, 1, x_41);
+lean_inc(x_2);
+x_43 = l_Lean_MessageData_ofExpr(x_2);
+x_44 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_44, 0, x_42);
+lean_ctor_set(x_44, 1, x_43);
+x_45 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_45, 0, x_44);
+lean_ctor_set(x_45, 1, x_39);
+x_46 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2(x_16, x_45, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_37);
+x_47 = lean_ctor_get(x_46, 1);
+lean_inc(x_47);
+lean_dec(x_46);
+x_48 = 0;
+x_49 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_1, x_2, x_48, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_47);
+return x_49;
 }
 }
 }
 else
 {
-lean_object* x_31; lean_object* x_32; 
-x_31 = lean_ctor_get(x_18, 1);
-lean_inc(x_31);
-lean_dec(x_18);
+lean_object* x_50; lean_object* x_51; 
+x_50 = lean_ctor_get(x_12, 1);
+lean_inc(x_50);
+lean_dec(x_12);
 lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
-x_32 = l_Lean_Meta_mkEq(x_1, x_2, x_7, x_8, x_9, x_10, x_31);
-if (lean_obj_tag(x_32) == 0)
+lean_inc(x_2);
+lean_inc(x_1);
+x_51 = l_Lean_Meta_Grind_hasSameType(x_1, x_2, x_7, x_8, x_9, x_10, x_50);
+if (lean_obj_tag(x_51) == 0)
 {
-lean_object* x_33; lean_object* x_34; uint8_t x_35; lean_object* x_36; 
-x_33 = lean_ctor_get(x_32, 0);
-lean_inc(x_33);
-x_34 = lean_ctor_get(x_32, 1);
-lean_inc(x_34);
-lean_dec(x_32);
-x_35 = 0;
-x_36 = l_Lean_Meta_mkSorry(x_33, x_35, x_7, x_8, x_9, x_10, x_34);
-return x_36;
+lean_object* x_52; uint8_t x_53; 
+x_52 = lean_ctor_get(x_51, 0);
+lean_inc(x_52);
+x_53 = lean_unbox(x_52);
+lean_dec(x_52);
+if (x_53 == 0)
+{
+lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; uint8_t x_58; 
+x_54 = lean_ctor_get(x_51, 1);
+lean_inc(x_54);
+lean_dec(x_51);
+x_55 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__3;
+x_56 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__1(x_55, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_54);
+x_57 = lean_ctor_get(x_56, 0);
+lean_inc(x_57);
+x_58 = lean_unbox(x_57);
+lean_dec(x_57);
+if (x_58 == 0)
+{
+lean_object* x_59; uint8_t x_60; lean_object* x_61; 
+x_59 = lean_ctor_get(x_56, 1);
+lean_inc(x_59);
+lean_dec(x_56);
+x_60 = 1;
+x_61 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_1, x_2, x_60, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_59);
+return x_61;
 }
 else
 {
-uint8_t x_37; 
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-x_37 = !lean_is_exclusive(x_32);
-if (x_37 == 0)
+uint8_t x_62; 
+x_62 = !lean_is_exclusive(x_56);
+if (x_62 == 0)
 {
-return x_32;
+lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; uint8_t x_74; lean_object* x_75; 
+x_63 = lean_ctor_get(x_56, 1);
+x_64 = lean_ctor_get(x_56, 0);
+lean_dec(x_64);
+lean_inc(x_1);
+x_65 = l_Lean_MessageData_ofExpr(x_1);
+x_66 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__4;
+lean_ctor_set_tag(x_56, 7);
+lean_ctor_set(x_56, 1, x_65);
+lean_ctor_set(x_56, 0, x_66);
+x_67 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__8;
+x_68 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_68, 0, x_56);
+lean_ctor_set(x_68, 1, x_67);
+lean_inc(x_2);
+x_69 = l_Lean_MessageData_ofExpr(x_2);
+x_70 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_70, 0, x_68);
+lean_ctor_set(x_70, 1, x_69);
+x_71 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_71, 0, x_70);
+lean_ctor_set(x_71, 1, x_66);
+x_72 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2(x_55, x_71, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_63);
+x_73 = lean_ctor_get(x_72, 1);
+lean_inc(x_73);
+lean_dec(x_72);
+x_74 = 1;
+x_75 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_1, x_2, x_74, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_73);
+return x_75;
 }
 else
 {
-lean_object* x_38; lean_object* x_39; lean_object* x_40; 
-x_38 = lean_ctor_get(x_32, 0);
-x_39 = lean_ctor_get(x_32, 1);
-lean_inc(x_39);
-lean_inc(x_38);
-lean_dec(x_32);
-x_40 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_40, 0, x_38);
-lean_ctor_set(x_40, 1, x_39);
-return x_40;
+lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; uint8_t x_87; lean_object* x_88; 
+x_76 = lean_ctor_get(x_56, 1);
+lean_inc(x_76);
+lean_dec(x_56);
+lean_inc(x_1);
+x_77 = l_Lean_MessageData_ofExpr(x_1);
+x_78 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__4;
+x_79 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_79, 0, x_78);
+lean_ctor_set(x_79, 1, x_77);
+x_80 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__8;
+x_81 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_81, 0, x_79);
+lean_ctor_set(x_81, 1, x_80);
+lean_inc(x_2);
+x_82 = l_Lean_MessageData_ofExpr(x_2);
+x_83 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_83, 0, x_81);
+lean_ctor_set(x_83, 1, x_82);
+x_84 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_84, 0, x_83);
+lean_ctor_set(x_84, 1, x_78);
+x_85 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2(x_55, x_84, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_76);
+x_86 = lean_ctor_get(x_85, 1);
+lean_inc(x_86);
+lean_dec(x_85);
+x_87 = 1;
+x_88 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_1, x_2, x_87, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_86);
+return x_88;
 }
 }
 }
+else
+{
+lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; uint8_t x_93; 
+x_89 = lean_ctor_get(x_51, 1);
+lean_inc(x_89);
+lean_dec(x_51);
+x_90 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__3;
+x_91 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__1(x_90, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_89);
+x_92 = lean_ctor_get(x_91, 0);
+lean_inc(x_92);
+x_93 = lean_unbox(x_92);
+lean_dec(x_92);
+if (x_93 == 0)
+{
+lean_object* x_94; lean_object* x_95; lean_object* x_96; 
+x_94 = lean_ctor_get(x_91, 1);
+lean_inc(x_94);
+lean_dec(x_91);
+x_95 = lean_box(0);
+x_96 = l_Lean_Meta_Grind_mkEqProofImpl_go___lambda__3(x_1, x_2, x_95, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_94);
+return x_96;
 }
 else
 {
-uint8_t x_41; 
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_2);
-lean_dec(x_1);
-x_41 = !lean_is_exclusive(x_18);
-if (x_41 == 0)
+uint8_t x_97; 
+x_97 = !lean_is_exclusive(x_91);
+if (x_97 == 0)
 {
-return x_18;
+lean_object* x_98; lean_object* x_99; lean_object* x_100; lean_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; lean_object* x_106; lean_object* x_107; lean_object* x_108; lean_object* x_109; lean_object* x_110; 
+x_98 = lean_ctor_get(x_91, 1);
+x_99 = lean_ctor_get(x_91, 0);
+lean_dec(x_99);
+lean_inc(x_1);
+x_100 = l_Lean_MessageData_ofExpr(x_1);
+x_101 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__4;
+lean_ctor_set_tag(x_91, 7);
+lean_ctor_set(x_91, 1, x_100);
+lean_ctor_set(x_91, 0, x_101);
+x_102 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__6;
+x_103 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_103, 0, x_91);
+lean_ctor_set(x_103, 1, x_102);
+lean_inc(x_2);
+x_104 = l_Lean_MessageData_ofExpr(x_2);
+x_105 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_105, 0, x_103);
+lean_ctor_set(x_105, 1, x_104);
+x_106 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_106, 0, x_105);
+lean_ctor_set(x_106, 1, x_101);
+x_107 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2(x_90, x_106, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_98);
+x_108 = lean_ctor_get(x_107, 0);
+lean_inc(x_108);
+x_109 = lean_ctor_get(x_107, 1);
+lean_inc(x_109);
+lean_dec(x_107);
+x_110 = l_Lean_Meta_Grind_mkEqProofImpl_go___lambda__3(x_1, x_2, x_108, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_109);
+lean_dec(x_108);
+return x_110;
 }
 else
 {
-lean_object* x_42; lean_object* x_43; lean_object* x_44; 
-x_42 = lean_ctor_get(x_18, 0);
-x_43 = lean_ctor_get(x_18, 1);
-lean_inc(x_43);
-lean_inc(x_42);
-lean_dec(x_18);
-x_44 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_44, 0, x_42);
-lean_ctor_set(x_44, 1, x_43);
-return x_44;
+lean_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; lean_object* x_115; lean_object* x_116; 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_object* x_123; 
+x_111 = lean_ctor_get(x_91, 1);
+lean_inc(x_111);
+lean_dec(x_91);
+lean_inc(x_1);
+x_112 = l_Lean_MessageData_ofExpr(x_1);
+x_113 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__4;
+x_114 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_114, 0, x_113);
+lean_ctor_set(x_114, 1, x_112);
+x_115 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__6;
+x_116 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_116, 0, x_114);
+lean_ctor_set(x_116, 1, x_115);
+lean_inc(x_2);
+x_117 = l_Lean_MessageData_ofExpr(x_2);
+x_118 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_118, 0, x_116);
+lean_ctor_set(x_118, 1, x_117);
+x_119 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_119, 0, x_118);
+lean_ctor_set(x_119, 1, x_113);
+x_120 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2(x_90, x_119, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_111);
+x_121 = lean_ctor_get(x_120, 0);
+lean_inc(x_121);
+x_122 = lean_ctor_get(x_120, 1);
+lean_inc(x_122);
+lean_dec(x_120);
+x_123 = l_Lean_Meta_Grind_mkEqProofImpl_go___lambda__3(x_1, x_2, x_121, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_122);
+lean_dec(x_121);
+return x_123;
+}
 }
 }
 }
 else
 {
-uint8_t x_45; 
-lean_dec(x_13);
+uint8_t x_124; 
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_45 = !lean_is_exclusive(x_15);
-if (x_45 == 0)
+x_124 = !lean_is_exclusive(x_51);
+if (x_124 == 0)
 {
-return x_15;
+return x_51;
 }
 else
 {
-lean_object* x_46; lean_object* x_47; lean_object* x_48; 
-x_46 = lean_ctor_get(x_15, 0);
-x_47 = lean_ctor_get(x_15, 1);
-lean_inc(x_47);
-lean_inc(x_46);
-lean_dec(x_15);
-x_48 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_48, 0, x_46);
-lean_ctor_set(x_48, 1, x_47);
-return x_48;
+lean_object* x_125; lean_object* x_126; lean_object* x_127; 
+x_125 = lean_ctor_get(x_51, 0);
+x_126 = lean_ctor_get(x_51, 1);
+lean_inc(x_126);
+lean_inc(x_125);
+lean_dec(x_51);
+x_127 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_127, 0, x_125);
+lean_ctor_set(x_127, 1, x_126);
+return x_127;
+}
 }
 }
 }
 else
 {
-uint8_t x_49; 
+uint8_t x_128; 
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_12);
-if (x_49 == 0)
+x_128 = !lean_is_exclusive(x_12);
+if (x_128 == 0)
 {
 return x_12;
 }
 else
 {
-lean_object* x_50; lean_object* x_51; lean_object* x_52; 
-x_50 = lean_ctor_get(x_12, 0);
-x_51 = lean_ctor_get(x_12, 1);
-lean_inc(x_51);
-lean_inc(x_50);
+lean_object* x_129; lean_object* x_130; lean_object* x_131; 
+x_129 = lean_ctor_get(x_12, 0);
+x_130 = lean_ctor_get(x_12, 1);
+lean_inc(x_130);
+lean_inc(x_129);
 lean_dec(x_12);
-x_52 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_52, 0, x_50);
-lean_ctor_set(x_52, 1, x_51);
-return x_52;
+x_131 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_131, 0, x_129);
+lean_ctor_set(x_131, 1, x_130);
+return x_131;
+}
 }
 }
 }
+LEAN_EXPORT lean_object* l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__1___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_11;
+}
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProof___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, lean_object* x_10, lean_object* x_11) {
+LEAN_EXPORT lean_object* l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___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, lean_object* x_10, lean_object* x_11) {
 _start:
 {
 lean_object* x_12; 
-x_12 = l_Lean_Meta_Grind_mkEqProof(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+x_12 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
 lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
@@ -272,56 +10147,223 @@ lean_dec(x_3);
 return x_12;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqTrueProof(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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
 _start:
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; 
-x_11 = l_Lean_Meta_Grind_getTrueExpr___rarg(x_5, x_6, x_7, x_8, x_9, x_10);
-x_12 = lean_ctor_get(x_11, 0);
-lean_inc(x_12);
-x_13 = lean_ctor_get(x_11, 1);
-lean_inc(x_13);
-lean_dec(x_11);
-x_14 = l_Lean_Meta_Grind_mkEqProof(x_1, x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
-return x_14;
+lean_object* x_13; 
+x_13 = l_Lean_Meta_Grind_mkEqProofImpl_go___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_3);
+return x_13;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqTrueProof___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, lean_object* x_10) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___lambda__2___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
 _start:
 {
-lean_object* x_11; 
-x_11 = l_Lean_Meta_Grind_mkEqTrueProof(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_object* x_13; 
+x_13 = l_Lean_Meta_Grind_mkEqProofImpl_go___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_3);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl_go___lambda__3___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+x_13 = l_Lean_Meta_Grind_mkEqProofImpl_go___lambda__3(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_3);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl___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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_12, 0, x_1);
+lean_ctor_set(x_12, 1, x_11);
+return x_12;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_mkEqProofImpl___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("detail", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_mkEqProofImpl___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__1;
+x_2 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__2;
+x_3 = l_Lean_Meta_Grind_mkEqProofImpl___closed__1;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
+}
+}
+LEAN_EXPORT lean_object* lean_grind_mk_eq_proof(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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_12 = l_Lean_Meta_Grind_mkEqProofImpl_go(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+if (lean_obj_tag(x_12) == 0)
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; 
+x_13 = lean_ctor_get(x_12, 0);
+lean_inc(x_13);
+x_14 = lean_ctor_get(x_12, 1);
+lean_inc(x_14);
+lean_dec(x_12);
+x_15 = l_Lean_Meta_Grind_mkEqProofImpl___closed__2;
+x_16 = l_Lean_isTracingEnabledFor___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__1(x_15, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_14);
+x_17 = lean_ctor_get(x_16, 0);
+lean_inc(x_17);
+x_18 = lean_unbox(x_17);
+lean_dec(x_17);
+if (x_18 == 0)
+{
+uint8_t x_19; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
-lean_dec(x_2);
-return x_11;
+x_19 = !lean_is_exclusive(x_16);
+if (x_19 == 0)
+{
+lean_object* x_20; 
+x_20 = lean_ctor_get(x_16, 0);
+lean_dec(x_20);
+lean_ctor_set(x_16, 0, x_13);
+return x_16;
 }
+else
+{
+lean_object* x_21; lean_object* x_22; 
+x_21 = lean_ctor_get(x_16, 1);
+lean_inc(x_21);
+lean_dec(x_16);
+x_22 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_22, 0, x_13);
+lean_ctor_set(x_22, 1, x_21);
+return x_22;
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqFalseProof(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:
+}
+else
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; 
-x_11 = l_Lean_Meta_Grind_getFalseExpr___rarg(x_5, x_6, x_7, x_8, x_9, x_10);
-x_12 = lean_ctor_get(x_11, 0);
-lean_inc(x_12);
-x_13 = lean_ctor_get(x_11, 1);
+lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; uint8_t x_29; 
+x_23 = lean_ctor_get(x_16, 1);
+lean_inc(x_23);
+lean_dec(x_16);
 lean_inc(x_13);
-lean_dec(x_11);
-x_14 = l_Lean_Meta_Grind_mkEqProof(x_1, x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
-return x_14;
+x_24 = l_Lean_MessageData_ofExpr(x_13);
+x_25 = l_Lean_Meta_Grind_mkEqProofImpl_go___closed__4;
+x_26 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_26, 0, x_25);
+lean_ctor_set(x_26, 1, x_24);
+x_27 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_27, 0, x_26);
+lean_ctor_set(x_27, 1, x_25);
+x_28 = l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2(x_15, x_27, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_23);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_29 = !lean_is_exclusive(x_28);
+if (x_29 == 0)
+{
+lean_object* x_30; 
+x_30 = lean_ctor_get(x_28, 0);
+lean_dec(x_30);
+lean_ctor_set(x_28, 0, x_13);
+return x_28;
+}
+else
+{
+lean_object* x_31; lean_object* x_32; 
+x_31 = lean_ctor_get(x_28, 1);
+lean_inc(x_31);
+lean_dec(x_28);
+x_32 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_32, 0, x_13);
+lean_ctor_set(x_32, 1, x_31);
+return x_32;
+}
+}
+}
+else
+{
+uint8_t x_33; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_33 = !lean_is_exclusive(x_12);
+if (x_33 == 0)
+{
+return x_12;
+}
+else
+{
+lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_34 = lean_ctor_get(x_12, 0);
+x_35 = lean_ctor_get(x_12, 1);
+lean_inc(x_35);
+lean_inc(x_34);
+lean_dec(x_12);
+x_36 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_36, 0, x_34);
+lean_ctor_set(x_36, 1, x_35);
+return x_36;
+}
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqFalseProof___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, lean_object* x_10) {
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProofImpl___lambda__1___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, lean_object* x_10, lean_object* x_11) {
 _start:
 {
-lean_object* x_11; 
-x_11 = l_Lean_Meta_Grind_mkEqFalseProof(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_object* x_12; 
+x_12 = l_Lean_Meta_Grind_mkEqProofImpl___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-return x_11;
+return x_12;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkHEqProof(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, lean_object* x_11) {
+_start:
+{
+uint8_t x_12; lean_object* x_13; 
+x_12 = 1;
+x_13 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_1, x_2, x_12, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+return x_13;
 }
 }
 lean_object* initialize_Lean_Meta_Sorry(uint8_t builtin, lean_object*);
@@ -337,6 +10379,127 @@ lean_dec_ref(res);
 res = initialize_Lean_Meta_Tactic_Grind_Types(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_isEqProof___closed__2);
+l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__1 = _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__1();
+lean_mark_persistent(l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__1);
+l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__2 = _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__2();
+lean_mark_persistent(l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__2);
+l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__3 = _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__3();
+lean_mark_persistent(l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__3);
+l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__4 = _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__4();
+lean_mark_persistent(l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__4);
+l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__5 = _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__5();
+lean_mark_persistent(l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__5___closed__5);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__1);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__2 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__2();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__2);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__3 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__3();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__3);
+l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__4 = _init_l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__4();
+lean_mark_persistent(l_Lean_Loop_forIn_loop___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__7___lambda__1___closed__4);
+l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__9___closed__1 = _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__9___closed__1();
+lean_mark_persistent(l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___spec__9___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___lambda__1___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___lambda__1___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___lambda__1___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_findCommon___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__2);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__3);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__4();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__4);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__5();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__5);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__6();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore___lambda__1___closed__6);
+l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___spec__1___closed__1 = _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___spec__1___closed__1();
+lean_mark_persistent(l_panic___at___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___spec__1___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__2);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofFrom___lambda__1___closed__3);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___lambda__1___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___lambda__1___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___lambda__1___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__2);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__3);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__4();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__4);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__5();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__5);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__6();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__6);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__7 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__7();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__7);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__8 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__8();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__8);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__9 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__9();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__9);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__10 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__10();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__10);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__11 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__11();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__11);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__12 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__12();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__12);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__13 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__13();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrProof___closed__13);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__2);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__3);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__4();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkCongrDefaultProof___closed__4);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__2);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkNestedProofCongr___closed__3);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__1);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__2);
+l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkProofTo___lambda__1___closed__3);
+l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__1 = _init_l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__1();
+l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__2 = _init_l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__2();
+lean_mark_persistent(l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__2);
+l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__3 = _init_l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__3();
+lean_mark_persistent(l_Lean_addTrace___at_Lean_Meta_Grind_mkEqProofImpl_go___spec__2___closed__3);
+l_Lean_Meta_Grind_mkEqProofImpl_go___closed__1 = _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_mkEqProofImpl_go___closed__1);
+l_Lean_Meta_Grind_mkEqProofImpl_go___closed__2 = _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_mkEqProofImpl_go___closed__2);
+l_Lean_Meta_Grind_mkEqProofImpl_go___closed__3 = _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_mkEqProofImpl_go___closed__3);
+l_Lean_Meta_Grind_mkEqProofImpl_go___closed__4 = _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_mkEqProofImpl_go___closed__4);
+l_Lean_Meta_Grind_mkEqProofImpl_go___closed__5 = _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_mkEqProofImpl_go___closed__5);
+l_Lean_Meta_Grind_mkEqProofImpl_go___closed__6 = _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__6();
+lean_mark_persistent(l_Lean_Meta_Grind_mkEqProofImpl_go___closed__6);
+l_Lean_Meta_Grind_mkEqProofImpl_go___closed__7 = _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__7();
+lean_mark_persistent(l_Lean_Meta_Grind_mkEqProofImpl_go___closed__7);
+l_Lean_Meta_Grind_mkEqProofImpl_go___closed__8 = _init_l_Lean_Meta_Grind_mkEqProofImpl_go___closed__8();
+lean_mark_persistent(l_Lean_Meta_Grind_mkEqProofImpl_go___closed__8);
+l_Lean_Meta_Grind_mkEqProofImpl___closed__1 = _init_l_Lean_Meta_Grind_mkEqProofImpl___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_mkEqProofImpl___closed__1);
+l_Lean_Meta_Grind_mkEqProofImpl___closed__2 = _init_l_Lean_Meta_Grind_mkEqProofImpl___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_mkEqProofImpl___closed__2);
 return lean_io_result_mk_ok(lean_box(0));
 }
 #ifdef __cplusplus
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Grind/Propagate.c b/stage0/stdlib/Lean/Meta/Tactic/Grind/Propagate.c
index 7a402722b8d0..d4c75350fc17 100644
--- a/stage0/stdlib/Lean/Meta/Tactic/Grind/Propagate.c
+++ b/stage0/stdlib/Lean/Meta/Tactic/Grind/Propagate.c
@@ -1,6 +1,6 @@
 // Lean compiler output
 // Module: Lean.Meta.Tactic.Grind.Propagate
-// Imports: Init.Grind.Lemmas Lean.Meta.Tactic.Grind.Proof
+// Imports: Init.Grind Lean.Meta.Tactic.Grind.Proof Lean.Meta.Tactic.Grind.PropagatorAttr
 #include <lean/lean.h>
 #if defined(__clang__)
 #pragma clang diagnostic ignored "-Wunused-parameter"
@@ -13,118 +13,147 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
 lean_object* l_Lean_Expr_const___override(lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__3;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__5;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateConectivesUp___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_Meta_Grind_propagateConectivesUp___closed__5;
-lean_object* l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__2;
+static lean_object* l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__7;
+static lean_object* l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__1;
+static lean_object* l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__3;
+static lean_object* l___regBuiltin_Lean_Meta_Grind_propagateAndUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_383____closed__1;
+static lean_object* l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__11;
+static lean_object* l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__4;
+static lean_object* l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__2;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateAndUp___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_object*);
+static lean_object* l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__1;
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__5;
+static lean_object* l___regBuiltin_Lean_Meta_Grind_propagateNotUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1426____closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateAndUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_383_(lean_object*);
+static lean_object* l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__10;
+lean_object* l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__5;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateEqUp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__1;
-static lean_object* l_Lean_Meta_Grind_propagateConectivesUp___closed__8;
+static lean_object* l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2058_(lean_object*);
+static lean_object* l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__5;
+static lean_object* l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__2;
+static lean_object* l_Lean_Meta_Grind_propagateNotUp___closed__2;
+static lean_object* l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__6;
 lean_object* l_Lean_mkAppB(lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_propagateConectivesUp___closed__1;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___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___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__4;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__10;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__2;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateNotUp___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint8_t l_Lean_Expr_isApp(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateHEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2806_(lean_object*);
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__14;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateAndDown___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_object*);
+static lean_object* l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__5;
+static lean_object* l___regBuiltin_Lean_Meta_Grind_propagateOrUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_985____closed__1;
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__3;
+static lean_object* l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__6;
+static lean_object* l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__8;
+static lean_object* l_Lean_Meta_Grind_propagateHEqDown___closed__1;
 lean_object* l_Lean_Meta_Grind_pushEqCore(lean_object*, 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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___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___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__6;
-static lean_object* l_Lean_Meta_Grind_propagateConectivesUp___closed__3;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__14;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateConnectivesDown___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___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__13;
-lean_object* l_Lean_Expr_appArg_x21(lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__6;
+static lean_object* l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__1;
+static lean_object* l___regBuiltin_Lean_Meta_Grind_propagateHEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2546____closed__1;
+static lean_object* l___regBuiltin_Lean_Meta_Grind_propagateAndDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_604____closed__1;
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__7;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateAndUp(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_Grind_propagateOrUp___lambda__1___closed__1;
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+lean_object* l_Lean_Expr_cleanupAnnotations(lean_object*);
+static lean_object* l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__6;
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___closed__2;
+static lean_object* l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__1;
+static lean_object* l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__6;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateNotDown(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_Grind_propagateHEqDown___closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateNotDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1706_(lean_object*);
 lean_object* l_Lean_Name_mkStr3(lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_propagateConnectivesDown___closed__1;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__6;
-static lean_object* l_Lean_Meta_Grind_propagateEqUp___closed__3;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__4;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__2;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__1;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__1;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__6;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__2;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___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___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__8;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp(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_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__3;
-static lean_object* l_Lean_Meta_Grind_propagateConectivesUp___closed__2;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-static lean_object* l_Lean_Meta_Grind_propagateConnectivesDown___closed__2;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__9;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__12;
-static lean_object* l_Lean_Meta_Grind_propagateEqUp___closed__7;
+static lean_object* l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__4;
+static lean_object* l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__7;
+static lean_object* l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__2;
+static lean_object* l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__7;
+static lean_object* l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__12;
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___closed__1;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateAndUp___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_Meta_Grind_closeGoal(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_Grind_propagateNotDown___lambda__1(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_Grind_propagateAndDown___lambda__1___closed__4;
+static lean_object* l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__8;
+static lean_object* l___regBuiltin_Lean_Meta_Grind_propagateHEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2806____closed__1;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateHEqUp___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_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateEqUp___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_object*);
+lean_object* l_Lean_Expr_appArg(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateEqDown___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_object*);
+static lean_object* l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__6;
+static lean_object* l___regBuiltin_Lean_Meta_Grind_propagateEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2058____closed__1;
+static lean_object* l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__2;
+static lean_object* l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__8;
+static lean_object* l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__3;
+lean_object* l_Lean_Expr_appFnCleanup(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateOrDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1206_(lean_object*);
+static lean_object* l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__9;
+static lean_object* l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__1;
+static lean_object* l___regBuiltin_Lean_Meta_Grind_propagateOrDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1206____closed__1;
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__11;
+static lean_object* l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__4;
 lean_object* l_Lean_Meta_Grind_pushEqTrue(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_Grind_propagateEqUp___closed__9;
-static lean_object* l_Lean_Meta_Grind_propagateEqUp___closed__8;
-uint8_t lean_name_eq(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__4;
+static lean_object* l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__1;
+static lean_object* l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__5;
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__8;
 lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateEqDown(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_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__5;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__7;
-lean_object* l_Lean_Expr_appFn_x21(lean_object*);
-static lean_object* l_Lean_Meta_Grind_propagateConectivesUp___closed__6;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___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___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__8;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__2;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__11;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__12;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__3;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateHEqDown___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_Meta_Grind_mkEqProof(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_Grind_propagateEqUp___lambda__1___closed__3;
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__10;
+static lean_object* l___regBuiltin_Lean_Meta_Grind_propagateEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2287____closed__1;
+static lean_object* l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__5;
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__9;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateNotUp(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_Grind_propagateOrUp___lambda__1___closed__3;
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__13;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateOrUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_985_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2287_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateAndDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_604_(lean_object*);
+static lean_object* l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__4;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateOrDown___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_object*);
+static lean_object* l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__4;
+lean_object* lean_grind_mk_eq_proof(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_Grind_propagateEqUp___closed__1;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__1;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__4;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateConnectivesDown(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_Grind_propagateEqUp___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___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__3;
-uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
 lean_object* l_Lean_mkApp3(lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_mkEqFalseProof(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_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__4;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__5;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateEqDown___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___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__3;
+static lean_object* l_Lean_Meta_Grind_propagateOrUp___closed__1;
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__6;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateOrDown(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_Grind_propagateOrDown___lambda__1___closed__6;
+static lean_object* l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__9;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateAndDown(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_Grind_propagateEqUp___lambda__1___closed__2;
+uint8_t l_Lean_Expr_isConstOf(lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_isEqv(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_getAppFn(lean_object*);
+lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(lean_object*, uint8_t, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_mkEqTrueProof(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__3;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__1;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__4;
-static lean_object* l_Lean_Meta_Grind_propagateEqUp___closed__4;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__5;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__2(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___regBuiltin_Lean_Meta_Grind_propagateNotUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1426_(lean_object*);
+static lean_object* l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__3;
+static lean_object* l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__3;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateOrUp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_isEqFalse(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_pushEqFalse(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_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__10;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__6;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__4;
-static lean_object* l_Lean_Meta_Grind_propagateEqUp___closed__6;
-static lean_object* l_Lean_Meta_Grind_propagateConectivesUp___closed__7;
+static lean_object* l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__5;
 lean_object* l_Lean_Meta_Grind_isEqTrue(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_Grind_propagateConectivesUp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__7;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___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_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___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_Meta_Grind_propagateConectivesUp___closed__4;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__2;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__5;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__5;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__6;
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__12;
+static lean_object* l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__3;
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateHEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2546_(lean_object*);
+static lean_object* l_Lean_Meta_Grind_propagateOrUp___closed__2;
+static lean_object* l___regBuiltin_Lean_Meta_Grind_propagateNotDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1706____closed__1;
+static lean_object* l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__9;
+static lean_object* l_Lean_Meta_Grind_propagateNotUp___closed__1;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateOrUp___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_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateHEqDown___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_object*);
+static lean_object* l_Lean_Meta_Grind_propagateAndUp___closed__3;
 static lean_object* l_Lean_Meta_Grind_propagateEqUp___closed__2;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__11;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateHEqUp(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_Grind_propagateHEqDown(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_Grind_propagateEqUp___closed__5;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__9;
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -132,7 +161,7 @@ x_1 = lean_mk_string_unchecked("Lean", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2() {
 _start:
 {
 lean_object* x_1; 
@@ -140,7 +169,7 @@ x_1 = lean_mk_string_unchecked("Grind", 5, 5);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__3() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__3() {
 _start:
 {
 lean_object* x_1; 
@@ -148,28 +177,28 @@ x_1 = lean_mk_string_unchecked("and_eq_of_eq_false_right", 24, 24);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__4() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__3;
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__3;
 x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
 return x_4;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__5() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__4;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__4;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__6() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -177,28 +206,28 @@ x_1 = lean_mk_string_unchecked("and_eq_of_eq_false_left", 23, 23);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__7() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__6;
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__6;
 x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
 return x_4;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__8() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__8() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__7;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__7;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__9() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__9() {
 _start:
 {
 lean_object* x_1; 
@@ -206,28 +235,28 @@ x_1 = lean_mk_string_unchecked("and_eq_of_eq_true_right", 23, 23);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__10() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__10() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__9;
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__9;
 x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
 return x_4;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__11() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__11() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__10;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__10;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__12() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__12() {
 _start:
 {
 lean_object* x_1; 
@@ -235,1584 +264,2815 @@ x_1 = lean_mk_string_unchecked("and_eq_of_eq_true_left", 22, 22);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__13() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__13() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__12;
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__12;
 x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
 return x_4;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__14() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__14() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__13;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__13;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp(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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateAndUp___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, lean_object* x_11, lean_object* x_12) {
 _start:
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; 
-x_11 = l_Lean_Expr_appFn_x21(x_1);
-x_12 = l_Lean_Expr_appArg_x21(x_11);
-lean_dec(x_11);
-x_13 = l_Lean_Expr_appArg_x21(x_1);
-lean_inc(x_12);
-x_14 = l_Lean_Meta_Grind_isEqTrue(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_14) == 0)
-{
-lean_object* x_15; uint8_t x_16; 
-x_15 = lean_ctor_get(x_14, 0);
-lean_inc(x_15);
-x_16 = lean_unbox(x_15);
-lean_dec(x_15);
-if (x_16 == 0)
+lean_object* x_13; 
+lean_inc(x_2);
+x_13 = l_Lean_Meta_Grind_isEqTrue(x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
 {
-lean_object* x_17; lean_object* x_18; 
-x_17 = lean_ctor_get(x_14, 1);
-lean_inc(x_17);
+lean_object* x_14; uint8_t x_15; 
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_unbox(x_14);
 lean_dec(x_14);
-lean_inc(x_13);
-x_18 = l_Lean_Meta_Grind_isEqTrue(x_13, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_17);
-if (lean_obj_tag(x_18) == 0)
-{
-lean_object* x_19; uint8_t x_20; 
-x_19 = lean_ctor_get(x_18, 0);
-lean_inc(x_19);
-x_20 = lean_unbox(x_19);
-lean_dec(x_19);
-if (x_20 == 0)
+if (x_15 == 0)
 {
-lean_object* x_21; lean_object* x_22; 
-x_21 = lean_ctor_get(x_18, 1);
-lean_inc(x_21);
+lean_object* x_16; lean_object* x_17; 
+x_16 = lean_ctor_get(x_13, 1);
+lean_inc(x_16);
+lean_dec(x_13);
+lean_inc(x_3);
+x_17 = l_Lean_Meta_Grind_isEqTrue(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_16);
+if (lean_obj_tag(x_17) == 0)
+{
+lean_object* x_18; uint8_t x_19; 
+x_18 = lean_ctor_get(x_17, 0);
+lean_inc(x_18);
+x_19 = lean_unbox(x_18);
 lean_dec(x_18);
-lean_inc(x_12);
-x_22 = l_Lean_Meta_Grind_isEqFalse(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_21);
-if (lean_obj_tag(x_22) == 0)
+if (x_19 == 0)
 {
-lean_object* x_23; uint8_t x_24; 
-x_23 = lean_ctor_get(x_22, 0);
-lean_inc(x_23);
-x_24 = lean_unbox(x_23);
-lean_dec(x_23);
-if (x_24 == 0)
+lean_object* x_20; lean_object* x_21; 
+x_20 = lean_ctor_get(x_17, 1);
+lean_inc(x_20);
+lean_dec(x_17);
+lean_inc(x_2);
+x_21 = l_Lean_Meta_Grind_isEqFalse(x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_20);
+if (lean_obj_tag(x_21) == 0)
 {
-lean_object* x_25; lean_object* x_26; 
-x_25 = lean_ctor_get(x_22, 1);
-lean_inc(x_25);
+lean_object* x_22; uint8_t x_23; 
+x_22 = lean_ctor_get(x_21, 0);
+lean_inc(x_22);
+x_23 = lean_unbox(x_22);
 lean_dec(x_22);
-lean_inc(x_13);
-x_26 = l_Lean_Meta_Grind_isEqFalse(x_13, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_25);
-if (lean_obj_tag(x_26) == 0)
+if (x_23 == 0)
 {
-lean_object* x_27; uint8_t x_28; 
-x_27 = lean_ctor_get(x_26, 0);
-lean_inc(x_27);
-x_28 = lean_unbox(x_27);
-lean_dec(x_27);
-if (x_28 == 0)
+lean_object* x_24; lean_object* x_25; 
+x_24 = lean_ctor_get(x_21, 1);
+lean_inc(x_24);
+lean_dec(x_21);
+lean_inc(x_3);
+x_25 = l_Lean_Meta_Grind_isEqFalse(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_24);
+if (lean_obj_tag(x_25) == 0)
 {
-uint8_t x_29; 
-lean_dec(x_13);
-lean_dec(x_12);
+lean_object* x_26; uint8_t x_27; 
+x_26 = lean_ctor_get(x_25, 0);
+lean_inc(x_26);
+x_27 = lean_unbox(x_26);
+lean_dec(x_26);
+if (x_27 == 0)
+{
+uint8_t x_28; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_29 = !lean_is_exclusive(x_26);
-if (x_29 == 0)
+x_28 = !lean_is_exclusive(x_25);
+if (x_28 == 0)
 {
-lean_object* x_30; lean_object* x_31; 
-x_30 = lean_ctor_get(x_26, 0);
-lean_dec(x_30);
-x_31 = lean_box(0);
-lean_ctor_set(x_26, 0, x_31);
-return x_26;
+lean_object* x_29; lean_object* x_30; 
+x_29 = lean_ctor_get(x_25, 0);
+lean_dec(x_29);
+x_30 = lean_box(0);
+lean_ctor_set(x_25, 0, x_30);
+return x_25;
 }
 else
 {
-lean_object* x_32; lean_object* x_33; lean_object* x_34; 
-x_32 = lean_ctor_get(x_26, 1);
-lean_inc(x_32);
-lean_dec(x_26);
-x_33 = lean_box(0);
-x_34 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_34, 0, x_33);
-lean_ctor_set(x_34, 1, x_32);
-return x_34;
+lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_31 = lean_ctor_get(x_25, 1);
+lean_inc(x_31);
+lean_dec(x_25);
+x_32 = lean_box(0);
+x_33 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_33, 0, x_32);
+lean_ctor_set(x_33, 1, x_31);
+return x_33;
 }
 }
 else
 {
-lean_object* x_35; lean_object* x_36; 
-x_35 = lean_ctor_get(x_26, 1);
-lean_inc(x_35);
-lean_dec(x_26);
+lean_object* x_34; lean_object* x_35; 
+x_34 = lean_ctor_get(x_25, 1);
+lean_inc(x_34);
+lean_dec(x_25);
+lean_inc(x_11);
+lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
-lean_inc(x_13);
-x_36 = l_Lean_Meta_Grind_mkEqFalseProof(x_13, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_35);
-if (lean_obj_tag(x_36) == 0)
-{
-lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; 
-x_37 = lean_ctor_get(x_36, 0);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_35 = l_Lean_Meta_Grind_mkEqFalseProof(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_34);
+if (lean_obj_tag(x_35) == 0)
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+x_36 = lean_ctor_get(x_35, 0);
+lean_inc(x_36);
+x_37 = lean_ctor_get(x_35, 1);
 lean_inc(x_37);
-x_38 = lean_ctor_get(x_36, 1);
-lean_inc(x_38);
-lean_dec(x_36);
-x_39 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__5;
-x_40 = l_Lean_mkApp3(x_39, x_12, x_13, x_37);
-x_41 = l_Lean_Meta_Grind_pushEqFalse(x_1, x_40, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_38);
+lean_dec(x_35);
+x_38 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__5;
+x_39 = l_Lean_mkApp3(x_38, x_2, x_3, x_36);
+x_40 = l_Lean_Meta_Grind_pushEqFalse(x_1, x_39, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_37);
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_41;
+lean_dec(x_5);
+lean_dec(x_4);
+return x_40;
 }
 else
 {
-uint8_t x_42; 
-lean_dec(x_13);
-lean_dec(x_12);
+uint8_t x_41; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_42 = !lean_is_exclusive(x_36);
-if (x_42 == 0)
+x_41 = !lean_is_exclusive(x_35);
+if (x_41 == 0)
 {
-return x_36;
+return x_35;
 }
 else
 {
-lean_object* x_43; lean_object* x_44; lean_object* x_45; 
-x_43 = lean_ctor_get(x_36, 0);
-x_44 = lean_ctor_get(x_36, 1);
-lean_inc(x_44);
+lean_object* x_42; lean_object* x_43; lean_object* x_44; 
+x_42 = lean_ctor_get(x_35, 0);
+x_43 = lean_ctor_get(x_35, 1);
 lean_inc(x_43);
-lean_dec(x_36);
-x_45 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_45, 0, x_43);
-lean_ctor_set(x_45, 1, x_44);
-return x_45;
+lean_inc(x_42);
+lean_dec(x_35);
+x_44 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_44, 0, x_42);
+lean_ctor_set(x_44, 1, x_43);
+return x_44;
 }
 }
 }
 }
 else
 {
-uint8_t x_46; 
-lean_dec(x_13);
-lean_dec(x_12);
+uint8_t x_45; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_46 = !lean_is_exclusive(x_26);
-if (x_46 == 0)
+x_45 = !lean_is_exclusive(x_25);
+if (x_45 == 0)
 {
-return x_26;
+return x_25;
 }
 else
 {
-lean_object* x_47; lean_object* x_48; lean_object* x_49; 
-x_47 = lean_ctor_get(x_26, 0);
-x_48 = lean_ctor_get(x_26, 1);
-lean_inc(x_48);
+lean_object* x_46; lean_object* x_47; lean_object* x_48; 
+x_46 = lean_ctor_get(x_25, 0);
+x_47 = lean_ctor_get(x_25, 1);
 lean_inc(x_47);
-lean_dec(x_26);
-x_49 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_49, 0, x_47);
-lean_ctor_set(x_49, 1, x_48);
-return x_49;
+lean_inc(x_46);
+lean_dec(x_25);
+x_48 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_48, 0, x_46);
+lean_ctor_set(x_48, 1, x_47);
+return x_48;
 }
 }
 }
 else
 {
-lean_object* x_50; lean_object* x_51; 
-x_50 = lean_ctor_get(x_22, 1);
-lean_inc(x_50);
-lean_dec(x_22);
+lean_object* x_49; lean_object* x_50; 
+x_49 = lean_ctor_get(x_21, 1);
+lean_inc(x_49);
+lean_dec(x_21);
+lean_inc(x_11);
+lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
-lean_inc(x_12);
-x_51 = l_Lean_Meta_Grind_mkEqFalseProof(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_50);
-if (lean_obj_tag(x_51) == 0)
-{
-lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; 
-x_52 = lean_ctor_get(x_51, 0);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_2);
+x_50 = l_Lean_Meta_Grind_mkEqFalseProof(x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_49);
+if (lean_obj_tag(x_50) == 0)
+{
+lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; 
+x_51 = lean_ctor_get(x_50, 0);
+lean_inc(x_51);
+x_52 = lean_ctor_get(x_50, 1);
 lean_inc(x_52);
-x_53 = lean_ctor_get(x_51, 1);
-lean_inc(x_53);
-lean_dec(x_51);
-x_54 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__8;
-x_55 = l_Lean_mkApp3(x_54, x_12, x_13, x_52);
-x_56 = l_Lean_Meta_Grind_pushEqFalse(x_1, x_55, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_53);
+lean_dec(x_50);
+x_53 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__8;
+x_54 = l_Lean_mkApp3(x_53, x_2, x_3, x_51);
+x_55 = l_Lean_Meta_Grind_pushEqFalse(x_1, x_54, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_52);
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_56;
+lean_dec(x_5);
+lean_dec(x_4);
+return x_55;
 }
 else
 {
-uint8_t x_57; 
-lean_dec(x_13);
-lean_dec(x_12);
+uint8_t x_56; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_57 = !lean_is_exclusive(x_51);
-if (x_57 == 0)
+x_56 = !lean_is_exclusive(x_50);
+if (x_56 == 0)
 {
-return x_51;
+return x_50;
 }
 else
 {
-lean_object* x_58; lean_object* x_59; lean_object* x_60; 
-x_58 = lean_ctor_get(x_51, 0);
-x_59 = lean_ctor_get(x_51, 1);
-lean_inc(x_59);
+lean_object* x_57; lean_object* x_58; lean_object* x_59; 
+x_57 = lean_ctor_get(x_50, 0);
+x_58 = lean_ctor_get(x_50, 1);
 lean_inc(x_58);
-lean_dec(x_51);
-x_60 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_60, 0, x_58);
-lean_ctor_set(x_60, 1, x_59);
-return x_60;
+lean_inc(x_57);
+lean_dec(x_50);
+x_59 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_59, 0, x_57);
+lean_ctor_set(x_59, 1, x_58);
+return x_59;
 }
 }
 }
 }
 else
 {
-uint8_t x_61; 
-lean_dec(x_13);
-lean_dec(x_12);
+uint8_t x_60; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_61 = !lean_is_exclusive(x_22);
-if (x_61 == 0)
+x_60 = !lean_is_exclusive(x_21);
+if (x_60 == 0)
 {
-return x_22;
+return x_21;
 }
 else
 {
-lean_object* x_62; lean_object* x_63; lean_object* x_64; 
-x_62 = lean_ctor_get(x_22, 0);
-x_63 = lean_ctor_get(x_22, 1);
-lean_inc(x_63);
+lean_object* x_61; lean_object* x_62; lean_object* x_63; 
+x_61 = lean_ctor_get(x_21, 0);
+x_62 = lean_ctor_get(x_21, 1);
 lean_inc(x_62);
-lean_dec(x_22);
-x_64 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_64, 0, x_62);
-lean_ctor_set(x_64, 1, x_63);
-return x_64;
+lean_inc(x_61);
+lean_dec(x_21);
+x_63 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_63, 0, x_61);
+lean_ctor_set(x_63, 1, x_62);
+return x_63;
 }
 }
 }
 else
 {
-lean_object* x_65; lean_object* x_66; 
-x_65 = lean_ctor_get(x_18, 1);
-lean_inc(x_65);
-lean_dec(x_18);
+lean_object* x_64; lean_object* x_65; 
+x_64 = lean_ctor_get(x_17, 1);
+lean_inc(x_64);
+lean_dec(x_17);
+lean_inc(x_11);
+lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
-lean_inc(x_13);
-x_66 = l_Lean_Meta_Grind_mkEqTrueProof(x_13, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_65);
-if (lean_obj_tag(x_66) == 0)
-{
-lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; uint8_t x_71; lean_object* x_72; 
-x_67 = lean_ctor_get(x_66, 0);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_65 = l_Lean_Meta_Grind_mkEqTrueProof(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_64);
+if (lean_obj_tag(x_65) == 0)
+{
+lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; uint8_t x_70; lean_object* x_71; 
+x_66 = lean_ctor_get(x_65, 0);
+lean_inc(x_66);
+x_67 = lean_ctor_get(x_65, 1);
 lean_inc(x_67);
-x_68 = lean_ctor_get(x_66, 1);
-lean_inc(x_68);
-lean_dec(x_66);
-x_69 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__11;
-lean_inc(x_12);
-x_70 = l_Lean_mkApp3(x_69, x_12, x_13, x_67);
-x_71 = 0;
-x_72 = l_Lean_Meta_Grind_pushEqCore(x_1, x_12, x_70, x_71, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_68);
+lean_dec(x_65);
+x_68 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__11;
+lean_inc(x_2);
+x_69 = l_Lean_mkApp3(x_68, x_2, x_3, x_66);
+x_70 = 0;
+x_71 = l_Lean_Meta_Grind_pushEqCore(x_1, x_2, x_69, x_70, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_67);
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_72;
+lean_dec(x_5);
+lean_dec(x_4);
+return x_71;
 }
 else
 {
-uint8_t x_73; 
-lean_dec(x_13);
-lean_dec(x_12);
+uint8_t x_72; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_73 = !lean_is_exclusive(x_66);
-if (x_73 == 0)
+x_72 = !lean_is_exclusive(x_65);
+if (x_72 == 0)
 {
-return x_66;
+return x_65;
 }
 else
 {
-lean_object* x_74; lean_object* x_75; lean_object* x_76; 
-x_74 = lean_ctor_get(x_66, 0);
-x_75 = lean_ctor_get(x_66, 1);
-lean_inc(x_75);
+lean_object* x_73; lean_object* x_74; lean_object* x_75; 
+x_73 = lean_ctor_get(x_65, 0);
+x_74 = lean_ctor_get(x_65, 1);
 lean_inc(x_74);
-lean_dec(x_66);
-x_76 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_76, 0, x_74);
-lean_ctor_set(x_76, 1, x_75);
-return x_76;
+lean_inc(x_73);
+lean_dec(x_65);
+x_75 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_75, 0, x_73);
+lean_ctor_set(x_75, 1, x_74);
+return x_75;
 }
 }
 }
 }
 else
 {
-uint8_t x_77; 
-lean_dec(x_13);
-lean_dec(x_12);
+uint8_t x_76; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_77 = !lean_is_exclusive(x_18);
-if (x_77 == 0)
+x_76 = !lean_is_exclusive(x_17);
+if (x_76 == 0)
 {
-return x_18;
+return x_17;
 }
 else
 {
-lean_object* x_78; lean_object* x_79; lean_object* x_80; 
-x_78 = lean_ctor_get(x_18, 0);
-x_79 = lean_ctor_get(x_18, 1);
-lean_inc(x_79);
+lean_object* x_77; lean_object* x_78; lean_object* x_79; 
+x_77 = lean_ctor_get(x_17, 0);
+x_78 = lean_ctor_get(x_17, 1);
 lean_inc(x_78);
-lean_dec(x_18);
-x_80 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_80, 0, x_78);
-lean_ctor_set(x_80, 1, x_79);
-return x_80;
+lean_inc(x_77);
+lean_dec(x_17);
+x_79 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_79, 0, x_77);
+lean_ctor_set(x_79, 1, x_78);
+return x_79;
 }
 }
 }
 else
 {
-lean_object* x_81; lean_object* x_82; 
-x_81 = lean_ctor_get(x_14, 1);
-lean_inc(x_81);
-lean_dec(x_14);
+lean_object* x_80; lean_object* x_81; 
+x_80 = lean_ctor_get(x_13, 1);
+lean_inc(x_80);
+lean_dec(x_13);
+lean_inc(x_11);
+lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
-lean_inc(x_12);
-x_82 = l_Lean_Meta_Grind_mkEqTrueProof(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_81);
-if (lean_obj_tag(x_82) == 0)
-{
-lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; uint8_t x_87; lean_object* x_88; 
-x_83 = lean_ctor_get(x_82, 0);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_2);
+x_81 = l_Lean_Meta_Grind_mkEqTrueProof(x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_80);
+if (lean_obj_tag(x_81) == 0)
+{
+lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; uint8_t x_86; lean_object* x_87; 
+x_82 = lean_ctor_get(x_81, 0);
+lean_inc(x_82);
+x_83 = lean_ctor_get(x_81, 1);
 lean_inc(x_83);
-x_84 = lean_ctor_get(x_82, 1);
-lean_inc(x_84);
-lean_dec(x_82);
-x_85 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__14;
-lean_inc(x_13);
-x_86 = l_Lean_mkApp3(x_85, x_12, x_13, x_83);
-x_87 = 0;
-x_88 = l_Lean_Meta_Grind_pushEqCore(x_1, x_13, x_86, x_87, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_84);
+lean_dec(x_81);
+x_84 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__14;
+lean_inc(x_3);
+x_85 = l_Lean_mkApp3(x_84, x_2, x_3, x_82);
+x_86 = 0;
+x_87 = l_Lean_Meta_Grind_pushEqCore(x_1, x_3, x_85, x_86, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_83);
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_88;
+lean_dec(x_5);
+lean_dec(x_4);
+return x_87;
 }
 else
 {
-uint8_t x_89; 
-lean_dec(x_13);
-lean_dec(x_12);
+uint8_t x_88; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_89 = !lean_is_exclusive(x_82);
-if (x_89 == 0)
+x_88 = !lean_is_exclusive(x_81);
+if (x_88 == 0)
 {
-return x_82;
+return x_81;
 }
 else
 {
-lean_object* x_90; lean_object* x_91; lean_object* x_92; 
-x_90 = lean_ctor_get(x_82, 0);
-x_91 = lean_ctor_get(x_82, 1);
-lean_inc(x_91);
+lean_object* x_89; lean_object* x_90; lean_object* x_91; 
+x_89 = lean_ctor_get(x_81, 0);
+x_90 = lean_ctor_get(x_81, 1);
 lean_inc(x_90);
-lean_dec(x_82);
-x_92 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_92, 0, x_90);
-lean_ctor_set(x_92, 1, x_91);
-return x_92;
+lean_inc(x_89);
+lean_dec(x_81);
+x_91 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_91, 0, x_89);
+lean_ctor_set(x_91, 1, x_90);
+return x_91;
 }
 }
 }
 }
 else
 {
-uint8_t x_93; 
-lean_dec(x_13);
-lean_dec(x_12);
+uint8_t x_92; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_93 = !lean_is_exclusive(x_14);
-if (x_93 == 0)
+x_92 = !lean_is_exclusive(x_13);
+if (x_92 == 0)
 {
-return x_14;
+return x_13;
 }
 else
 {
-lean_object* x_94; lean_object* x_95; lean_object* x_96; 
-x_94 = lean_ctor_get(x_14, 0);
-x_95 = lean_ctor_get(x_14, 1);
-lean_inc(x_95);
+lean_object* x_93; lean_object* x_94; lean_object* x_95; 
+x_93 = lean_ctor_get(x_13, 0);
+x_94 = lean_ctor_get(x_13, 1);
 lean_inc(x_94);
-lean_dec(x_14);
-x_96 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_96, 0, x_94);
-lean_ctor_set(x_96, 1, x_95);
-return x_96;
+lean_inc(x_93);
+lean_dec(x_13);
+x_95 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_95, 0, x_93);
+lean_ctor_set(x_95, 1, x_94);
+return x_95;
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___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, lean_object* x_10) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__2(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:
 {
-lean_object* x_11; 
-x_11 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_11;
+lean_object* x_11; lean_object* x_12; 
+x_11 = lean_box(0);
+x_12 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_12, 0, x_11);
+lean_ctor_set(x_12, 1, x_10);
+return x_12;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__1() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___closed__1() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("eq_true_of_and_eq_true_left", 27, 27);
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_propagateAndUp___lambda__2___boxed), 10, 0);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__2() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__1;
-x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
-return x_4;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__3() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__2;
-x_3 = l_Lean_Expr_const___override(x_2, x_1);
-return x_3;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__4() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___closed__2() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("eq_true_of_and_eq_true_right", 28, 28);
+x_1 = lean_mk_string_unchecked("And", 3, 3);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__5() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__4;
-x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
-return x_4;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__6() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndUp___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__5;
-x_3 = l_Lean_Expr_const___override(x_2, x_1);
+x_2 = l_Lean_Meta_Grind_propagateAndUp___closed__2;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown(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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateAndUp(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:
 {
-lean_object* x_11; 
+lean_object* x_11; lean_object* x_12; uint8_t x_13; 
+x_11 = l_Lean_Meta_Grind_propagateAndUp___closed__1;
 lean_inc(x_1);
-x_11 = l_Lean_Meta_Grind_isEqTrue(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_11) == 0)
+x_12 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_13 = l_Lean_Expr_isApp(x_12);
+if (x_13 == 0)
 {
-lean_object* x_12; uint8_t x_13; 
-x_12 = lean_ctor_get(x_11, 0);
-lean_inc(x_12);
-x_13 = lean_unbox(x_12);
+lean_object* x_14; lean_object* x_15; 
 lean_dec(x_12);
-if (x_13 == 0)
-{
-uint8_t x_14; 
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
 lean_dec(x_1);
-x_14 = !lean_is_exclusive(x_11);
-if (x_14 == 0)
-{
-lean_object* x_15; lean_object* x_16; 
-x_15 = lean_ctor_get(x_11, 0);
-lean_dec(x_15);
-x_16 = lean_box(0);
-lean_ctor_set(x_11, 0, x_16);
-return x_11;
-}
-else
-{
-lean_object* x_17; lean_object* x_18; lean_object* x_19; 
-x_17 = lean_ctor_get(x_11, 1);
-lean_inc(x_17);
-lean_dec(x_11);
-x_18 = lean_box(0);
-x_19 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_19, 0, x_18);
-lean_ctor_set(x_19, 1, x_17);
-return x_19;
-}
+x_14 = lean_box(0);
+x_15 = lean_apply_10(x_11, x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_15;
 }
 else
 {
-lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; 
-x_20 = lean_ctor_get(x_11, 1);
-lean_inc(x_20);
-lean_dec(x_11);
-x_21 = l_Lean_Expr_appFn_x21(x_1);
-x_22 = l_Lean_Expr_appArg_x21(x_21);
-lean_dec(x_21);
-x_23 = l_Lean_Expr_appArg_x21(x_1);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-x_24 = l_Lean_Meta_Grind_mkEqTrueProof(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_20);
-if (lean_obj_tag(x_24) == 0)
+lean_object* x_16; lean_object* x_17; uint8_t x_18; 
+x_16 = l_Lean_Expr_appArg(x_12, lean_box(0));
+x_17 = l_Lean_Expr_appFnCleanup(x_12, lean_box(0));
+x_18 = l_Lean_Expr_isApp(x_17);
+if (x_18 == 0)
 {
-lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; 
-x_25 = lean_ctor_get(x_24, 0);
-lean_inc(x_25);
-x_26 = lean_ctor_get(x_24, 1);
-lean_inc(x_26);
-lean_dec(x_24);
-x_27 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__3;
-lean_inc(x_25);
-lean_inc(x_23);
-lean_inc(x_22);
-x_28 = l_Lean_mkApp3(x_27, x_22, x_23, x_25);
-lean_inc(x_22);
-x_29 = l_Lean_Meta_Grind_pushEqTrue(x_22, x_28, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_26);
-x_30 = lean_ctor_get(x_29, 1);
-lean_inc(x_30);
-lean_dec(x_29);
-x_31 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__6;
-lean_inc(x_23);
-x_32 = l_Lean_mkApp3(x_31, x_22, x_23, x_25);
-x_33 = l_Lean_Meta_Grind_pushEqTrue(x_23, x_32, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_30);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-return x_33;
+lean_object* x_19; lean_object* x_20; 
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_1);
+x_19 = lean_box(0);
+x_20 = lean_apply_10(x_11, x_19, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_20;
 }
 else
 {
-uint8_t x_34; 
-lean_dec(x_23);
+lean_object* x_21; lean_object* x_22; lean_object* x_23; uint8_t x_24; 
+x_21 = l_Lean_Expr_appArg(x_17, lean_box(0));
+x_22 = l_Lean_Expr_appFnCleanup(x_17, lean_box(0));
+x_23 = l_Lean_Meta_Grind_propagateAndUp___closed__3;
+x_24 = l_Lean_Expr_isConstOf(x_22, x_23);
 lean_dec(x_22);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-x_34 = !lean_is_exclusive(x_24);
-if (x_34 == 0)
+if (x_24 == 0)
 {
-return x_24;
+lean_object* x_25; lean_object* x_26; 
+lean_dec(x_21);
+lean_dec(x_16);
+lean_dec(x_1);
+x_25 = lean_box(0);
+x_26 = lean_apply_10(x_11, x_25, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_26;
 }
 else
 {
-lean_object* x_35; lean_object* x_36; lean_object* x_37; 
-x_35 = lean_ctor_get(x_24, 0);
-x_36 = lean_ctor_get(x_24, 1);
-lean_inc(x_36);
-lean_inc(x_35);
-lean_dec(x_24);
-x_37 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_37, 0, x_35);
-lean_ctor_set(x_37, 1, x_36);
-return x_37;
+lean_object* x_27; 
+x_27 = l_Lean_Meta_Grind_propagateAndUp___lambda__1(x_1, x_21, x_16, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_27;
 }
 }
 }
 }
-else
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateAndUp___lambda__2___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, lean_object* x_10) {
+_start:
 {
-uint8_t x_38; 
+lean_object* x_11; 
+x_11 = l_Lean_Meta_Grind_propagateAndUp___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-lean_dec(x_1);
-x_38 = !lean_is_exclusive(x_11);
-if (x_38 == 0)
-{
-return x_11;
-}
-else
-{
-lean_object* x_39; lean_object* x_40; lean_object* x_41; 
-x_39 = lean_ctor_get(x_11, 0);
-x_40 = lean_ctor_get(x_11, 1);
-lean_inc(x_40);
-lean_inc(x_39);
-lean_dec(x_11);
-x_41 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_41, 0, x_39);
-lean_ctor_set(x_41, 1, x_40);
-return x_41;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___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, lean_object* x_10) {
-_start:
-{
-lean_object* x_11; 
-x_11 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
+lean_dec(x_1);
 return x_11;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("or_eq_of_eq_true_right", 22, 22);
-return x_1;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__2() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__1;
-x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
-return x_4;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__3() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__2;
-x_3 = l_Lean_Expr_const___override(x_2, x_1);
-return x_3;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__4() {
+static lean_object* _init_l___regBuiltin_Lean_Meta_Grind_propagateAndUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_383____closed__1() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("or_eq_of_eq_true_left", 21, 21);
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_propagateAndUp), 10, 0);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__5() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__4;
-x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
-return x_4;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__6() {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateAndUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_383_(lean_object* x_1) {
 _start:
 {
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__5;
-x_3 = l_Lean_Expr_const___override(x_2, x_1);
-return x_3;
+lean_object* x_2; uint8_t x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = l_Lean_Meta_Grind_propagateAndUp___closed__3;
+x_3 = 1;
+x_4 = l___regBuiltin_Lean_Meta_Grind_propagateAndUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_383____closed__1;
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_2, x_3, x_4, x_1);
+return x_5;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__7() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__1() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("or_eq_of_eq_false_right", 23, 23);
+x_1 = lean_mk_string_unchecked("eq_true_of_and_eq_true_left", 27, 27);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__8() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__7;
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__1;
 x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
 return x_4;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__9() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__8;
+x_2 = l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__2;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__10() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__4() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("or_eq_of_eq_false_left", 22, 22);
+x_1 = lean_mk_string_unchecked("eq_true_of_and_eq_true_right", 28, 28);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__11() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__10;
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__4;
 x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
 return x_4;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__12() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__11;
+x_2 = l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__5;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp(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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateAndDown___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, lean_object* x_11, lean_object* x_12) {
 _start:
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; 
-x_11 = l_Lean_Expr_appFn_x21(x_1);
-x_12 = l_Lean_Expr_appArg_x21(x_11);
-lean_dec(x_11);
-x_13 = l_Lean_Expr_appArg_x21(x_1);
-lean_inc(x_12);
-x_14 = l_Lean_Meta_Grind_isEqFalse(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_14) == 0)
-{
-lean_object* x_15; uint8_t x_16; 
-x_15 = lean_ctor_get(x_14, 0);
-lean_inc(x_15);
-x_16 = lean_unbox(x_15);
-lean_dec(x_15);
-if (x_16 == 0)
-{
-lean_object* x_17; lean_object* x_18; 
-x_17 = lean_ctor_get(x_14, 1);
-lean_inc(x_17);
-lean_dec(x_14);
-lean_inc(x_13);
-x_18 = l_Lean_Meta_Grind_isEqFalse(x_13, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_17);
-if (lean_obj_tag(x_18) == 0)
-{
-lean_object* x_19; uint8_t x_20; 
-x_19 = lean_ctor_get(x_18, 0);
-lean_inc(x_19);
-x_20 = lean_unbox(x_19);
-lean_dec(x_19);
-if (x_20 == 0)
-{
-lean_object* x_21; lean_object* x_22; 
-x_21 = lean_ctor_get(x_18, 1);
-lean_inc(x_21);
-lean_dec(x_18);
-lean_inc(x_12);
-x_22 = l_Lean_Meta_Grind_isEqTrue(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_21);
-if (lean_obj_tag(x_22) == 0)
-{
-lean_object* x_23; uint8_t x_24; 
-x_23 = lean_ctor_get(x_22, 0);
-lean_inc(x_23);
-x_24 = lean_unbox(x_23);
-lean_dec(x_23);
-if (x_24 == 0)
-{
-lean_object* x_25; lean_object* x_26; 
-x_25 = lean_ctor_get(x_22, 1);
-lean_inc(x_25);
-lean_dec(x_22);
-lean_inc(x_13);
-x_26 = l_Lean_Meta_Grind_isEqTrue(x_13, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_25);
-if (lean_obj_tag(x_26) == 0)
-{
-lean_object* x_27; uint8_t x_28; 
-x_27 = lean_ctor_get(x_26, 0);
-lean_inc(x_27);
-x_28 = lean_unbox(x_27);
-lean_dec(x_27);
-if (x_28 == 0)
-{
-uint8_t x_29; 
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_1);
-x_29 = !lean_is_exclusive(x_26);
-if (x_29 == 0)
-{
-lean_object* x_30; lean_object* x_31; 
-x_30 = lean_ctor_get(x_26, 0);
-lean_dec(x_30);
-x_31 = lean_box(0);
-lean_ctor_set(x_26, 0, x_31);
-return x_26;
-}
-else
-{
-lean_object* x_32; lean_object* x_33; lean_object* x_34; 
-x_32 = lean_ctor_get(x_26, 1);
-lean_inc(x_32);
-lean_dec(x_26);
-x_33 = lean_box(0);
-x_34 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_34, 0, x_33);
-lean_ctor_set(x_34, 1, x_32);
-return x_34;
-}
-}
-else
-{
-lean_object* x_35; lean_object* x_36; 
-x_35 = lean_ctor_get(x_26, 1);
-lean_inc(x_35);
-lean_dec(x_26);
+lean_object* x_13; 
+lean_inc(x_11);
+lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
-lean_inc(x_13);
-x_36 = l_Lean_Meta_Grind_mkEqTrueProof(x_13, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_35);
-if (lean_obj_tag(x_36) == 0)
+lean_inc(x_5);
+lean_inc(x_4);
+x_13 = l_Lean_Meta_Grind_mkEqTrueProof(x_1, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
 {
-lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; 
-x_37 = lean_ctor_get(x_36, 0);
-lean_inc(x_37);
-x_38 = lean_ctor_get(x_36, 1);
-lean_inc(x_38);
-lean_dec(x_36);
-x_39 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__3;
-x_40 = l_Lean_mkApp3(x_39, x_12, x_13, x_37);
-x_41 = l_Lean_Meta_Grind_pushEqTrue(x_1, x_40, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_38);
+lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; 
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_ctor_get(x_13, 1);
+lean_inc(x_15);
+lean_dec(x_13);
+x_16 = l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__3;
+lean_inc(x_14);
+lean_inc(x_3);
+lean_inc(x_2);
+x_17 = l_Lean_mkApp3(x_16, x_2, x_3, x_14);
+lean_inc(x_2);
+x_18 = l_Lean_Meta_Grind_pushEqTrue(x_2, x_17, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_15);
+x_19 = lean_ctor_get(x_18, 1);
+lean_inc(x_19);
+lean_dec(x_18);
+x_20 = l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__6;
+lean_inc(x_3);
+x_21 = l_Lean_mkApp3(x_20, x_2, x_3, x_14);
+x_22 = l_Lean_Meta_Grind_pushEqTrue(x_3, x_21, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_19);
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_41;
+lean_dec(x_5);
+lean_dec(x_4);
+return x_22;
 }
 else
 {
-uint8_t x_42; 
-lean_dec(x_13);
-lean_dec(x_12);
+uint8_t x_23; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-lean_dec(x_1);
-x_42 = !lean_is_exclusive(x_36);
-if (x_42 == 0)
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_23 = !lean_is_exclusive(x_13);
+if (x_23 == 0)
 {
-return x_36;
+return x_13;
 }
 else
 {
-lean_object* x_43; lean_object* x_44; lean_object* x_45; 
-x_43 = lean_ctor_get(x_36, 0);
-x_44 = lean_ctor_get(x_36, 1);
-lean_inc(x_44);
-lean_inc(x_43);
-lean_dec(x_36);
-x_45 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_45, 0, x_43);
-lean_ctor_set(x_45, 1, x_44);
-return x_45;
+lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+x_24 = lean_ctor_get(x_13, 0);
+x_25 = lean_ctor_get(x_13, 1);
+lean_inc(x_25);
+lean_inc(x_24);
+lean_dec(x_13);
+x_26 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_26, 0, x_24);
+lean_ctor_set(x_26, 1, x_25);
+return x_26;
 }
 }
 }
 }
-else
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateAndDown(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:
 {
-uint8_t x_46; 
-lean_dec(x_13);
+lean_object* x_11; 
+lean_inc(x_1);
+x_11 = l_Lean_Meta_Grind_isEqTrue(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_11) == 0)
+{
+lean_object* x_12; uint8_t x_13; 
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+x_13 = lean_unbox(x_12);
 lean_dec(x_12);
+if (x_13 == 0)
+{
+uint8_t x_14; 
 lean_dec(x_9);
 lean_dec(x_8);
 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_46 = !lean_is_exclusive(x_26);
-if (x_46 == 0)
+x_14 = !lean_is_exclusive(x_11);
+if (x_14 == 0)
 {
-return x_26;
-}
+lean_object* x_15; lean_object* x_16; 
+x_15 = lean_ctor_get(x_11, 0);
+lean_dec(x_15);
+x_16 = lean_box(0);
+lean_ctor_set(x_11, 0, x_16);
+return x_11;
+}
 else
 {
-lean_object* x_47; lean_object* x_48; lean_object* x_49; 
-x_47 = lean_ctor_get(x_26, 0);
-x_48 = lean_ctor_get(x_26, 1);
-lean_inc(x_48);
-lean_inc(x_47);
-lean_dec(x_26);
-x_49 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_49, 0, x_47);
-lean_ctor_set(x_49, 1, x_48);
-return x_49;
-}
+lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_17 = lean_ctor_get(x_11, 1);
+lean_inc(x_17);
+lean_dec(x_11);
+x_18 = lean_box(0);
+x_19 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_19, 0, x_18);
+lean_ctor_set(x_19, 1, x_17);
+return x_19;
 }
 }
 else
 {
-lean_object* x_50; lean_object* x_51; 
-x_50 = lean_ctor_get(x_22, 1);
-lean_inc(x_50);
+uint8_t x_20; 
+x_20 = !lean_is_exclusive(x_11);
+if (x_20 == 0)
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; uint8_t x_24; 
+x_21 = lean_ctor_get(x_11, 1);
+x_22 = lean_ctor_get(x_11, 0);
 lean_dec(x_22);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_12);
-x_51 = l_Lean_Meta_Grind_mkEqTrueProof(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_50);
-if (lean_obj_tag(x_51) == 0)
+lean_inc(x_1);
+x_23 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_24 = l_Lean_Expr_isApp(x_23);
+if (x_24 == 0)
 {
-lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; 
-x_52 = lean_ctor_get(x_51, 0);
-lean_inc(x_52);
-x_53 = lean_ctor_get(x_51, 1);
-lean_inc(x_53);
-lean_dec(x_51);
-x_54 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__6;
-x_55 = l_Lean_mkApp3(x_54, x_12, x_13, x_52);
-x_56 = l_Lean_Meta_Grind_pushEqTrue(x_1, x_55, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_53);
+lean_object* x_25; 
+lean_dec(x_23);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_56;
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_25 = lean_box(0);
+lean_ctor_set(x_11, 0, x_25);
+return x_11;
 }
 else
 {
-uint8_t x_57; 
-lean_dec(x_13);
-lean_dec(x_12);
+lean_object* x_26; lean_object* x_27; uint8_t x_28; 
+x_26 = l_Lean_Expr_appArg(x_23, lean_box(0));
+x_27 = l_Lean_Expr_appFnCleanup(x_23, lean_box(0));
+x_28 = l_Lean_Expr_isApp(x_27);
+if (x_28 == 0)
+{
+lean_object* x_29; 
+lean_dec(x_27);
+lean_dec(x_26);
 lean_dec(x_9);
 lean_dec(x_8);
 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_57 = !lean_is_exclusive(x_51);
-if (x_57 == 0)
-{
-return x_51;
+x_29 = lean_box(0);
+lean_ctor_set(x_11, 0, x_29);
+return x_11;
 }
 else
 {
-lean_object* x_58; lean_object* x_59; lean_object* x_60; 
-x_58 = lean_ctor_get(x_51, 0);
-x_59 = lean_ctor_get(x_51, 1);
-lean_inc(x_59);
-lean_inc(x_58);
-lean_dec(x_51);
-x_60 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_60, 0, x_58);
-lean_ctor_set(x_60, 1, x_59);
-return x_60;
-}
-}
-}
-}
-else
+lean_object* x_30; lean_object* x_31; lean_object* x_32; uint8_t x_33; 
+x_30 = l_Lean_Expr_appArg(x_27, lean_box(0));
+x_31 = l_Lean_Expr_appFnCleanup(x_27, lean_box(0));
+x_32 = l_Lean_Meta_Grind_propagateAndUp___closed__3;
+x_33 = l_Lean_Expr_isConstOf(x_31, x_32);
+lean_dec(x_31);
+if (x_33 == 0)
 {
-uint8_t x_61; 
-lean_dec(x_13);
-lean_dec(x_12);
+lean_object* x_34; 
+lean_dec(x_30);
+lean_dec(x_26);
 lean_dec(x_9);
 lean_dec(x_8);
 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_61 = !lean_is_exclusive(x_22);
-if (x_61 == 0)
-{
-return x_22;
+x_34 = lean_box(0);
+lean_ctor_set(x_11, 0, x_34);
+return x_11;
 }
 else
 {
-lean_object* x_62; lean_object* x_63; lean_object* x_64; 
-x_62 = lean_ctor_get(x_22, 0);
-x_63 = lean_ctor_get(x_22, 1);
-lean_inc(x_63);
-lean_inc(x_62);
-lean_dec(x_22);
-x_64 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_64, 0, x_62);
-lean_ctor_set(x_64, 1, x_63);
-return x_64;
+lean_object* x_35; 
+lean_free_object(x_11);
+x_35 = l_Lean_Meta_Grind_propagateAndDown___lambda__1(x_1, x_30, x_26, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_21);
+return x_35;
+}
 }
 }
 }
 else
 {
-lean_object* x_65; lean_object* x_66; 
-x_65 = lean_ctor_get(x_18, 1);
-lean_inc(x_65);
-lean_dec(x_18);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_13);
-x_66 = l_Lean_Meta_Grind_mkEqFalseProof(x_13, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_65);
-if (lean_obj_tag(x_66) == 0)
+lean_object* x_36; lean_object* x_37; uint8_t x_38; 
+x_36 = lean_ctor_get(x_11, 1);
+lean_inc(x_36);
+lean_dec(x_11);
+lean_inc(x_1);
+x_37 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_38 = l_Lean_Expr_isApp(x_37);
+if (x_38 == 0)
 {
-lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; uint8_t x_71; lean_object* x_72; 
-x_67 = lean_ctor_get(x_66, 0);
-lean_inc(x_67);
-x_68 = lean_ctor_get(x_66, 1);
-lean_inc(x_68);
-lean_dec(x_66);
-x_69 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__9;
-lean_inc(x_12);
-x_70 = l_Lean_mkApp3(x_69, x_12, x_13, x_67);
-x_71 = 0;
-x_72 = l_Lean_Meta_Grind_pushEqCore(x_1, x_12, x_70, x_71, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_68);
+lean_object* x_39; lean_object* x_40; 
+lean_dec(x_37);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_72;
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_39 = lean_box(0);
+x_40 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_40, 0, x_39);
+lean_ctor_set(x_40, 1, x_36);
+return x_40;
 }
 else
 {
-uint8_t x_73; 
-lean_dec(x_13);
-lean_dec(x_12);
+lean_object* x_41; lean_object* x_42; uint8_t x_43; 
+x_41 = l_Lean_Expr_appArg(x_37, lean_box(0));
+x_42 = l_Lean_Expr_appFnCleanup(x_37, lean_box(0));
+x_43 = l_Lean_Expr_isApp(x_42);
+if (x_43 == 0)
+{
+lean_object* x_44; lean_object* x_45; 
+lean_dec(x_42);
+lean_dec(x_41);
 lean_dec(x_9);
 lean_dec(x_8);
 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_73 = !lean_is_exclusive(x_66);
-if (x_73 == 0)
-{
-return x_66;
+x_44 = lean_box(0);
+x_45 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_45, 0, x_44);
+lean_ctor_set(x_45, 1, x_36);
+return x_45;
 }
 else
 {
-lean_object* x_74; lean_object* x_75; lean_object* x_76; 
-x_74 = lean_ctor_get(x_66, 0);
-x_75 = lean_ctor_get(x_66, 1);
-lean_inc(x_75);
-lean_inc(x_74);
-lean_dec(x_66);
-x_76 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_76, 0, x_74);
-lean_ctor_set(x_76, 1, x_75);
-return x_76;
-}
-}
-}
-}
-else
+lean_object* x_46; lean_object* x_47; lean_object* x_48; uint8_t x_49; 
+x_46 = l_Lean_Expr_appArg(x_42, lean_box(0));
+x_47 = l_Lean_Expr_appFnCleanup(x_42, lean_box(0));
+x_48 = l_Lean_Meta_Grind_propagateAndUp___closed__3;
+x_49 = l_Lean_Expr_isConstOf(x_47, x_48);
+lean_dec(x_47);
+if (x_49 == 0)
 {
-uint8_t x_77; 
-lean_dec(x_13);
-lean_dec(x_12);
+lean_object* x_50; lean_object* x_51; 
+lean_dec(x_46);
+lean_dec(x_41);
 lean_dec(x_9);
 lean_dec(x_8);
 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_77 = !lean_is_exclusive(x_18);
-if (x_77 == 0)
-{
-return x_18;
+x_50 = lean_box(0);
+x_51 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_51, 0, x_50);
+lean_ctor_set(x_51, 1, x_36);
+return x_51;
 }
 else
 {
-lean_object* x_78; lean_object* x_79; lean_object* x_80; 
-x_78 = lean_ctor_get(x_18, 0);
-x_79 = lean_ctor_get(x_18, 1);
-lean_inc(x_79);
-lean_inc(x_78);
-lean_dec(x_18);
-x_80 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_80, 0, x_78);
-lean_ctor_set(x_80, 1, x_79);
-return x_80;
+lean_object* x_52; 
+x_52 = l_Lean_Meta_Grind_propagateAndDown___lambda__1(x_1, x_46, x_41, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_36);
+return x_52;
+}
+}
 }
 }
 }
-else
-{
-lean_object* x_81; lean_object* x_82; 
-x_81 = lean_ctor_get(x_14, 1);
-lean_inc(x_81);
-lean_dec(x_14);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_12);
-x_82 = l_Lean_Meta_Grind_mkEqFalseProof(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_81);
-if (lean_obj_tag(x_82) == 0)
-{
-lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; uint8_t x_87; lean_object* x_88; 
-x_83 = lean_ctor_get(x_82, 0);
-lean_inc(x_83);
-x_84 = lean_ctor_get(x_82, 1);
-lean_inc(x_84);
-lean_dec(x_82);
-x_85 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__12;
-lean_inc(x_13);
-x_86 = l_Lean_mkApp3(x_85, x_12, x_13, x_83);
-x_87 = 0;
-x_88 = l_Lean_Meta_Grind_pushEqCore(x_1, x_13, x_86, x_87, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_84);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-return x_88;
 }
 else
 {
-uint8_t x_89; 
-lean_dec(x_13);
-lean_dec(x_12);
+uint8_t x_53; 
 lean_dec(x_9);
 lean_dec(x_8);
 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_89 = !lean_is_exclusive(x_82);
-if (x_89 == 0)
+x_53 = !lean_is_exclusive(x_11);
+if (x_53 == 0)
 {
-return x_82;
+return x_11;
 }
 else
 {
-lean_object* x_90; lean_object* x_91; lean_object* x_92; 
-x_90 = lean_ctor_get(x_82, 0);
-x_91 = lean_ctor_get(x_82, 1);
-lean_inc(x_91);
-lean_inc(x_90);
-lean_dec(x_82);
-x_92 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_92, 0, x_90);
-lean_ctor_set(x_92, 1, x_91);
-return x_92;
+lean_object* x_54; lean_object* x_55; lean_object* x_56; 
+x_54 = lean_ctor_get(x_11, 0);
+x_55 = lean_ctor_get(x_11, 1);
+lean_inc(x_55);
+lean_inc(x_54);
+lean_dec(x_11);
+x_56 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_56, 0, x_54);
+lean_ctor_set(x_56, 1, x_55);
+return x_56;
 }
 }
 }
 }
-else
+static lean_object* _init_l___regBuiltin_Lean_Meta_Grind_propagateAndDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_604____closed__1() {
+_start:
 {
-uint8_t x_93; 
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_1);
-x_93 = !lean_is_exclusive(x_14);
-if (x_93 == 0)
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_propagateAndDown), 10, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateAndDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_604_(lean_object* x_1) {
+_start:
 {
-return x_14;
+lean_object* x_2; uint8_t x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = l_Lean_Meta_Grind_propagateAndUp___closed__3;
+x_3 = 0;
+x_4 = l___regBuiltin_Lean_Meta_Grind_propagateAndDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_604____closed__1;
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_2, x_3, x_4, x_1);
+return x_5;
 }
-else
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__1() {
+_start:
 {
-lean_object* x_94; lean_object* x_95; lean_object* x_96; 
-x_94 = lean_ctor_get(x_14, 0);
-x_95 = lean_ctor_get(x_14, 1);
-lean_inc(x_95);
-lean_inc(x_94);
-lean_dec(x_14);
-x_96 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_96, 0, x_94);
-lean_ctor_set(x_96, 1, x_95);
-return x_96;
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("or_eq_of_eq_true_right", 22, 22);
+return x_1;
 }
 }
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__1;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___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, lean_object* x_10) {
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__3() {
 _start:
 {
-lean_object* x_11; 
-x_11 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_11;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__2;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__1() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__4() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("eq_false_of_or_eq_false_left", 28, 28);
+x_1 = lean_mk_string_unchecked("or_eq_of_eq_true_left", 21, 21);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__2() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__1;
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__4;
 x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
 return x_4;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__3() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__2;
+x_2 = l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__5;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__4() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__7() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("eq_false_of_or_eq_false_right", 29, 29);
+x_1 = lean_mk_string_unchecked("or_eq_of_eq_false_right", 23, 23);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__5() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__8() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__4;
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__7;
 x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
 return x_4;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__6() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__9() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__5;
+x_2 = l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__8;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown(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) {
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__10() {
 _start:
 {
-lean_object* x_11; 
-lean_inc(x_1);
-x_11 = l_Lean_Meta_Grind_isEqFalse(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_11) == 0)
-{
-lean_object* x_12; uint8_t x_13; 
-x_12 = lean_ctor_get(x_11, 0);
-lean_inc(x_12);
-x_13 = lean_unbox(x_12);
-lean_dec(x_12);
-if (x_13 == 0)
-{
-uint8_t x_14; 
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_1);
-x_14 = !lean_is_exclusive(x_11);
-if (x_14 == 0)
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("or_eq_of_eq_false_left", 22, 22);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__11() {
+_start:
 {
-lean_object* x_15; lean_object* x_16; 
-x_15 = lean_ctor_get(x_11, 0);
-lean_dec(x_15);
-x_16 = lean_box(0);
-lean_ctor_set(x_11, 0, x_16);
-return x_11;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__10;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
 }
-else
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__12() {
+_start:
 {
-lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__11;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateOrUp___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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+lean_inc(x_2);
+x_13 = l_Lean_Meta_Grind_isEqFalse(x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
+{
+lean_object* x_14; uint8_t x_15; 
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_unbox(x_14);
+lean_dec(x_14);
+if (x_15 == 0)
+{
+lean_object* x_16; lean_object* x_17; 
+x_16 = lean_ctor_get(x_13, 1);
+lean_inc(x_16);
+lean_dec(x_13);
+lean_inc(x_3);
+x_17 = l_Lean_Meta_Grind_isEqFalse(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_16);
+if (lean_obj_tag(x_17) == 0)
+{
+lean_object* x_18; uint8_t x_19; 
+x_18 = lean_ctor_get(x_17, 0);
+lean_inc(x_18);
+x_19 = lean_unbox(x_18);
+lean_dec(x_18);
+if (x_19 == 0)
+{
+lean_object* x_20; lean_object* x_21; 
+x_20 = lean_ctor_get(x_17, 1);
+lean_inc(x_20);
+lean_dec(x_17);
+lean_inc(x_2);
+x_21 = l_Lean_Meta_Grind_isEqTrue(x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_20);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_object* x_22; uint8_t x_23; 
+x_22 = lean_ctor_get(x_21, 0);
+lean_inc(x_22);
+x_23 = lean_unbox(x_22);
+lean_dec(x_22);
+if (x_23 == 0)
+{
+lean_object* x_24; lean_object* x_25; 
+x_24 = lean_ctor_get(x_21, 1);
+lean_inc(x_24);
+lean_dec(x_21);
+lean_inc(x_3);
+x_25 = l_Lean_Meta_Grind_isEqTrue(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_24);
+if (lean_obj_tag(x_25) == 0)
+{
+lean_object* x_26; uint8_t x_27; 
+x_26 = lean_ctor_get(x_25, 0);
+lean_inc(x_26);
+x_27 = lean_unbox(x_26);
+lean_dec(x_26);
+if (x_27 == 0)
+{
+uint8_t x_28; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_28 = !lean_is_exclusive(x_25);
+if (x_28 == 0)
+{
+lean_object* x_29; lean_object* x_30; 
+x_29 = lean_ctor_get(x_25, 0);
+lean_dec(x_29);
+x_30 = lean_box(0);
+lean_ctor_set(x_25, 0, x_30);
+return x_25;
+}
+else
+{
+lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_31 = lean_ctor_get(x_25, 1);
+lean_inc(x_31);
+lean_dec(x_25);
+x_32 = lean_box(0);
+x_33 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_33, 0, x_32);
+lean_ctor_set(x_33, 1, x_31);
+return x_33;
+}
+}
+else
+{
+lean_object* x_34; lean_object* x_35; 
+x_34 = lean_ctor_get(x_25, 1);
+lean_inc(x_34);
+lean_dec(x_25);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_35 = l_Lean_Meta_Grind_mkEqTrueProof(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_34);
+if (lean_obj_tag(x_35) == 0)
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+x_36 = lean_ctor_get(x_35, 0);
+lean_inc(x_36);
+x_37 = lean_ctor_get(x_35, 1);
+lean_inc(x_37);
+lean_dec(x_35);
+x_38 = l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__3;
+x_39 = l_Lean_mkApp3(x_38, x_2, x_3, x_36);
+x_40 = l_Lean_Meta_Grind_pushEqTrue(x_1, x_39, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_37);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_40;
+}
+else
+{
+uint8_t x_41; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_41 = !lean_is_exclusive(x_35);
+if (x_41 == 0)
+{
+return x_35;
+}
+else
+{
+lean_object* x_42; lean_object* x_43; lean_object* x_44; 
+x_42 = lean_ctor_get(x_35, 0);
+x_43 = lean_ctor_get(x_35, 1);
+lean_inc(x_43);
+lean_inc(x_42);
+lean_dec(x_35);
+x_44 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_44, 0, x_42);
+lean_ctor_set(x_44, 1, x_43);
+return x_44;
+}
+}
+}
+}
+else
+{
+uint8_t x_45; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_45 = !lean_is_exclusive(x_25);
+if (x_45 == 0)
+{
+return x_25;
+}
+else
+{
+lean_object* x_46; lean_object* x_47; lean_object* x_48; 
+x_46 = lean_ctor_get(x_25, 0);
+x_47 = lean_ctor_get(x_25, 1);
+lean_inc(x_47);
+lean_inc(x_46);
+lean_dec(x_25);
+x_48 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_48, 0, x_46);
+lean_ctor_set(x_48, 1, x_47);
+return x_48;
+}
+}
+}
+else
+{
+lean_object* x_49; lean_object* x_50; 
+x_49 = lean_ctor_get(x_21, 1);
+lean_inc(x_49);
+lean_dec(x_21);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_2);
+x_50 = l_Lean_Meta_Grind_mkEqTrueProof(x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_49);
+if (lean_obj_tag(x_50) == 0)
+{
+lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; 
+x_51 = lean_ctor_get(x_50, 0);
+lean_inc(x_51);
+x_52 = lean_ctor_get(x_50, 1);
+lean_inc(x_52);
+lean_dec(x_50);
+x_53 = l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__6;
+x_54 = l_Lean_mkApp3(x_53, x_2, x_3, x_51);
+x_55 = l_Lean_Meta_Grind_pushEqTrue(x_1, x_54, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_52);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_55;
+}
+else
+{
+uint8_t x_56; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_56 = !lean_is_exclusive(x_50);
+if (x_56 == 0)
+{
+return x_50;
+}
+else
+{
+lean_object* x_57; lean_object* x_58; lean_object* x_59; 
+x_57 = lean_ctor_get(x_50, 0);
+x_58 = lean_ctor_get(x_50, 1);
+lean_inc(x_58);
+lean_inc(x_57);
+lean_dec(x_50);
+x_59 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_59, 0, x_57);
+lean_ctor_set(x_59, 1, x_58);
+return x_59;
+}
+}
+}
+}
+else
+{
+uint8_t x_60; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_60 = !lean_is_exclusive(x_21);
+if (x_60 == 0)
+{
+return x_21;
+}
+else
+{
+lean_object* x_61; lean_object* x_62; lean_object* x_63; 
+x_61 = lean_ctor_get(x_21, 0);
+x_62 = lean_ctor_get(x_21, 1);
+lean_inc(x_62);
+lean_inc(x_61);
+lean_dec(x_21);
+x_63 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_63, 0, x_61);
+lean_ctor_set(x_63, 1, x_62);
+return x_63;
+}
+}
+}
+else
+{
+lean_object* x_64; lean_object* x_65; 
+x_64 = lean_ctor_get(x_17, 1);
+lean_inc(x_64);
+lean_dec(x_17);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_65 = l_Lean_Meta_Grind_mkEqFalseProof(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_64);
+if (lean_obj_tag(x_65) == 0)
+{
+lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; uint8_t x_70; lean_object* x_71; 
+x_66 = lean_ctor_get(x_65, 0);
+lean_inc(x_66);
+x_67 = lean_ctor_get(x_65, 1);
+lean_inc(x_67);
+lean_dec(x_65);
+x_68 = l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__9;
+lean_inc(x_2);
+x_69 = l_Lean_mkApp3(x_68, x_2, x_3, x_66);
+x_70 = 0;
+x_71 = l_Lean_Meta_Grind_pushEqCore(x_1, x_2, x_69, x_70, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_67);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_71;
+}
+else
+{
+uint8_t x_72; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_72 = !lean_is_exclusive(x_65);
+if (x_72 == 0)
+{
+return x_65;
+}
+else
+{
+lean_object* x_73; lean_object* x_74; lean_object* x_75; 
+x_73 = lean_ctor_get(x_65, 0);
+x_74 = lean_ctor_get(x_65, 1);
+lean_inc(x_74);
+lean_inc(x_73);
+lean_dec(x_65);
+x_75 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_75, 0, x_73);
+lean_ctor_set(x_75, 1, x_74);
+return x_75;
+}
+}
+}
+}
+else
+{
+uint8_t x_76; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_76 = !lean_is_exclusive(x_17);
+if (x_76 == 0)
+{
+return x_17;
+}
+else
+{
+lean_object* x_77; lean_object* x_78; lean_object* x_79; 
+x_77 = lean_ctor_get(x_17, 0);
+x_78 = lean_ctor_get(x_17, 1);
+lean_inc(x_78);
+lean_inc(x_77);
+lean_dec(x_17);
+x_79 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_79, 0, x_77);
+lean_ctor_set(x_79, 1, x_78);
+return x_79;
+}
+}
+}
+else
+{
+lean_object* x_80; lean_object* x_81; 
+x_80 = lean_ctor_get(x_13, 1);
+lean_inc(x_80);
+lean_dec(x_13);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_2);
+x_81 = l_Lean_Meta_Grind_mkEqFalseProof(x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_80);
+if (lean_obj_tag(x_81) == 0)
+{
+lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; uint8_t x_86; lean_object* x_87; 
+x_82 = lean_ctor_get(x_81, 0);
+lean_inc(x_82);
+x_83 = lean_ctor_get(x_81, 1);
+lean_inc(x_83);
+lean_dec(x_81);
+x_84 = l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__12;
+lean_inc(x_3);
+x_85 = l_Lean_mkApp3(x_84, x_2, x_3, x_82);
+x_86 = 0;
+x_87 = l_Lean_Meta_Grind_pushEqCore(x_1, x_3, x_85, x_86, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_83);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_87;
+}
+else
+{
+uint8_t x_88; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_88 = !lean_is_exclusive(x_81);
+if (x_88 == 0)
+{
+return x_81;
+}
+else
+{
+lean_object* x_89; lean_object* x_90; lean_object* x_91; 
+x_89 = lean_ctor_get(x_81, 0);
+x_90 = lean_ctor_get(x_81, 1);
+lean_inc(x_90);
+lean_inc(x_89);
+lean_dec(x_81);
+x_91 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_91, 0, x_89);
+lean_ctor_set(x_91, 1, x_90);
+return x_91;
+}
+}
+}
+}
+else
+{
+uint8_t x_92; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_92 = !lean_is_exclusive(x_13);
+if (x_92 == 0)
+{
+return x_13;
+}
+else
+{
+lean_object* x_93; lean_object* x_94; lean_object* x_95; 
+x_93 = lean_ctor_get(x_13, 0);
+x_94 = lean_ctor_get(x_13, 1);
+lean_inc(x_94);
+lean_inc(x_93);
+lean_dec(x_13);
+x_95 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_95, 0, x_93);
+lean_ctor_set(x_95, 1, x_94);
+return x_95;
+}
+}
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrUp___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Or", 2, 2);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrUp___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateOrUp___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateOrUp(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:
+{
+lean_object* x_11; uint8_t x_12; 
+lean_inc(x_1);
+x_11 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_12 = l_Lean_Expr_isApp(x_11);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; 
+lean_dec(x_11);
+lean_dec(x_9);
+lean_dec(x_8);
+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_13 = lean_box(0);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_13);
+lean_ctor_set(x_14, 1, x_10);
+return x_14;
+}
+else
+{
+lean_object* x_15; lean_object* x_16; uint8_t x_17; 
+x_15 = l_Lean_Expr_appArg(x_11, lean_box(0));
+x_16 = l_Lean_Expr_appFnCleanup(x_11, lean_box(0));
+x_17 = l_Lean_Expr_isApp(x_16);
+if (x_17 == 0)
+{
+lean_object* x_18; lean_object* x_19; 
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_9);
+lean_dec(x_8);
+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_18 = lean_box(0);
+x_19 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_19, 0, x_18);
+lean_ctor_set(x_19, 1, x_10);
+return x_19;
+}
+else
+{
+lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; 
+x_20 = l_Lean_Expr_appArg(x_16, lean_box(0));
+x_21 = l_Lean_Expr_appFnCleanup(x_16, lean_box(0));
+x_22 = l_Lean_Meta_Grind_propagateOrUp___closed__2;
+x_23 = l_Lean_Expr_isConstOf(x_21, x_22);
+lean_dec(x_21);
+if (x_23 == 0)
+{
+lean_object* x_24; lean_object* x_25; 
+lean_dec(x_20);
+lean_dec(x_15);
+lean_dec(x_9);
+lean_dec(x_8);
+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_24 = lean_box(0);
+x_25 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_25, 0, x_24);
+lean_ctor_set(x_25, 1, x_10);
+return x_25;
+}
+else
+{
+lean_object* x_26; 
+x_26 = l_Lean_Meta_Grind_propagateOrUp___lambda__1(x_1, x_20, x_15, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_26;
+}
+}
+}
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Meta_Grind_propagateOrUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_985____closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_propagateOrUp), 10, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateOrUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_985_(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; uint8_t x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = l_Lean_Meta_Grind_propagateOrUp___closed__2;
+x_3 = 1;
+x_4 = l___regBuiltin_Lean_Meta_Grind_propagateOrUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_985____closed__1;
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_2, x_3, x_4, x_1);
+return x_5;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("eq_false_of_or_eq_false_left", 28, 28);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__1;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__2;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("eq_false_of_or_eq_false_right", 29, 29);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__4;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__6() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__5;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateOrDown___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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_13 = l_Lean_Meta_Grind_mkEqFalseProof(x_1, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; 
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_ctor_get(x_13, 1);
+lean_inc(x_15);
+lean_dec(x_13);
+x_16 = l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__3;
+lean_inc(x_14);
+lean_inc(x_3);
+lean_inc(x_2);
+x_17 = l_Lean_mkApp3(x_16, x_2, x_3, x_14);
+lean_inc(x_2);
+x_18 = l_Lean_Meta_Grind_pushEqFalse(x_2, x_17, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_15);
+x_19 = lean_ctor_get(x_18, 1);
+lean_inc(x_19);
+lean_dec(x_18);
+x_20 = l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__6;
+lean_inc(x_3);
+x_21 = l_Lean_mkApp3(x_20, x_2, x_3, x_14);
+x_22 = l_Lean_Meta_Grind_pushEqFalse(x_3, x_21, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_19);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_22;
+}
+else
+{
+uint8_t x_23; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_23 = !lean_is_exclusive(x_13);
+if (x_23 == 0)
+{
+return x_13;
+}
+else
+{
+lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+x_24 = lean_ctor_get(x_13, 0);
+x_25 = lean_ctor_get(x_13, 1);
+lean_inc(x_25);
+lean_inc(x_24);
+lean_dec(x_13);
+x_26 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_26, 0, x_24);
+lean_ctor_set(x_26, 1, x_25);
+return x_26;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateOrDown(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:
+{
+lean_object* x_11; 
+lean_inc(x_1);
+x_11 = l_Lean_Meta_Grind_isEqFalse(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_11) == 0)
+{
+lean_object* x_12; uint8_t x_13; 
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+x_13 = lean_unbox(x_12);
+lean_dec(x_12);
+if (x_13 == 0)
+{
+uint8_t x_14; 
+lean_dec(x_9);
+lean_dec(x_8);
+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_14 = !lean_is_exclusive(x_11);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; 
+x_15 = lean_ctor_get(x_11, 0);
+lean_dec(x_15);
+x_16 = lean_box(0);
+lean_ctor_set(x_11, 0, x_16);
+return x_11;
+}
+else
+{
+lean_object* x_17; lean_object* x_18; lean_object* x_19; 
 x_17 = lean_ctor_get(x_11, 1);
 lean_inc(x_17);
-lean_dec(x_11);
-x_18 = lean_box(0);
-x_19 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_19, 0, x_18);
-lean_ctor_set(x_19, 1, x_17);
-return x_19;
+lean_dec(x_11);
+x_18 = lean_box(0);
+x_19 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_19, 0, x_18);
+lean_ctor_set(x_19, 1, x_17);
+return x_19;
+}
+}
+else
+{
+uint8_t x_20; 
+x_20 = !lean_is_exclusive(x_11);
+if (x_20 == 0)
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; uint8_t x_24; 
+x_21 = lean_ctor_get(x_11, 1);
+x_22 = lean_ctor_get(x_11, 0);
+lean_dec(x_22);
+lean_inc(x_1);
+x_23 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_24 = l_Lean_Expr_isApp(x_23);
+if (x_24 == 0)
+{
+lean_object* x_25; 
+lean_dec(x_23);
+lean_dec(x_9);
+lean_dec(x_8);
+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_25 = lean_box(0);
+lean_ctor_set(x_11, 0, x_25);
+return x_11;
+}
+else
+{
+lean_object* x_26; lean_object* x_27; uint8_t x_28; 
+x_26 = l_Lean_Expr_appArg(x_23, lean_box(0));
+x_27 = l_Lean_Expr_appFnCleanup(x_23, lean_box(0));
+x_28 = l_Lean_Expr_isApp(x_27);
+if (x_28 == 0)
+{
+lean_object* x_29; 
+lean_dec(x_27);
+lean_dec(x_26);
+lean_dec(x_9);
+lean_dec(x_8);
+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_29 = lean_box(0);
+lean_ctor_set(x_11, 0, x_29);
+return x_11;
+}
+else
+{
+lean_object* x_30; lean_object* x_31; lean_object* x_32; uint8_t x_33; 
+x_30 = l_Lean_Expr_appArg(x_27, lean_box(0));
+x_31 = l_Lean_Expr_appFnCleanup(x_27, lean_box(0));
+x_32 = l_Lean_Meta_Grind_propagateOrUp___closed__2;
+x_33 = l_Lean_Expr_isConstOf(x_31, x_32);
+lean_dec(x_31);
+if (x_33 == 0)
+{
+lean_object* x_34; 
+lean_dec(x_30);
+lean_dec(x_26);
+lean_dec(x_9);
+lean_dec(x_8);
+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_34 = lean_box(0);
+lean_ctor_set(x_11, 0, x_34);
+return x_11;
+}
+else
+{
+lean_object* x_35; 
+lean_free_object(x_11);
+x_35 = l_Lean_Meta_Grind_propagateOrDown___lambda__1(x_1, x_30, x_26, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_21);
+return x_35;
+}
+}
+}
+}
+else
+{
+lean_object* x_36; lean_object* x_37; uint8_t x_38; 
+x_36 = lean_ctor_get(x_11, 1);
+lean_inc(x_36);
+lean_dec(x_11);
+lean_inc(x_1);
+x_37 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_38 = l_Lean_Expr_isApp(x_37);
+if (x_38 == 0)
+{
+lean_object* x_39; lean_object* x_40; 
+lean_dec(x_37);
+lean_dec(x_9);
+lean_dec(x_8);
+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_39 = lean_box(0);
+x_40 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_40, 0, x_39);
+lean_ctor_set(x_40, 1, x_36);
+return x_40;
+}
+else
+{
+lean_object* x_41; lean_object* x_42; uint8_t x_43; 
+x_41 = l_Lean_Expr_appArg(x_37, lean_box(0));
+x_42 = l_Lean_Expr_appFnCleanup(x_37, lean_box(0));
+x_43 = l_Lean_Expr_isApp(x_42);
+if (x_43 == 0)
+{
+lean_object* x_44; lean_object* x_45; 
+lean_dec(x_42);
+lean_dec(x_41);
+lean_dec(x_9);
+lean_dec(x_8);
+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_44 = lean_box(0);
+x_45 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_45, 0, x_44);
+lean_ctor_set(x_45, 1, x_36);
+return x_45;
+}
+else
+{
+lean_object* x_46; lean_object* x_47; lean_object* x_48; uint8_t x_49; 
+x_46 = l_Lean_Expr_appArg(x_42, lean_box(0));
+x_47 = l_Lean_Expr_appFnCleanup(x_42, lean_box(0));
+x_48 = l_Lean_Meta_Grind_propagateOrUp___closed__2;
+x_49 = l_Lean_Expr_isConstOf(x_47, x_48);
+lean_dec(x_47);
+if (x_49 == 0)
+{
+lean_object* x_50; lean_object* x_51; 
+lean_dec(x_46);
+lean_dec(x_41);
+lean_dec(x_9);
+lean_dec(x_8);
+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_50 = lean_box(0);
+x_51 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_51, 0, x_50);
+lean_ctor_set(x_51, 1, x_36);
+return x_51;
+}
+else
+{
+lean_object* x_52; 
+x_52 = l_Lean_Meta_Grind_propagateOrDown___lambda__1(x_1, x_46, x_41, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_36);
+return x_52;
+}
+}
+}
+}
+}
+}
+else
+{
+uint8_t x_53; 
+lean_dec(x_9);
+lean_dec(x_8);
+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_53 = !lean_is_exclusive(x_11);
+if (x_53 == 0)
+{
+return x_11;
+}
+else
+{
+lean_object* x_54; lean_object* x_55; lean_object* x_56; 
+x_54 = lean_ctor_get(x_11, 0);
+x_55 = lean_ctor_get(x_11, 1);
+lean_inc(x_55);
+lean_inc(x_54);
+lean_dec(x_11);
+x_56 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_56, 0, x_54);
+lean_ctor_set(x_56, 1, x_55);
+return x_56;
+}
+}
+}
+}
+static lean_object* _init_l___regBuiltin_Lean_Meta_Grind_propagateOrDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1206____closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_propagateOrDown), 10, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateOrDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1206_(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; uint8_t x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = l_Lean_Meta_Grind_propagateOrUp___closed__2;
+x_3 = 0;
+x_4 = l___regBuiltin_Lean_Meta_Grind_propagateOrDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1206____closed__1;
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_2, x_3, x_4, x_1);
+return x_5;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("not_eq_of_eq_true", 17, 17);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__1;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__2;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("not_eq_of_eq_false", 18, 18);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__4;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__6() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__5;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateNotUp___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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+lean_inc(x_2);
+x_12 = l_Lean_Meta_Grind_isEqFalse(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+if (lean_obj_tag(x_12) == 0)
+{
+lean_object* x_13; uint8_t x_14; 
+x_13 = lean_ctor_get(x_12, 0);
+lean_inc(x_13);
+x_14 = lean_unbox(x_13);
+lean_dec(x_13);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; 
+x_15 = lean_ctor_get(x_12, 1);
+lean_inc(x_15);
+lean_dec(x_12);
+lean_inc(x_2);
+x_16 = l_Lean_Meta_Grind_isEqTrue(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_15);
+if (lean_obj_tag(x_16) == 0)
+{
+lean_object* x_17; uint8_t x_18; 
+x_17 = lean_ctor_get(x_16, 0);
+lean_inc(x_17);
+x_18 = lean_unbox(x_17);
+lean_dec(x_17);
+if (x_18 == 0)
+{
+uint8_t x_19; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_19 = !lean_is_exclusive(x_16);
+if (x_19 == 0)
+{
+lean_object* x_20; lean_object* x_21; 
+x_20 = lean_ctor_get(x_16, 0);
+lean_dec(x_20);
+x_21 = lean_box(0);
+lean_ctor_set(x_16, 0, x_21);
+return x_16;
+}
+else
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_22 = lean_ctor_get(x_16, 1);
+lean_inc(x_22);
+lean_dec(x_16);
+x_23 = lean_box(0);
+x_24 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_24, 0, x_23);
+lean_ctor_set(x_24, 1, x_22);
+return x_24;
+}
+}
+else
+{
+lean_object* x_25; lean_object* x_26; 
+x_25 = lean_ctor_get(x_16, 1);
+lean_inc(x_25);
+lean_dec(x_16);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+lean_inc(x_2);
+x_26 = l_Lean_Meta_Grind_mkEqTrueProof(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_25);
+if (lean_obj_tag(x_26) == 0)
+{
+lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+x_27 = lean_ctor_get(x_26, 0);
+lean_inc(x_27);
+x_28 = lean_ctor_get(x_26, 1);
+lean_inc(x_28);
+lean_dec(x_26);
+x_29 = l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__3;
+x_30 = l_Lean_mkAppB(x_29, x_2, x_27);
+x_31 = l_Lean_Meta_Grind_pushEqFalse(x_1, x_30, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_28);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_31;
+}
+else
+{
+uint8_t x_32; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_32 = !lean_is_exclusive(x_26);
+if (x_32 == 0)
+{
+return x_26;
+}
+else
+{
+lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_33 = lean_ctor_get(x_26, 0);
+x_34 = lean_ctor_get(x_26, 1);
+lean_inc(x_34);
+lean_inc(x_33);
+lean_dec(x_26);
+x_35 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_35, 0, x_33);
+lean_ctor_set(x_35, 1, x_34);
+return x_35;
+}
+}
+}
+}
+else
+{
+uint8_t x_36; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_36 = !lean_is_exclusive(x_16);
+if (x_36 == 0)
+{
+return x_16;
+}
+else
+{
+lean_object* x_37; lean_object* x_38; lean_object* x_39; 
+x_37 = lean_ctor_get(x_16, 0);
+x_38 = lean_ctor_get(x_16, 1);
+lean_inc(x_38);
+lean_inc(x_37);
+lean_dec(x_16);
+x_39 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_39, 0, x_37);
+lean_ctor_set(x_39, 1, x_38);
+return x_39;
+}
+}
+}
+else
+{
+lean_object* x_40; lean_object* x_41; 
+x_40 = lean_ctor_get(x_12, 1);
+lean_inc(x_40);
+lean_dec(x_12);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+lean_inc(x_2);
+x_41 = l_Lean_Meta_Grind_mkEqFalseProof(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_40);
+if (lean_obj_tag(x_41) == 0)
+{
+lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; 
+x_42 = lean_ctor_get(x_41, 0);
+lean_inc(x_42);
+x_43 = lean_ctor_get(x_41, 1);
+lean_inc(x_43);
+lean_dec(x_41);
+x_44 = l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__6;
+x_45 = l_Lean_mkAppB(x_44, x_2, x_42);
+x_46 = l_Lean_Meta_Grind_pushEqTrue(x_1, x_45, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_43);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_46;
+}
+else
+{
+uint8_t x_47; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_47 = !lean_is_exclusive(x_41);
+if (x_47 == 0)
+{
+return x_41;
+}
+else
+{
+lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_48 = lean_ctor_get(x_41, 0);
+x_49 = lean_ctor_get(x_41, 1);
+lean_inc(x_49);
+lean_inc(x_48);
+lean_dec(x_41);
+x_50 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_50, 0, x_48);
+lean_ctor_set(x_50, 1, x_49);
+return x_50;
+}
+}
+}
+}
+else
+{
+uint8_t x_51; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_51 = !lean_is_exclusive(x_12);
+if (x_51 == 0)
+{
+return x_12;
+}
+else
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_52 = lean_ctor_get(x_12, 0);
+x_53 = lean_ctor_get(x_12, 1);
+lean_inc(x_53);
+lean_inc(x_52);
+lean_dec(x_12);
+x_54 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_54, 0, x_52);
+lean_ctor_set(x_54, 1, x_53);
+return x_54;
+}
+}
+}
 }
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotUp___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Not", 3, 3);
+return x_1;
 }
-else
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotUp___closed__2() {
+_start:
 {
-lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; 
-x_20 = lean_ctor_get(x_11, 1);
-lean_inc(x_20);
-lean_dec(x_11);
-x_21 = l_Lean_Expr_appFn_x21(x_1);
-x_22 = l_Lean_Expr_appArg_x21(x_21);
-lean_dec(x_21);
-x_23 = l_Lean_Expr_appArg_x21(x_1);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-x_24 = l_Lean_Meta_Grind_mkEqFalseProof(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_20);
-if (lean_obj_tag(x_24) == 0)
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateNotUp___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateNotUp(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:
 {
-lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; 
-x_25 = lean_ctor_get(x_24, 0);
-lean_inc(x_25);
-x_26 = lean_ctor_get(x_24, 1);
-lean_inc(x_26);
-lean_dec(x_24);
-x_27 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__3;
-lean_inc(x_25);
-lean_inc(x_23);
-lean_inc(x_22);
-x_28 = l_Lean_mkApp3(x_27, x_22, x_23, x_25);
-lean_inc(x_22);
-x_29 = l_Lean_Meta_Grind_pushEqFalse(x_22, x_28, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_26);
-x_30 = lean_ctor_get(x_29, 1);
-lean_inc(x_30);
-lean_dec(x_29);
-x_31 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__6;
-lean_inc(x_23);
-x_32 = l_Lean_mkApp3(x_31, x_22, x_23, x_25);
-x_33 = l_Lean_Meta_Grind_pushEqFalse(x_23, x_32, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_30);
+lean_object* x_11; uint8_t x_12; 
+lean_inc(x_1);
+x_11 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_12 = l_Lean_Expr_isApp(x_11);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; 
+lean_dec(x_11);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_33;
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_13 = lean_box(0);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_13);
+lean_ctor_set(x_14, 1, x_10);
+return x_14;
 }
 else
 {
-uint8_t x_34; 
-lean_dec(x_23);
-lean_dec(x_22);
+lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; 
+x_15 = l_Lean_Expr_appArg(x_11, lean_box(0));
+x_16 = l_Lean_Expr_appFnCleanup(x_11, lean_box(0));
+x_17 = l_Lean_Meta_Grind_propagateNotUp___closed__2;
+x_18 = l_Lean_Expr_isConstOf(x_16, x_17);
+lean_dec(x_16);
+if (x_18 == 0)
+{
+lean_object* x_19; lean_object* x_20; 
+lean_dec(x_15);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-x_34 = !lean_is_exclusive(x_24);
-if (x_34 == 0)
-{
-return x_24;
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_19 = lean_box(0);
+x_20 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_20, 0, x_19);
+lean_ctor_set(x_20, 1, x_10);
+return x_20;
 }
 else
 {
-lean_object* x_35; lean_object* x_36; lean_object* x_37; 
-x_35 = lean_ctor_get(x_24, 0);
-x_36 = lean_ctor_get(x_24, 1);
-lean_inc(x_36);
-lean_inc(x_35);
-lean_dec(x_24);
-x_37 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_37, 0, x_35);
-lean_ctor_set(x_37, 1, x_36);
-return x_37;
+lean_object* x_21; 
+x_21 = l_Lean_Meta_Grind_propagateNotUp___lambda__1(x_1, x_15, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_21;
 }
 }
 }
 }
-else
+static lean_object* _init_l___regBuiltin_Lean_Meta_Grind_propagateNotUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1426____closed__1() {
+_start:
 {
-uint8_t x_38; 
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_1);
-x_38 = !lean_is_exclusive(x_11);
-if (x_38 == 0)
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_propagateNotUp), 10, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateNotUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1426_(lean_object* x_1) {
+_start:
 {
-return x_11;
+lean_object* x_2; uint8_t x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = l_Lean_Meta_Grind_propagateNotUp___closed__2;
+x_3 = 1;
+x_4 = l___regBuiltin_Lean_Meta_Grind_propagateNotUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1426____closed__1;
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_2, x_3, x_4, x_1);
+return x_5;
 }
-else
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__1() {
+_start:
 {
-lean_object* x_39; lean_object* x_40; lean_object* x_41; 
-x_39 = lean_ctor_get(x_11, 0);
-x_40 = lean_ctor_get(x_11, 1);
-lean_inc(x_40);
-lean_inc(x_39);
-lean_dec(x_11);
-x_41 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_41, 0, x_39);
-lean_ctor_set(x_41, 1, x_40);
-return x_41;
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("false_of_not_eq_self", 20, 20);
+return x_1;
 }
 }
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__1;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___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, lean_object* x_10) {
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__3() {
 _start:
 {
-lean_object* x_11; 
-x_11 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_11;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__2;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__1() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__4() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("not_eq_of_eq_true", 17, 17);
+x_1 = lean_mk_string_unchecked("eq_false_of_not_eq_true", 23, 23);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__2() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__1;
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__4;
 x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
 return x_4;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__3() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__2;
+x_2 = l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__5;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__4() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__7() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("not_eq_of_eq_false", 18, 18);
+x_1 = lean_mk_string_unchecked("eq_true_of_not_eq_false", 23, 23);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__5() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__8() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__4;
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__7;
 x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
 return x_4;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__6() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__9() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__5;
+x_2 = l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__8;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp(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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateNotDown___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, lean_object* x_11) {
 _start:
 {
-lean_object* x_11; lean_object* x_12; 
-x_11 = l_Lean_Expr_appArg_x21(x_1);
-lean_inc(x_11);
-x_12 = l_Lean_Meta_Grind_isEqFalse(x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_object* x_12; 
+lean_inc(x_1);
+x_12 = l_Lean_Meta_Grind_isEqFalse(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
 if (lean_obj_tag(x_12) == 0)
 {
 lean_object* x_13; uint8_t x_14; 
@@ -1826,8 +3086,8 @@ lean_object* x_15; lean_object* x_16;
 x_15 = lean_ctor_get(x_12, 1);
 lean_inc(x_15);
 lean_dec(x_12);
-lean_inc(x_11);
-x_16 = l_Lean_Meta_Grind_isEqTrue(x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_15);
+lean_inc(x_1);
+x_16 = l_Lean_Meta_Grind_isEqTrue(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_15);
 if (lean_obj_tag(x_16) == 0)
 {
 lean_object* x_17; uint8_t x_18; 
@@ -1837,982 +3097,1609 @@ x_18 = lean_unbox(x_17);
 lean_dec(x_17);
 if (x_18 == 0)
 {
-uint8_t x_19; 
-lean_dec(x_11);
+lean_object* x_19; lean_object* x_20; 
+x_19 = lean_ctor_get(x_16, 1);
+lean_inc(x_19);
+lean_dec(x_16);
+lean_inc(x_2);
+lean_inc(x_1);
+x_20 = l_Lean_Meta_Grind_isEqv(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_19);
+if (lean_obj_tag(x_20) == 0)
+{
+lean_object* x_21; uint8_t x_22; 
+x_21 = lean_ctor_get(x_20, 0);
+lean_inc(x_21);
+x_22 = lean_unbox(x_21);
+lean_dec(x_21);
+if (x_22 == 0)
+{
+uint8_t x_23; 
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_19 = !lean_is_exclusive(x_16);
-if (x_19 == 0)
+x_23 = !lean_is_exclusive(x_20);
+if (x_23 == 0)
 {
-lean_object* x_20; lean_object* x_21; 
-x_20 = lean_ctor_get(x_16, 0);
-lean_dec(x_20);
-x_21 = lean_box(0);
-lean_ctor_set(x_16, 0, x_21);
-return x_16;
+lean_object* x_24; lean_object* x_25; 
+x_24 = lean_ctor_get(x_20, 0);
+lean_dec(x_24);
+x_25 = lean_box(0);
+lean_ctor_set(x_20, 0, x_25);
+return x_20;
 }
 else
 {
-lean_object* x_22; lean_object* x_23; lean_object* x_24; 
-x_22 = lean_ctor_get(x_16, 1);
-lean_inc(x_22);
-lean_dec(x_16);
-x_23 = lean_box(0);
-x_24 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_24, 0, x_23);
-lean_ctor_set(x_24, 1, x_22);
-return x_24;
+lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_26 = lean_ctor_get(x_20, 1);
+lean_inc(x_26);
+lean_dec(x_20);
+x_27 = lean_box(0);
+x_28 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_28, 0, x_27);
+lean_ctor_set(x_28, 1, x_26);
+return x_28;
 }
 }
 else
 {
-lean_object* x_25; lean_object* x_26; 
-x_25 = lean_ctor_get(x_16, 1);
-lean_inc(x_25);
-lean_dec(x_16);
+lean_object* x_29; lean_object* x_30; 
+x_29 = lean_ctor_get(x_20, 1);
+lean_inc(x_29);
+lean_dec(x_20);
+lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
-lean_inc(x_11);
-x_26 = l_Lean_Meta_Grind_mkEqTrueProof(x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_25);
-if (lean_obj_tag(x_26) == 0)
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+lean_inc(x_2);
+x_30 = lean_grind_mk_eq_proof(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_29);
+if (lean_obj_tag(x_30) == 0)
+{
+lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_31 = lean_ctor_get(x_30, 0);
+lean_inc(x_31);
+x_32 = lean_ctor_get(x_30, 1);
+lean_inc(x_32);
+lean_dec(x_30);
+x_33 = l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__3;
+x_34 = l_Lean_mkAppB(x_33, x_2, x_31);
+x_35 = l_Lean_Meta_Grind_closeGoal(x_34, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_32);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_35;
+}
+else
 {
-lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; 
-x_27 = lean_ctor_get(x_26, 0);
-lean_inc(x_27);
-x_28 = lean_ctor_get(x_26, 1);
-lean_inc(x_28);
-lean_dec(x_26);
-x_29 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__3;
-x_30 = l_Lean_mkAppB(x_29, x_11, x_27);
-x_31 = l_Lean_Meta_Grind_pushEqFalse(x_1, x_30, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_28);
+uint8_t x_36; 
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_31;
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_36 = !lean_is_exclusive(x_30);
+if (x_36 == 0)
+{
+return x_30;
 }
 else
 {
-uint8_t x_32; 
-lean_dec(x_11);
+lean_object* x_37; lean_object* x_38; lean_object* x_39; 
+x_37 = lean_ctor_get(x_30, 0);
+x_38 = lean_ctor_get(x_30, 1);
+lean_inc(x_38);
+lean_inc(x_37);
+lean_dec(x_30);
+x_39 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_39, 0, x_37);
+lean_ctor_set(x_39, 1, x_38);
+return x_39;
+}
+}
+}
+}
+else
+{
+uint8_t x_40; 
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_32 = !lean_is_exclusive(x_26);
-if (x_32 == 0)
+x_40 = !lean_is_exclusive(x_20);
+if (x_40 == 0)
 {
-return x_26;
+return x_20;
 }
 else
 {
-lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_33 = lean_ctor_get(x_26, 0);
-x_34 = lean_ctor_get(x_26, 1);
-lean_inc(x_34);
-lean_inc(x_33);
-lean_dec(x_26);
-x_35 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_35, 0, x_33);
-lean_ctor_set(x_35, 1, x_34);
-return x_35;
+lean_object* x_41; lean_object* x_42; lean_object* x_43; 
+x_41 = lean_ctor_get(x_20, 0);
+x_42 = lean_ctor_get(x_20, 1);
+lean_inc(x_42);
+lean_inc(x_41);
+lean_dec(x_20);
+x_43 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_43, 0, x_41);
+lean_ctor_set(x_43, 1, x_42);
+return x_43;
+}
+}
+}
+else
+{
+lean_object* x_44; lean_object* x_45; 
+x_44 = lean_ctor_get(x_16, 1);
+lean_inc(x_44);
+lean_dec(x_16);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_45 = l_Lean_Meta_Grind_mkEqTrueProof(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_44);
+if (lean_obj_tag(x_45) == 0)
+{
+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_45, 0);
+lean_inc(x_46);
+x_47 = lean_ctor_get(x_45, 1);
+lean_inc(x_47);
+lean_dec(x_45);
+x_48 = l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__6;
+lean_inc(x_2);
+x_49 = l_Lean_mkAppB(x_48, x_2, x_46);
+x_50 = l_Lean_Meta_Grind_pushEqFalse(x_2, x_49, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_47);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_50;
+}
+else
+{
+uint8_t x_51; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_51 = !lean_is_exclusive(x_45);
+if (x_51 == 0)
+{
+return x_45;
+}
+else
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_52 = lean_ctor_get(x_45, 0);
+x_53 = lean_ctor_get(x_45, 1);
+lean_inc(x_53);
+lean_inc(x_52);
+lean_dec(x_45);
+x_54 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_54, 0, x_52);
+lean_ctor_set(x_54, 1, x_53);
+return x_54;
 }
 }
 }
 }
 else
 {
-uint8_t x_36; 
-lean_dec(x_11);
+uint8_t x_55; 
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_36 = !lean_is_exclusive(x_16);
-if (x_36 == 0)
+x_55 = !lean_is_exclusive(x_16);
+if (x_55 == 0)
 {
 return x_16;
 }
 else
 {
-lean_object* x_37; lean_object* x_38; lean_object* x_39; 
-x_37 = lean_ctor_get(x_16, 0);
-x_38 = lean_ctor_get(x_16, 1);
-lean_inc(x_38);
-lean_inc(x_37);
+lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+x_56 = lean_ctor_get(x_16, 0);
+x_57 = lean_ctor_get(x_16, 1);
+lean_inc(x_57);
+lean_inc(x_56);
 lean_dec(x_16);
-x_39 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_39, 0, x_37);
-lean_ctor_set(x_39, 1, x_38);
-return x_39;
+x_58 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_58, 0, x_56);
+lean_ctor_set(x_58, 1, x_57);
+return x_58;
 }
 }
 }
 else
 {
-lean_object* x_40; lean_object* x_41; 
-x_40 = lean_ctor_get(x_12, 1);
-lean_inc(x_40);
+lean_object* x_59; lean_object* x_60; 
+x_59 = lean_ctor_get(x_12, 1);
+lean_inc(x_59);
 lean_dec(x_12);
+lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
-lean_inc(x_11);
-x_41 = l_Lean_Meta_Grind_mkEqFalseProof(x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_40);
-if (lean_obj_tag(x_41) == 0)
-{
-lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; 
-x_42 = lean_ctor_get(x_41, 0);
-lean_inc(x_42);
-x_43 = lean_ctor_get(x_41, 1);
-lean_inc(x_43);
-lean_dec(x_41);
-x_44 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__6;
-x_45 = l_Lean_mkAppB(x_44, x_11, x_42);
-x_46 = l_Lean_Meta_Grind_pushEqTrue(x_1, x_45, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_43);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_60 = l_Lean_Meta_Grind_mkEqFalseProof(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_59);
+if (lean_obj_tag(x_60) == 0)
+{
+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_60, 0);
+lean_inc(x_61);
+x_62 = lean_ctor_get(x_60, 1);
+lean_inc(x_62);
+lean_dec(x_60);
+x_63 = l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__9;
+lean_inc(x_2);
+x_64 = l_Lean_mkAppB(x_63, x_2, x_61);
+x_65 = l_Lean_Meta_Grind_pushEqTrue(x_2, x_64, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_62);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_46;
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_65;
 }
 else
 {
-uint8_t x_47; 
-lean_dec(x_11);
+uint8_t x_66; 
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-lean_dec(x_1);
-x_47 = !lean_is_exclusive(x_41);
-if (x_47 == 0)
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_66 = !lean_is_exclusive(x_60);
+if (x_66 == 0)
 {
-return x_41;
+return x_60;
 }
 else
 {
-lean_object* x_48; lean_object* x_49; lean_object* x_50; 
-x_48 = lean_ctor_get(x_41, 0);
-x_49 = lean_ctor_get(x_41, 1);
-lean_inc(x_49);
-lean_inc(x_48);
-lean_dec(x_41);
-x_50 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_50, 0, x_48);
-lean_ctor_set(x_50, 1, x_49);
-return x_50;
+lean_object* x_67; lean_object* x_68; lean_object* x_69; 
+x_67 = lean_ctor_get(x_60, 0);
+x_68 = lean_ctor_get(x_60, 1);
+lean_inc(x_68);
+lean_inc(x_67);
+lean_dec(x_60);
+x_69 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_69, 0, x_67);
+lean_ctor_set(x_69, 1, x_68);
+return x_69;
 }
 }
 }
 }
 else
 {
-uint8_t x_51; 
-lean_dec(x_11);
+uint8_t x_70; 
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_51 = !lean_is_exclusive(x_12);
-if (x_51 == 0)
+x_70 = !lean_is_exclusive(x_12);
+if (x_70 == 0)
 {
 return x_12;
 }
 else
 {
-lean_object* x_52; lean_object* x_53; lean_object* x_54; 
-x_52 = lean_ctor_get(x_12, 0);
-x_53 = lean_ctor_get(x_12, 1);
-lean_inc(x_53);
-lean_inc(x_52);
+lean_object* x_71; lean_object* x_72; lean_object* x_73; 
+x_71 = lean_ctor_get(x_12, 0);
+x_72 = lean_ctor_get(x_12, 1);
+lean_inc(x_72);
+lean_inc(x_71);
 lean_dec(x_12);
-x_54 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_54, 0, x_52);
-lean_ctor_set(x_54, 1, x_53);
-return x_54;
+x_73 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_73, 0, x_71);
+lean_ctor_set(x_73, 1, x_72);
+return x_73;
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___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, lean_object* x_10) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateNotDown(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:
 {
-lean_object* x_11; 
-x_11 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_object* x_11; uint8_t x_12; 
+lean_inc(x_1);
+x_11 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_12 = l_Lean_Expr_isApp(x_11);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; 
+lean_dec(x_11);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-return x_11;
+lean_dec(x_1);
+x_13 = lean_box(0);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_13);
+lean_ctor_set(x_14, 1, x_10);
+return x_14;
+}
+else
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; 
+x_15 = l_Lean_Expr_appArg(x_11, lean_box(0));
+x_16 = l_Lean_Expr_appFnCleanup(x_11, lean_box(0));
+x_17 = l_Lean_Meta_Grind_propagateNotUp___closed__2;
+x_18 = l_Lean_Expr_isConstOf(x_16, x_17);
+lean_dec(x_16);
+if (x_18 == 0)
+{
+lean_object* x_19; lean_object* x_20; 
+lean_dec(x_15);
+lean_dec(x_9);
+lean_dec(x_8);
+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_19 = lean_box(0);
+x_20 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_20, 0, x_19);
+lean_ctor_set(x_20, 1, x_10);
+return x_20;
+}
+else
+{
+lean_object* x_21; 
+x_21 = l_Lean_Meta_Grind_propagateNotDown___lambda__1(x_1, x_15, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_21;
+}
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__1() {
+}
+static lean_object* _init_l___regBuiltin_Lean_Meta_Grind_propagateNotDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1706____closed__1() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("eq_false_of_not_eq_true", 23, 23);
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_propagateNotDown), 10, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateNotDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1706_(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; uint8_t x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = l_Lean_Meta_Grind_propagateNotUp___closed__2;
+x_3 = 0;
+x_4 = l___regBuiltin_Lean_Meta_Grind_propagateNotDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1706____closed__1;
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_2, x_3, x_4, x_1);
+return x_5;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("eq_true", 7, 7);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__2;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("eq_eq_of_eq_true_right", 22, 22);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__2() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__1;
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__4;
 x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
 return x_4;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__3() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__2;
+x_2 = l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__5;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__4() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__7() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("eq_true_of_not_eq_false", 23, 23);
+x_1 = lean_mk_string_unchecked("eq_eq_of_eq_true_left", 21, 21);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__5() {
-_start:
+static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__8() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1;
+x_2 = l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2;
+x_3 = l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__7;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__9() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__8;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateEqUp___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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+lean_inc(x_2);
+x_13 = l_Lean_Meta_Grind_isEqTrue(x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
+{
+lean_object* x_14; uint8_t x_15; 
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_unbox(x_14);
+lean_dec(x_14);
+if (x_15 == 0)
+{
+lean_object* x_16; lean_object* x_17; 
+x_16 = lean_ctor_get(x_13, 1);
+lean_inc(x_16);
+lean_dec(x_13);
+lean_inc(x_3);
+x_17 = l_Lean_Meta_Grind_isEqTrue(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_16);
+if (lean_obj_tag(x_17) == 0)
+{
+lean_object* x_18; uint8_t x_19; 
+x_18 = lean_ctor_get(x_17, 0);
+lean_inc(x_18);
+x_19 = lean_unbox(x_18);
+lean_dec(x_18);
+if (x_19 == 0)
+{
+lean_object* x_20; lean_object* x_21; 
+x_20 = lean_ctor_get(x_17, 1);
+lean_inc(x_20);
+lean_dec(x_17);
+lean_inc(x_3);
+lean_inc(x_2);
+x_21 = l_Lean_Meta_Grind_isEqv(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_20);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_object* x_22; uint8_t x_23; 
+x_22 = lean_ctor_get(x_21, 0);
+lean_inc(x_22);
+x_23 = lean_unbox(x_22);
+lean_dec(x_22);
+if (x_23 == 0)
+{
+uint8_t x_24; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_24 = !lean_is_exclusive(x_21);
+if (x_24 == 0)
+{
+lean_object* x_25; lean_object* x_26; 
+x_25 = lean_ctor_get(x_21, 0);
+lean_dec(x_25);
+x_26 = lean_box(0);
+lean_ctor_set(x_21, 0, x_26);
+return x_21;
+}
+else
+{
+lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_27 = lean_ctor_get(x_21, 1);
+lean_inc(x_27);
+lean_dec(x_21);
+x_28 = lean_box(0);
+x_29 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_29, 0, x_28);
+lean_ctor_set(x_29, 1, x_27);
+return x_29;
+}
+}
+else
+{
+lean_object* x_30; lean_object* x_31; 
+x_30 = lean_ctor_get(x_21, 1);
+lean_inc(x_30);
+lean_dec(x_21);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_31 = lean_grind_mk_eq_proof(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_30);
+if (lean_obj_tag(x_31) == 0)
+{
+lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_32 = lean_ctor_get(x_31, 0);
+lean_inc(x_32);
+x_33 = lean_ctor_get(x_31, 1);
+lean_inc(x_33);
+lean_dec(x_31);
+x_34 = l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__3;
+lean_inc(x_1);
+x_35 = l_Lean_mkAppB(x_34, x_1, x_32);
+x_36 = l_Lean_Meta_Grind_pushEqTrue(x_1, x_35, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_33);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_36;
+}
+else
+{
+uint8_t x_37; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_1);
+x_37 = !lean_is_exclusive(x_31);
+if (x_37 == 0)
+{
+return x_31;
+}
+else
 {
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__4;
-x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
-return x_4;
+lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+x_38 = lean_ctor_get(x_31, 0);
+x_39 = lean_ctor_get(x_31, 1);
+lean_inc(x_39);
+lean_inc(x_38);
+lean_dec(x_31);
+x_40 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_40, 0, x_38);
+lean_ctor_set(x_40, 1, x_39);
+return x_40;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__6() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__5;
-x_3 = l_Lean_Expr_const___override(x_2, x_1);
-return x_3;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown(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:
-{
-lean_object* x_11; 
-lean_inc(x_1);
-x_11 = l_Lean_Meta_Grind_isEqFalse(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_11) == 0)
-{
-lean_object* x_12; uint8_t x_13; 
-x_12 = lean_ctor_get(x_11, 0);
-lean_inc(x_12);
-x_13 = lean_unbox(x_12);
-lean_dec(x_12);
-if (x_13 == 0)
+else
 {
-lean_object* x_14; lean_object* x_15; 
-x_14 = lean_ctor_get(x_11, 1);
-lean_inc(x_14);
+uint8_t x_41; 
 lean_dec(x_11);
-lean_inc(x_1);
-x_15 = l_Lean_Meta_Grind_isEqTrue(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_14);
-if (lean_obj_tag(x_15) == 0)
-{
-lean_object* x_16; uint8_t x_17; 
-x_16 = lean_ctor_get(x_15, 0);
-lean_inc(x_16);
-x_17 = lean_unbox(x_16);
-lean_dec(x_16);
-if (x_17 == 0)
-{
-uint8_t x_18; 
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_18 = !lean_is_exclusive(x_15);
-if (x_18 == 0)
+x_41 = !lean_is_exclusive(x_21);
+if (x_41 == 0)
 {
-lean_object* x_19; lean_object* x_20; 
-x_19 = lean_ctor_get(x_15, 0);
-lean_dec(x_19);
-x_20 = lean_box(0);
-lean_ctor_set(x_15, 0, x_20);
-return x_15;
+return x_21;
 }
 else
 {
-lean_object* x_21; lean_object* x_22; lean_object* x_23; 
-x_21 = lean_ctor_get(x_15, 1);
-lean_inc(x_21);
-lean_dec(x_15);
-x_22 = lean_box(0);
-x_23 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_23, 0, x_22);
-lean_ctor_set(x_23, 1, x_21);
-return x_23;
+lean_object* x_42; lean_object* x_43; lean_object* x_44; 
+x_42 = lean_ctor_get(x_21, 0);
+x_43 = lean_ctor_get(x_21, 1);
+lean_inc(x_43);
+lean_inc(x_42);
+lean_dec(x_21);
+x_44 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_44, 0, x_42);
+lean_ctor_set(x_44, 1, x_43);
+return x_44;
+}
 }
 }
 else
 {
-lean_object* x_24; lean_object* x_25; lean_object* x_26; 
-x_24 = lean_ctor_get(x_15, 1);
-lean_inc(x_24);
-lean_dec(x_15);
-x_25 = l_Lean_Expr_appArg_x21(x_1);
+lean_object* x_45; lean_object* x_46; 
+x_45 = lean_ctor_get(x_17, 1);
+lean_inc(x_45);
+lean_dec(x_17);
+lean_inc(x_11);
+lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
-x_26 = l_Lean_Meta_Grind_mkEqTrueProof(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_24);
-if (lean_obj_tag(x_26) == 0)
-{
-lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; 
-x_27 = lean_ctor_get(x_26, 0);
-lean_inc(x_27);
-x_28 = lean_ctor_get(x_26, 1);
-lean_inc(x_28);
-lean_dec(x_26);
-x_29 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__3;
-lean_inc(x_25);
-x_30 = l_Lean_mkAppB(x_29, x_25, x_27);
-x_31 = l_Lean_Meta_Grind_pushEqFalse(x_25, x_30, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_28);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_46 = l_Lean_Meta_Grind_mkEqTrueProof(x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_45);
+if (lean_obj_tag(x_46) == 0)
+{
+lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; uint8_t x_51; lean_object* x_52; 
+x_47 = lean_ctor_get(x_46, 0);
+lean_inc(x_47);
+x_48 = lean_ctor_get(x_46, 1);
+lean_inc(x_48);
+lean_dec(x_46);
+x_49 = l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__6;
+lean_inc(x_2);
+x_50 = l_Lean_mkApp3(x_49, x_2, x_3, x_47);
+x_51 = 0;
+x_52 = l_Lean_Meta_Grind_pushEqCore(x_1, x_2, x_50, x_51, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_48);
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_31;
+lean_dec(x_5);
+lean_dec(x_4);
+return x_52;
 }
 else
 {
-uint8_t x_32; 
-lean_dec(x_25);
+uint8_t x_53; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-x_32 = !lean_is_exclusive(x_26);
-if (x_32 == 0)
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_53 = !lean_is_exclusive(x_46);
+if (x_53 == 0)
 {
-return x_26;
+return x_46;
 }
 else
 {
-lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_33 = lean_ctor_get(x_26, 0);
-x_34 = lean_ctor_get(x_26, 1);
-lean_inc(x_34);
-lean_inc(x_33);
-lean_dec(x_26);
-x_35 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_35, 0, x_33);
-lean_ctor_set(x_35, 1, x_34);
-return x_35;
+lean_object* x_54; lean_object* x_55; lean_object* x_56; 
+x_54 = lean_ctor_get(x_46, 0);
+x_55 = lean_ctor_get(x_46, 1);
+lean_inc(x_55);
+lean_inc(x_54);
+lean_dec(x_46);
+x_56 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_56, 0, x_54);
+lean_ctor_set(x_56, 1, x_55);
+return x_56;
 }
 }
 }
 }
 else
 {
-uint8_t x_36; 
+uint8_t x_57; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_36 = !lean_is_exclusive(x_15);
-if (x_36 == 0)
+x_57 = !lean_is_exclusive(x_17);
+if (x_57 == 0)
 {
-return x_15;
+return x_17;
 }
 else
 {
-lean_object* x_37; lean_object* x_38; lean_object* x_39; 
-x_37 = lean_ctor_get(x_15, 0);
-x_38 = lean_ctor_get(x_15, 1);
-lean_inc(x_38);
-lean_inc(x_37);
-lean_dec(x_15);
-x_39 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_39, 0, x_37);
-lean_ctor_set(x_39, 1, x_38);
-return x_39;
+lean_object* x_58; lean_object* x_59; lean_object* x_60; 
+x_58 = lean_ctor_get(x_17, 0);
+x_59 = lean_ctor_get(x_17, 1);
+lean_inc(x_59);
+lean_inc(x_58);
+lean_dec(x_17);
+x_60 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_60, 0, x_58);
+lean_ctor_set(x_60, 1, x_59);
+return x_60;
 }
 }
 }
 else
 {
-lean_object* x_40; lean_object* x_41; lean_object* x_42; 
-x_40 = lean_ctor_get(x_11, 1);
-lean_inc(x_40);
-lean_dec(x_11);
-x_41 = l_Lean_Expr_appArg_x21(x_1);
+lean_object* x_61; lean_object* x_62; 
+x_61 = lean_ctor_get(x_13, 1);
+lean_inc(x_61);
+lean_dec(x_13);
+lean_inc(x_11);
+lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
-x_42 = l_Lean_Meta_Grind_mkEqFalseProof(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_40);
-if (lean_obj_tag(x_42) == 0)
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_2);
+x_62 = l_Lean_Meta_Grind_mkEqTrueProof(x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_61);
+if (lean_obj_tag(x_62) == 0)
+{
+lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; uint8_t x_67; lean_object* x_68; 
+x_63 = lean_ctor_get(x_62, 0);
+lean_inc(x_63);
+x_64 = lean_ctor_get(x_62, 1);
+lean_inc(x_64);
+lean_dec(x_62);
+x_65 = l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__9;
+lean_inc(x_3);
+x_66 = l_Lean_mkApp3(x_65, x_2, x_3, x_63);
+x_67 = 0;
+x_68 = l_Lean_Meta_Grind_pushEqCore(x_1, x_3, x_66, x_67, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_64);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_68;
+}
+else
 {
-lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; 
-x_43 = lean_ctor_get(x_42, 0);
-lean_inc(x_43);
-x_44 = lean_ctor_get(x_42, 1);
-lean_inc(x_44);
-lean_dec(x_42);
-x_45 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__6;
-lean_inc(x_41);
-x_46 = l_Lean_mkAppB(x_45, x_41, x_43);
-x_47 = l_Lean_Meta_Grind_pushEqTrue(x_41, x_46, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_44);
+uint8_t x_69; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_47;
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_69 = !lean_is_exclusive(x_62);
+if (x_69 == 0)
+{
+return x_62;
 }
 else
 {
-uint8_t x_48; 
-lean_dec(x_41);
+lean_object* x_70; lean_object* x_71; lean_object* x_72; 
+x_70 = lean_ctor_get(x_62, 0);
+x_71 = lean_ctor_get(x_62, 1);
+lean_inc(x_71);
+lean_inc(x_70);
+lean_dec(x_62);
+x_72 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_72, 0, x_70);
+lean_ctor_set(x_72, 1, x_71);
+return x_72;
+}
+}
+}
+}
+else
+{
+uint8_t x_73; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-x_48 = !lean_is_exclusive(x_42);
-if (x_48 == 0)
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_73 = !lean_is_exclusive(x_13);
+if (x_73 == 0)
 {
-return x_42;
+return x_13;
 }
 else
 {
-lean_object* x_49; lean_object* x_50; lean_object* x_51; 
-x_49 = lean_ctor_get(x_42, 0);
-x_50 = lean_ctor_get(x_42, 1);
-lean_inc(x_50);
-lean_inc(x_49);
-lean_dec(x_42);
-x_51 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_51, 0, x_49);
-lean_ctor_set(x_51, 1, x_50);
-return x_51;
+lean_object* x_74; lean_object* x_75; lean_object* x_76; 
+x_74 = lean_ctor_get(x_13, 0);
+x_75 = lean_ctor_get(x_13, 1);
+lean_inc(x_75);
+lean_inc(x_74);
+lean_dec(x_13);
+x_76 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_76, 0, x_74);
+lean_ctor_set(x_76, 1, x_75);
+return x_76;
+}
+}
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Eq", 2, 2);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateEqUp___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
 }
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateEqUp(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:
+{
+lean_object* x_11; uint8_t x_12; 
+lean_inc(x_1);
+x_11 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_12 = l_Lean_Expr_isApp(x_11);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; 
+lean_dec(x_11);
+lean_dec(x_9);
+lean_dec(x_8);
+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_13 = lean_box(0);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_13);
+lean_ctor_set(x_14, 1, x_10);
+return x_14;
 }
+else
+{
+lean_object* x_15; lean_object* x_16; uint8_t x_17; 
+x_15 = l_Lean_Expr_appArg(x_11, lean_box(0));
+x_16 = l_Lean_Expr_appFnCleanup(x_11, lean_box(0));
+x_17 = l_Lean_Expr_isApp(x_16);
+if (x_17 == 0)
+{
+lean_object* x_18; lean_object* x_19; 
+lean_dec(x_16);
+lean_dec(x_15);
+lean_dec(x_9);
+lean_dec(x_8);
+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_18 = lean_box(0);
+x_19 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_19, 0, x_18);
+lean_ctor_set(x_19, 1, x_10);
+return x_19;
 }
+else
+{
+lean_object* x_20; lean_object* x_21; uint8_t x_22; 
+x_20 = l_Lean_Expr_appArg(x_16, lean_box(0));
+x_21 = l_Lean_Expr_appFnCleanup(x_16, lean_box(0));
+x_22 = l_Lean_Expr_isApp(x_21);
+if (x_22 == 0)
+{
+lean_object* x_23; lean_object* x_24; 
+lean_dec(x_21);
+lean_dec(x_20);
+lean_dec(x_15);
+lean_dec(x_9);
+lean_dec(x_8);
+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_23 = lean_box(0);
+x_24 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_24, 0, x_23);
+lean_ctor_set(x_24, 1, x_10);
+return x_24;
 }
 else
 {
-uint8_t x_52; 
+lean_object* x_25; lean_object* x_26; uint8_t x_27; 
+x_25 = l_Lean_Expr_appFnCleanup(x_21, lean_box(0));
+x_26 = l_Lean_Meta_Grind_propagateEqUp___closed__2;
+x_27 = l_Lean_Expr_isConstOf(x_25, x_26);
+lean_dec(x_25);
+if (x_27 == 0)
+{
+lean_object* x_28; lean_object* x_29; 
+lean_dec(x_20);
+lean_dec(x_15);
 lean_dec(x_9);
 lean_dec(x_8);
 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_52 = !lean_is_exclusive(x_11);
-if (x_52 == 0)
-{
-return x_11;
+x_28 = lean_box(0);
+x_29 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_29, 0, x_28);
+lean_ctor_set(x_29, 1, x_10);
+return x_29;
 }
 else
 {
-lean_object* x_53; lean_object* x_54; lean_object* x_55; 
-x_53 = lean_ctor_get(x_11, 0);
-x_54 = lean_ctor_get(x_11, 1);
-lean_inc(x_54);
-lean_inc(x_53);
-lean_dec(x_11);
-x_55 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_55, 0, x_53);
-lean_ctor_set(x_55, 1, x_54);
-return x_55;
+lean_object* x_30; 
+x_30 = l_Lean_Meta_Grind_propagateEqUp___lambda__1(x_1, x_20, x_15, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_30;
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___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, lean_object* x_10) {
-_start:
-{
-lean_object* x_11; 
-x_11 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_11;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___closed__1() {
+static lean_object* _init_l___regBuiltin_Lean_Meta_Grind_propagateEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2058____closed__1() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("of_eq_true", 10, 10);
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_propagateEqUp), 10, 0);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___closed__2() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_propagateEqUp___closed__1;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___closed__3() {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2058_(lean_object* x_1) {
 _start:
 {
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
+lean_object* x_2; uint8_t x_3; lean_object* x_4; lean_object* x_5; 
 x_2 = l_Lean_Meta_Grind_propagateEqUp___closed__2;
-x_3 = l_Lean_Expr_const___override(x_2, x_1);
-return x_3;
+x_3 = 1;
+x_4 = l___regBuiltin_Lean_Meta_Grind_propagateEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2058____closed__1;
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_2, x_3, x_4, x_1);
+return x_5;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___closed__4() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__1() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("eq_eq_of_eq_true_right", 22, 22);
+x_1 = lean_mk_string_unchecked("of_eq_true", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___closed__5() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__2() {
 _start:
 {
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l_Lean_Meta_Grind_propagateEqUp___closed__4;
-x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
-return x_4;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___closed__6() {
+static lean_object* _init_l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_propagateEqUp___closed__5;
+x_2 = l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__2;
 x_3 = l_Lean_Expr_const___override(x_2, x_1);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___closed__7() {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateEqDown___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, lean_object* x_11, lean_object* x_12) {
 _start:
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("eq_eq_of_eq_true_left", 21, 21);
-return x_1;
+lean_object* x_13; 
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_1);
+x_13 = l_Lean_Meta_Grind_mkEqTrueProof(x_1, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; lean_object* x_19; 
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_ctor_get(x_13, 1);
+lean_inc(x_15);
+lean_dec(x_13);
+x_16 = l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__3;
+x_17 = l_Lean_mkAppB(x_16, x_1, x_14);
+x_18 = 0;
+x_19 = l_Lean_Meta_Grind_pushEqCore(x_2, x_3, x_17, x_18, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_15);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+return x_19;
 }
+else
+{
+uint8_t x_20; 
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_20 = !lean_is_exclusive(x_13);
+if (x_20 == 0)
+{
+return x_13;
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___closed__8() {
-_start:
+else
 {
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2;
-x_3 = l_Lean_Meta_Grind_propagateEqUp___closed__7;
-x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
-return x_4;
+lean_object* x_21; lean_object* x_22; lean_object* x_23; 
+x_21 = lean_ctor_get(x_13, 0);
+x_22 = lean_ctor_get(x_13, 1);
+lean_inc(x_22);
+lean_inc(x_21);
+lean_dec(x_13);
+x_23 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_23, 0, x_21);
+lean_ctor_set(x_23, 1, x_22);
+return x_23;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateEqUp___closed__9() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_propagateEqUp___closed__8;
-x_3 = l_Lean_Expr_const___override(x_2, x_1);
-return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateEqUp(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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateEqDown(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:
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; 
-x_11 = l_Lean_Expr_appFn_x21(x_1);
-x_12 = l_Lean_Expr_appArg_x21(x_11);
-lean_dec(x_11);
-x_13 = l_Lean_Expr_appArg_x21(x_1);
+lean_object* x_11; 
+lean_inc(x_1);
+x_11 = l_Lean_Meta_Grind_isEqTrue(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_11) == 0)
+{
+lean_object* x_12; uint8_t x_13; 
+x_12 = lean_ctor_get(x_11, 0);
 lean_inc(x_12);
-x_14 = l_Lean_Meta_Grind_isEqTrue(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_14) == 0)
+x_13 = lean_unbox(x_12);
+lean_dec(x_12);
+if (x_13 == 0)
 {
-lean_object* x_15; uint8_t x_16; 
-x_15 = lean_ctor_get(x_14, 0);
-lean_inc(x_15);
-x_16 = lean_unbox(x_15);
+uint8_t x_14; 
+lean_dec(x_9);
+lean_dec(x_8);
+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_14 = !lean_is_exclusive(x_11);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; 
+x_15 = lean_ctor_get(x_11, 0);
 lean_dec(x_15);
-if (x_16 == 0)
+x_16 = lean_box(0);
+lean_ctor_set(x_11, 0, x_16);
+return x_11;
+}
+else
 {
-lean_object* x_17; lean_object* x_18; 
-x_17 = lean_ctor_get(x_14, 1);
+lean_object* x_17; lean_object* x_18; lean_object* x_19; 
+x_17 = lean_ctor_get(x_11, 1);
 lean_inc(x_17);
-lean_dec(x_14);
-lean_inc(x_13);
-x_18 = l_Lean_Meta_Grind_isEqTrue(x_13, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_17);
-if (lean_obj_tag(x_18) == 0)
+lean_dec(x_11);
+x_18 = lean_box(0);
+x_19 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_19, 0, x_18);
+lean_ctor_set(x_19, 1, x_17);
+return x_19;
+}
+}
+else
 {
-lean_object* x_19; uint8_t x_20; 
-x_19 = lean_ctor_get(x_18, 0);
-lean_inc(x_19);
-x_20 = lean_unbox(x_19);
-lean_dec(x_19);
+uint8_t x_20; 
+x_20 = !lean_is_exclusive(x_11);
 if (x_20 == 0)
 {
-lean_object* x_21; lean_object* x_22; 
-x_21 = lean_ctor_get(x_18, 1);
-lean_inc(x_21);
-lean_dec(x_18);
-lean_inc(x_13);
-lean_inc(x_12);
-x_22 = l_Lean_Meta_Grind_isEqv(x_12, x_13, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_21);
-if (lean_obj_tag(x_22) == 0)
-{
-lean_object* x_23; uint8_t x_24; 
-x_23 = lean_ctor_get(x_22, 0);
-lean_inc(x_23);
-x_24 = lean_unbox(x_23);
-lean_dec(x_23);
+lean_object* x_21; lean_object* x_22; lean_object* x_23; uint8_t x_24; 
+x_21 = lean_ctor_get(x_11, 1);
+x_22 = lean_ctor_get(x_11, 0);
+lean_dec(x_22);
+lean_inc(x_1);
+x_23 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_24 = l_Lean_Expr_isApp(x_23);
 if (x_24 == 0)
 {
-uint8_t x_25; 
-lean_dec(x_13);
-lean_dec(x_12);
+lean_object* x_25; 
+lean_dec(x_23);
 lean_dec(x_9);
 lean_dec(x_8);
 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_25 = !lean_is_exclusive(x_22);
-if (x_25 == 0)
-{
-lean_object* x_26; lean_object* x_27; 
-x_26 = lean_ctor_get(x_22, 0);
-lean_dec(x_26);
-x_27 = lean_box(0);
-lean_ctor_set(x_22, 0, x_27);
-return x_22;
+x_25 = lean_box(0);
+lean_ctor_set(x_11, 0, x_25);
+return x_11;
 }
 else
 {
-lean_object* x_28; lean_object* x_29; lean_object* x_30; 
-x_28 = lean_ctor_get(x_22, 1);
-lean_inc(x_28);
-lean_dec(x_22);
+lean_object* x_26; lean_object* x_27; uint8_t x_28; 
+x_26 = l_Lean_Expr_appArg(x_23, lean_box(0));
+x_27 = l_Lean_Expr_appFnCleanup(x_23, lean_box(0));
+x_28 = l_Lean_Expr_isApp(x_27);
+if (x_28 == 0)
+{
+lean_object* x_29; 
+lean_dec(x_27);
+lean_dec(x_26);
+lean_dec(x_9);
+lean_dec(x_8);
+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_29 = lean_box(0);
-x_30 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_30, 0, x_29);
-lean_ctor_set(x_30, 1, x_28);
-return x_30;
-}
+lean_ctor_set(x_11, 0, x_29);
+return x_11;
 }
 else
 {
-lean_object* x_31; lean_object* x_32; 
-x_31 = lean_ctor_get(x_22, 1);
-lean_inc(x_31);
-lean_dec(x_22);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-x_32 = l_Lean_Meta_Grind_mkEqProof(x_12, x_13, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_31);
-if (lean_obj_tag(x_32) == 0)
+lean_object* x_30; lean_object* x_31; uint8_t x_32; 
+x_30 = l_Lean_Expr_appArg(x_27, lean_box(0));
+x_31 = l_Lean_Expr_appFnCleanup(x_27, lean_box(0));
+x_32 = l_Lean_Expr_isApp(x_31);
+if (x_32 == 0)
 {
-lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; 
-x_33 = lean_ctor_get(x_32, 0);
-lean_inc(x_33);
-x_34 = lean_ctor_get(x_32, 1);
-lean_inc(x_34);
-lean_dec(x_32);
-x_35 = l_Lean_Meta_Grind_propagateEqUp___closed__3;
-lean_inc(x_1);
-x_36 = l_Lean_mkAppB(x_35, x_1, x_33);
-x_37 = l_Lean_Meta_Grind_pushEqTrue(x_1, x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_34);
+lean_object* x_33; 
+lean_dec(x_31);
+lean_dec(x_30);
+lean_dec(x_26);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_37;
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_33 = lean_box(0);
+lean_ctor_set(x_11, 0, x_33);
+return x_11;
 }
 else
 {
-uint8_t x_38; 
+lean_object* x_34; lean_object* x_35; uint8_t x_36; 
+x_34 = l_Lean_Expr_appFnCleanup(x_31, lean_box(0));
+x_35 = l_Lean_Meta_Grind_propagateEqUp___closed__2;
+x_36 = l_Lean_Expr_isConstOf(x_34, x_35);
+lean_dec(x_34);
+if (x_36 == 0)
+{
+lean_object* x_37; 
+lean_dec(x_30);
+lean_dec(x_26);
 lean_dec(x_9);
 lean_dec(x_8);
 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_38 = !lean_is_exclusive(x_32);
-if (x_38 == 0)
-{
-return x_32;
+x_37 = lean_box(0);
+lean_ctor_set(x_11, 0, x_37);
+return x_11;
 }
 else
 {
-lean_object* x_39; lean_object* x_40; lean_object* x_41; 
-x_39 = lean_ctor_get(x_32, 0);
-x_40 = lean_ctor_get(x_32, 1);
-lean_inc(x_40);
-lean_inc(x_39);
-lean_dec(x_32);
-x_41 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_41, 0, x_39);
-lean_ctor_set(x_41, 1, x_40);
-return x_41;
+lean_object* x_38; 
+lean_free_object(x_11);
+x_38 = l_Lean_Meta_Grind_propagateEqDown___lambda__1(x_1, x_30, x_26, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_21);
+return x_38;
+}
 }
 }
 }
 }
 else
 {
-uint8_t x_42; 
-lean_dec(x_13);
-lean_dec(x_12);
+lean_object* x_39; lean_object* x_40; uint8_t x_41; 
+x_39 = lean_ctor_get(x_11, 1);
+lean_inc(x_39);
+lean_dec(x_11);
+lean_inc(x_1);
+x_40 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_41 = l_Lean_Expr_isApp(x_40);
+if (x_41 == 0)
+{
+lean_object* x_42; lean_object* x_43; 
+lean_dec(x_40);
 lean_dec(x_9);
 lean_dec(x_8);
 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_42 = !lean_is_exclusive(x_22);
-if (x_42 == 0)
-{
-return x_22;
+x_42 = lean_box(0);
+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;
 }
 else
 {
-lean_object* x_43; lean_object* x_44; lean_object* x_45; 
-x_43 = lean_ctor_get(x_22, 0);
-x_44 = lean_ctor_get(x_22, 1);
-lean_inc(x_44);
-lean_inc(x_43);
-lean_dec(x_22);
-x_45 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_45, 0, x_43);
-lean_ctor_set(x_45, 1, x_44);
-return x_45;
-}
-}
+lean_object* x_44; lean_object* x_45; uint8_t x_46; 
+x_44 = l_Lean_Expr_appArg(x_40, lean_box(0));
+x_45 = l_Lean_Expr_appFnCleanup(x_40, lean_box(0));
+x_46 = l_Lean_Expr_isApp(x_45);
+if (x_46 == 0)
+{
+lean_object* x_47; lean_object* x_48; 
+lean_dec(x_45);
+lean_dec(x_44);
+lean_dec(x_9);
+lean_dec(x_8);
+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_47 = lean_box(0);
+x_48 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_48, 0, x_47);
+lean_ctor_set(x_48, 1, x_39);
+return x_48;
 }
 else
 {
-lean_object* x_46; lean_object* x_47; 
-x_46 = lean_ctor_get(x_18, 1);
-lean_inc(x_46);
-lean_dec(x_18);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_13);
-x_47 = l_Lean_Meta_Grind_mkEqTrueProof(x_13, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_46);
-if (lean_obj_tag(x_47) == 0)
+lean_object* x_49; lean_object* x_50; uint8_t x_51; 
+x_49 = l_Lean_Expr_appArg(x_45, lean_box(0));
+x_50 = l_Lean_Expr_appFnCleanup(x_45, lean_box(0));
+x_51 = l_Lean_Expr_isApp(x_50);
+if (x_51 == 0)
 {
-lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; uint8_t x_52; lean_object* x_53; 
-x_48 = lean_ctor_get(x_47, 0);
-lean_inc(x_48);
-x_49 = lean_ctor_get(x_47, 1);
-lean_inc(x_49);
-lean_dec(x_47);
-x_50 = l_Lean_Meta_Grind_propagateEqUp___closed__6;
-lean_inc(x_12);
-x_51 = l_Lean_mkApp3(x_50, x_12, x_13, x_48);
-x_52 = 0;
-x_53 = l_Lean_Meta_Grind_pushEqCore(x_1, x_12, x_51, x_52, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_49);
+lean_object* x_52; lean_object* x_53; 
+lean_dec(x_50);
+lean_dec(x_49);
+lean_dec(x_44);
 lean_dec(x_9);
 lean_dec(x_8);
 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_52 = lean_box(0);
+x_53 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_53, 0, x_52);
+lean_ctor_set(x_53, 1, x_39);
 return x_53;
 }
 else
 {
-uint8_t x_54; 
-lean_dec(x_13);
-lean_dec(x_12);
+lean_object* x_54; lean_object* x_55; uint8_t x_56; 
+x_54 = l_Lean_Expr_appFnCleanup(x_50, lean_box(0));
+x_55 = l_Lean_Meta_Grind_propagateEqUp___closed__2;
+x_56 = l_Lean_Expr_isConstOf(x_54, x_55);
+lean_dec(x_54);
+if (x_56 == 0)
+{
+lean_object* x_57; lean_object* x_58; 
+lean_dec(x_49);
+lean_dec(x_44);
 lean_dec(x_9);
 lean_dec(x_8);
 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_54 = !lean_is_exclusive(x_47);
-if (x_54 == 0)
-{
-return x_47;
+x_57 = lean_box(0);
+x_58 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_58, 0, x_57);
+lean_ctor_set(x_58, 1, x_39);
+return x_58;
 }
 else
 {
-lean_object* x_55; lean_object* x_56; lean_object* x_57; 
-x_55 = lean_ctor_get(x_47, 0);
-x_56 = lean_ctor_get(x_47, 1);
-lean_inc(x_56);
-lean_inc(x_55);
-lean_dec(x_47);
-x_57 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_57, 0, x_55);
-lean_ctor_set(x_57, 1, x_56);
-return x_57;
+lean_object* x_59; 
+x_59 = l_Lean_Meta_Grind_propagateEqDown___lambda__1(x_1, x_49, x_44, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_39);
+return x_59;
+}
+}
+}
 }
 }
 }
 }
 else
 {
-uint8_t x_58; 
-lean_dec(x_13);
-lean_dec(x_12);
+uint8_t x_60; 
 lean_dec(x_9);
 lean_dec(x_8);
 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_58 = !lean_is_exclusive(x_18);
-if (x_58 == 0)
+x_60 = !lean_is_exclusive(x_11);
+if (x_60 == 0)
 {
-return x_18;
+return x_11;
 }
 else
 {
-lean_object* x_59; lean_object* x_60; lean_object* x_61; 
-x_59 = lean_ctor_get(x_18, 0);
-x_60 = lean_ctor_get(x_18, 1);
-lean_inc(x_60);
-lean_inc(x_59);
-lean_dec(x_18);
-x_61 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_61, 0, x_59);
-lean_ctor_set(x_61, 1, x_60);
-return x_61;
+lean_object* x_61; lean_object* x_62; lean_object* x_63; 
+x_61 = lean_ctor_get(x_11, 0);
+x_62 = lean_ctor_get(x_11, 1);
+lean_inc(x_62);
+lean_inc(x_61);
+lean_dec(x_11);
+x_63 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_63, 0, x_61);
+lean_ctor_set(x_63, 1, x_62);
+return x_63;
 }
 }
 }
-else
+}
+static lean_object* _init_l___regBuiltin_Lean_Meta_Grind_propagateEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2287____closed__1() {
+_start:
 {
-lean_object* x_62; lean_object* x_63; 
-x_62 = lean_ctor_get(x_14, 1);
-lean_inc(x_62);
-lean_dec(x_14);
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_propagateEqDown), 10, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2287_(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; uint8_t x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = l_Lean_Meta_Grind_propagateEqUp___closed__2;
+x_3 = 0;
+x_4 = l___regBuiltin_Lean_Meta_Grind_propagateEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2287____closed__1;
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_2, x_3, x_4, x_1);
+return x_5;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateHEqDown___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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+lean_inc(x_11);
+lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
 lean_inc(x_7);
 lean_inc(x_6);
-lean_inc(x_12);
-x_63 = l_Lean_Meta_Grind_mkEqTrueProof(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_62);
-if (lean_obj_tag(x_63) == 0)
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_1);
+x_13 = l_Lean_Meta_Grind_mkEqTrueProof(x_1, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
 {
-lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; uint8_t x_68; lean_object* x_69; 
-x_64 = lean_ctor_get(x_63, 0);
-lean_inc(x_64);
-x_65 = lean_ctor_get(x_63, 1);
-lean_inc(x_65);
-lean_dec(x_63);
-x_66 = l_Lean_Meta_Grind_propagateEqUp___closed__9;
-lean_inc(x_13);
-x_67 = l_Lean_mkApp3(x_66, x_12, x_13, x_64);
-x_68 = 0;
-x_69 = l_Lean_Meta_Grind_pushEqCore(x_1, x_13, x_67, x_68, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_65);
+lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; lean_object* x_19; 
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_ctor_get(x_13, 1);
+lean_inc(x_15);
+lean_dec(x_13);
+x_16 = l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__3;
+x_17 = l_Lean_mkAppB(x_16, x_1, x_14);
+x_18 = 1;
+x_19 = l_Lean_Meta_Grind_pushEqCore(x_2, x_3, x_17, x_18, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_15);
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_69;
+lean_dec(x_5);
+lean_dec(x_4);
+return x_19;
 }
 else
 {
-uint8_t x_70; 
-lean_dec(x_13);
-lean_dec(x_12);
+uint8_t x_20; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_70 = !lean_is_exclusive(x_63);
-if (x_70 == 0)
+x_20 = !lean_is_exclusive(x_13);
+if (x_20 == 0)
 {
-return x_63;
+return x_13;
 }
 else
 {
-lean_object* x_71; lean_object* x_72; lean_object* x_73; 
-x_71 = lean_ctor_get(x_63, 0);
-x_72 = lean_ctor_get(x_63, 1);
-lean_inc(x_72);
-lean_inc(x_71);
-lean_dec(x_63);
-x_73 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_73, 0, x_71);
-lean_ctor_set(x_73, 1, x_72);
-return x_73;
-}
+lean_object* x_21; lean_object* x_22; lean_object* x_23; 
+x_21 = lean_ctor_get(x_13, 0);
+x_22 = lean_ctor_get(x_13, 1);
+lean_inc(x_22);
+lean_inc(x_21);
+lean_dec(x_13);
+x_23 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_23, 0, x_21);
+lean_ctor_set(x_23, 1, x_22);
+return x_23;
 }
 }
 }
-else
-{
-uint8_t x_74; 
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_1);
-x_74 = !lean_is_exclusive(x_14);
-if (x_74 == 0)
-{
-return x_14;
 }
-else
+static lean_object* _init_l_Lean_Meta_Grind_propagateHEqDown___closed__1() {
+_start:
 {
-lean_object* x_75; lean_object* x_76; lean_object* x_77; 
-x_75 = lean_ctor_get(x_14, 0);
-x_76 = lean_ctor_get(x_14, 1);
-lean_inc(x_76);
-lean_inc(x_75);
-lean_dec(x_14);
-x_77 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_77, 0, x_75);
-lean_ctor_set(x_77, 1, x_76);
-return x_77;
-}
-}
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("HEq", 3, 3);
+return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateEqUp___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, lean_object* x_10) {
+static lean_object* _init_l_Lean_Meta_Grind_propagateHEqDown___closed__2() {
 _start:
 {
-lean_object* x_11; 
-x_11 = l_Lean_Meta_Grind_propagateEqUp(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_11;
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_propagateHEqDown___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateEqDown(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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateHEqDown(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:
 {
 lean_object* x_11; 
@@ -2832,6 +4719,10 @@ lean_dec(x_9);
 lean_dec(x_8);
 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_14 = !lean_is_exclusive(x_11);
 if (x_14 == 0)
@@ -2858,666 +4749,543 @@ return x_19;
 }
 else
 {
-lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; 
-x_20 = lean_ctor_get(x_11, 1);
-lean_inc(x_20);
-lean_dec(x_11);
-x_21 = l_Lean_Expr_appFn_x21(x_1);
-x_22 = l_Lean_Expr_appArg_x21(x_21);
-lean_dec(x_21);
-x_23 = l_Lean_Expr_appArg_x21(x_1);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
+uint8_t x_20; 
+x_20 = !lean_is_exclusive(x_11);
+if (x_20 == 0)
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; uint8_t x_24; 
+x_21 = lean_ctor_get(x_11, 1);
+x_22 = lean_ctor_get(x_11, 0);
+lean_dec(x_22);
 lean_inc(x_1);
-x_24 = l_Lean_Meta_Grind_mkEqTrueProof(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_20);
-if (lean_obj_tag(x_24) == 0)
+x_23 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_24 = l_Lean_Expr_isApp(x_23);
+if (x_24 == 0)
 {
-lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; uint8_t x_29; lean_object* x_30; 
-x_25 = lean_ctor_get(x_24, 0);
-lean_inc(x_25);
-x_26 = lean_ctor_get(x_24, 1);
-lean_inc(x_26);
-lean_dec(x_24);
-x_27 = l_Lean_Meta_Grind_propagateEqUp___closed__3;
-x_28 = l_Lean_mkAppB(x_27, x_1, x_25);
-x_29 = 0;
-x_30 = l_Lean_Meta_Grind_pushEqCore(x_22, x_23, x_28, x_29, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_26);
+lean_object* x_25; 
+lean_dec(x_23);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_30;
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_25 = lean_box(0);
+lean_ctor_set(x_11, 0, x_25);
+return x_11;
 }
 else
 {
-uint8_t x_31; 
-lean_dec(x_23);
-lean_dec(x_22);
+lean_object* x_26; lean_object* x_27; uint8_t x_28; 
+x_26 = l_Lean_Expr_appArg(x_23, lean_box(0));
+x_27 = l_Lean_Expr_appFnCleanup(x_23, lean_box(0));
+x_28 = l_Lean_Expr_isApp(x_27);
+if (x_28 == 0)
+{
+lean_object* x_29; 
+lean_dec(x_27);
+lean_dec(x_26);
 lean_dec(x_9);
 lean_dec(x_8);
 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_31 = !lean_is_exclusive(x_24);
-if (x_31 == 0)
-{
-return x_24;
+x_29 = lean_box(0);
+lean_ctor_set(x_11, 0, x_29);
+return x_11;
 }
 else
 {
-lean_object* x_32; lean_object* x_33; lean_object* x_34; 
-x_32 = lean_ctor_get(x_24, 0);
-x_33 = lean_ctor_get(x_24, 1);
-lean_inc(x_33);
-lean_inc(x_32);
-lean_dec(x_24);
-x_34 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_34, 0, x_32);
-lean_ctor_set(x_34, 1, x_33);
-return x_34;
-}
-}
-}
-}
-else
+lean_object* x_30; uint8_t x_31; 
+x_30 = l_Lean_Expr_appFnCleanup(x_27, lean_box(0));
+x_31 = l_Lean_Expr_isApp(x_30);
+if (x_31 == 0)
 {
-uint8_t x_35; 
+lean_object* x_32; 
+lean_dec(x_30);
+lean_dec(x_26);
 lean_dec(x_9);
 lean_dec(x_8);
 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_35 = !lean_is_exclusive(x_11);
-if (x_35 == 0)
-{
+x_32 = lean_box(0);
+lean_ctor_set(x_11, 0, x_32);
 return x_11;
 }
 else
 {
-lean_object* x_36; lean_object* x_37; lean_object* x_38; 
-x_36 = lean_ctor_get(x_11, 0);
-x_37 = lean_ctor_get(x_11, 1);
-lean_inc(x_37);
-lean_inc(x_36);
-lean_dec(x_11);
-x_38 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_38, 0, x_36);
-lean_ctor_set(x_38, 1, x_37);
-return x_38;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateEqDown___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, lean_object* x_10) {
-_start:
+lean_object* x_33; lean_object* x_34; uint8_t x_35; 
+x_33 = l_Lean_Expr_appArg(x_30, lean_box(0));
+x_34 = l_Lean_Expr_appFnCleanup(x_30, lean_box(0));
+x_35 = l_Lean_Expr_isApp(x_34);
+if (x_35 == 0)
 {
-lean_object* x_11; 
-x_11 = l_Lean_Meta_Grind_propagateEqDown(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_object* x_36; 
+lean_dec(x_34);
+lean_dec(x_33);
+lean_dec(x_26);
+lean_dec(x_9);
+lean_dec(x_8);
+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_36 = lean_box(0);
+lean_ctor_set(x_11, 0, x_36);
 return x_11;
 }
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateHEqDown(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:
-{
-lean_object* x_11; 
-lean_inc(x_1);
-x_11 = l_Lean_Meta_Grind_isEqTrue(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_11) == 0)
+else
 {
-lean_object* x_12; uint8_t x_13; 
-x_12 = lean_ctor_get(x_11, 0);
-lean_inc(x_12);
-x_13 = lean_unbox(x_12);
-lean_dec(x_12);
-if (x_13 == 0)
+lean_object* x_37; lean_object* x_38; uint8_t x_39; 
+x_37 = l_Lean_Expr_appFnCleanup(x_34, lean_box(0));
+x_38 = l_Lean_Meta_Grind_propagateHEqDown___closed__2;
+x_39 = l_Lean_Expr_isConstOf(x_37, x_38);
+lean_dec(x_37);
+if (x_39 == 0)
 {
-uint8_t x_14; 
+lean_object* x_40; 
+lean_dec(x_33);
+lean_dec(x_26);
 lean_dec(x_9);
 lean_dec(x_8);
 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_14 = !lean_is_exclusive(x_11);
-if (x_14 == 0)
-{
-lean_object* x_15; lean_object* x_16; 
-x_15 = lean_ctor_get(x_11, 0);
-lean_dec(x_15);
-x_16 = lean_box(0);
-lean_ctor_set(x_11, 0, x_16);
+x_40 = lean_box(0);
+lean_ctor_set(x_11, 0, x_40);
 return x_11;
 }
 else
 {
-lean_object* x_17; lean_object* x_18; lean_object* x_19; 
-x_17 = lean_ctor_get(x_11, 1);
-lean_inc(x_17);
-lean_dec(x_11);
-x_18 = lean_box(0);
-x_19 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_19, 0, x_18);
-lean_ctor_set(x_19, 1, x_17);
-return x_19;
+lean_object* x_41; 
+lean_free_object(x_11);
+x_41 = l_Lean_Meta_Grind_propagateHEqDown___lambda__1(x_1, x_33, x_26, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_21);
+return x_41;
+}
+}
+}
+}
 }
 }
 else
 {
-lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; 
-x_20 = lean_ctor_get(x_11, 1);
-lean_inc(x_20);
+lean_object* x_42; lean_object* x_43; uint8_t x_44; 
+x_42 = lean_ctor_get(x_11, 1);
+lean_inc(x_42);
 lean_dec(x_11);
-x_21 = l_Lean_Expr_appFn_x21(x_1);
-x_22 = l_Lean_Expr_appFn_x21(x_21);
-lean_dec(x_21);
-x_23 = l_Lean_Expr_appArg_x21(x_22);
-lean_dec(x_22);
-x_24 = l_Lean_Expr_appArg_x21(x_1);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
 lean_inc(x_1);
-x_25 = l_Lean_Meta_Grind_mkEqTrueProof(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_20);
-if (lean_obj_tag(x_25) == 0)
+x_43 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_44 = l_Lean_Expr_isApp(x_43);
+if (x_44 == 0)
 {
-lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; uint8_t x_30; lean_object* x_31; 
-x_26 = lean_ctor_get(x_25, 0);
-lean_inc(x_26);
-x_27 = lean_ctor_get(x_25, 1);
-lean_inc(x_27);
-lean_dec(x_25);
-x_28 = l_Lean_Meta_Grind_propagateEqUp___closed__3;
-x_29 = l_Lean_mkAppB(x_28, x_1, x_26);
-x_30 = 1;
-x_31 = l_Lean_Meta_Grind_pushEqCore(x_23, x_24, x_29, x_30, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_27);
+lean_object* x_45; lean_object* x_46; 
+lean_dec(x_43);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-return x_31;
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_45 = lean_box(0);
+x_46 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_46, 0, x_45);
+lean_ctor_set(x_46, 1, x_42);
+return x_46;
 }
 else
 {
-uint8_t x_32; 
-lean_dec(x_24);
-lean_dec(x_23);
+lean_object* x_47; lean_object* x_48; uint8_t x_49; 
+x_47 = l_Lean_Expr_appArg(x_43, lean_box(0));
+x_48 = l_Lean_Expr_appFnCleanup(x_43, lean_box(0));
+x_49 = l_Lean_Expr_isApp(x_48);
+if (x_49 == 0)
+{
+lean_object* x_50; lean_object* x_51; 
+lean_dec(x_48);
+lean_dec(x_47);
 lean_dec(x_9);
 lean_dec(x_8);
 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_32 = !lean_is_exclusive(x_25);
-if (x_32 == 0)
-{
-return x_25;
+x_50 = lean_box(0);
+x_51 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_51, 0, x_50);
+lean_ctor_set(x_51, 1, x_42);
+return x_51;
 }
 else
 {
-lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_33 = lean_ctor_get(x_25, 0);
-x_34 = lean_ctor_get(x_25, 1);
-lean_inc(x_34);
-lean_inc(x_33);
-lean_dec(x_25);
-x_35 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_35, 0, x_33);
-lean_ctor_set(x_35, 1, x_34);
-return x_35;
-}
-}
-}
-}
-else
+lean_object* x_52; uint8_t x_53; 
+x_52 = l_Lean_Expr_appFnCleanup(x_48, lean_box(0));
+x_53 = l_Lean_Expr_isApp(x_52);
+if (x_53 == 0)
 {
-uint8_t x_36; 
+lean_object* x_54; lean_object* x_55; 
+lean_dec(x_52);
+lean_dec(x_47);
 lean_dec(x_9);
 lean_dec(x_8);
 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_36 = !lean_is_exclusive(x_11);
-if (x_36 == 0)
-{
-return x_11;
+x_54 = lean_box(0);
+x_55 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_55, 0, x_54);
+lean_ctor_set(x_55, 1, x_42);
+return x_55;
 }
 else
 {
-lean_object* x_37; lean_object* x_38; lean_object* x_39; 
-x_37 = lean_ctor_get(x_11, 0);
-x_38 = lean_ctor_get(x_11, 1);
-lean_inc(x_38);
-lean_inc(x_37);
-lean_dec(x_11);
-x_39 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_39, 0, x_37);
-lean_ctor_set(x_39, 1, x_38);
-return x_39;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateHEqDown___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, lean_object* x_10) {
-_start:
+lean_object* x_56; lean_object* x_57; uint8_t x_58; 
+x_56 = l_Lean_Expr_appArg(x_52, lean_box(0));
+x_57 = l_Lean_Expr_appFnCleanup(x_52, lean_box(0));
+x_58 = l_Lean_Expr_isApp(x_57);
+if (x_58 == 0)
 {
-lean_object* x_11; 
-x_11 = l_Lean_Meta_Grind_propagateHEqDown(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_object* x_59; lean_object* x_60; 
+lean_dec(x_57);
+lean_dec(x_56);
+lean_dec(x_47);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-return x_11;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Or", 2, 2);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__2() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_propagateConectivesUp___closed__1;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
+lean_dec(x_1);
+x_59 = lean_box(0);
+x_60 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_60, 0, x_59);
+lean_ctor_set(x_60, 1, x_42);
+return x_60;
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__3() {
-_start:
+else
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Not", 3, 3);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__4() {
-_start:
+lean_object* x_61; lean_object* x_62; uint8_t x_63; 
+x_61 = l_Lean_Expr_appFnCleanup(x_57, lean_box(0));
+x_62 = l_Lean_Meta_Grind_propagateHEqDown___closed__2;
+x_63 = l_Lean_Expr_isConstOf(x_61, x_62);
+lean_dec(x_61);
+if (x_63 == 0)
 {
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_propagateConectivesUp___closed__3;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
+lean_object* x_64; lean_object* x_65; 
+lean_dec(x_56);
+lean_dec(x_47);
+lean_dec(x_9);
+lean_dec(x_8);
+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_64 = lean_box(0);
+x_65 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_65, 0, x_64);
+lean_ctor_set(x_65, 1, x_42);
+return x_65;
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__5() {
-_start:
+else
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Eq", 2, 2);
-return x_1;
-}
+lean_object* x_66; 
+x_66 = l_Lean_Meta_Grind_propagateHEqDown___lambda__1(x_1, x_56, x_47, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_42);
+return x_66;
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__6() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_propagateConectivesUp___closed__5;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__7() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("And", 3, 3);
-return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__8() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_propagateConectivesUp___closed__7;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateConectivesUp(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:
-{
-lean_object* x_11; 
-x_11 = l_Lean_Expr_getAppFn(x_1);
-if (lean_obj_tag(x_11) == 4)
-{
-lean_object* x_12; lean_object* x_13; lean_object* x_42; uint8_t x_43; 
-x_12 = lean_ctor_get(x_11, 0);
-lean_inc(x_12);
-lean_dec(x_11);
-x_42 = l_Lean_Meta_Grind_propagateConectivesUp___closed__6;
-x_43 = lean_name_eq(x_12, x_42);
-if (x_43 == 0)
-{
-lean_object* x_44; uint8_t x_45; 
-x_44 = l_Lean_Meta_Grind_propagateConectivesUp___closed__8;
-x_45 = lean_name_eq(x_12, x_44);
-if (x_45 == 0)
-{
-lean_object* x_46; 
-x_46 = lean_box(0);
-x_13 = x_46;
-goto block_41;
 }
 else
 {
-lean_object* x_47; lean_object* x_48; lean_object* x_49; uint8_t x_50; 
-x_47 = lean_unsigned_to_nat(0u);
-x_48 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_47);
-x_49 = lean_unsigned_to_nat(2u);
-x_50 = lean_nat_dec_eq(x_48, x_49);
-lean_dec(x_48);
-if (x_50 == 0)
+uint8_t x_67; 
+lean_dec(x_9);
+lean_dec(x_8);
+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_is_exclusive(x_11);
+if (x_67 == 0)
 {
-lean_object* x_51; 
-x_51 = lean_box(0);
-x_13 = x_51;
-goto block_41;
+return x_11;
 }
 else
 {
-lean_object* x_52; 
-lean_dec(x_12);
-x_52 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_52;
-}
+lean_object* x_68; lean_object* x_69; lean_object* x_70; 
+x_68 = lean_ctor_get(x_11, 0);
+x_69 = lean_ctor_get(x_11, 1);
+lean_inc(x_69);
+lean_inc(x_68);
+lean_dec(x_11);
+x_70 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_70, 0, x_68);
+lean_ctor_set(x_70, 1, x_69);
+return x_70;
 }
 }
-else
-{
-lean_object* x_53; lean_object* x_54; lean_object* x_55; uint8_t x_56; 
-x_53 = lean_unsigned_to_nat(0u);
-x_54 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_53);
-x_55 = lean_unsigned_to_nat(3u);
-x_56 = lean_nat_dec_eq(x_54, x_55);
-if (x_56 == 0)
-{
-lean_object* x_57; uint8_t x_58; 
-x_57 = l_Lean_Meta_Grind_propagateConectivesUp___closed__8;
-x_58 = lean_name_eq(x_12, x_57);
-if (x_58 == 0)
-{
-lean_object* x_59; 
-lean_dec(x_54);
-x_59 = lean_box(0);
-x_13 = x_59;
-goto block_41;
 }
-else
-{
-lean_object* x_60; uint8_t x_61; 
-x_60 = lean_unsigned_to_nat(2u);
-x_61 = lean_nat_dec_eq(x_54, x_60);
-lean_dec(x_54);
-if (x_61 == 0)
-{
-lean_object* x_62; 
-x_62 = lean_box(0);
-x_13 = x_62;
-goto block_41;
 }
-else
+static lean_object* _init_l___regBuiltin_Lean_Meta_Grind_propagateHEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2546____closed__1() {
+_start:
 {
-lean_object* x_63; 
-lean_dec(x_12);
-x_63 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_63;
-}
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_propagateHEqDown), 10, 0);
+return x_1;
 }
 }
-else
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateHEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2546_(lean_object* x_1) {
+_start:
 {
-lean_object* x_64; 
-lean_dec(x_54);
-lean_dec(x_12);
-x_64 = l_Lean_Meta_Grind_propagateEqUp(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_64;
+lean_object* x_2; uint8_t x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = l_Lean_Meta_Grind_propagateHEqDown___closed__2;
+x_3 = 0;
+x_4 = l___regBuiltin_Lean_Meta_Grind_propagateHEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2546____closed__1;
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_2, x_3, x_4, x_1);
+return x_5;
 }
 }
-block_41:
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateHEqUp___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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+lean_inc(x_3);
+lean_inc(x_2);
+x_13 = l_Lean_Meta_Grind_isEqv(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
 {
 lean_object* x_14; uint8_t x_15; 
-lean_dec(x_13);
-x_14 = l_Lean_Meta_Grind_propagateConectivesUp___closed__2;
-x_15 = lean_name_eq(x_12, x_14);
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_unbox(x_14);
+lean_dec(x_14);
 if (x_15 == 0)
 {
-lean_object* x_16; uint8_t x_17; 
-x_16 = l_Lean_Meta_Grind_propagateConectivesUp___closed__4;
-x_17 = lean_name_eq(x_12, x_16);
-lean_dec(x_12);
-if (x_17 == 0)
-{
-lean_object* x_18; lean_object* x_19; 
+uint8_t x_16; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 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_18 = lean_box(0);
-x_19 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_19, 0, x_18);
-lean_ctor_set(x_19, 1, x_10);
-return x_19;
-}
-else
-{
-lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; 
-x_20 = lean_unsigned_to_nat(0u);
-x_21 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_20);
-x_22 = lean_unsigned_to_nat(1u);
-x_23 = lean_nat_dec_eq(x_21, x_22);
-lean_dec(x_21);
-if (x_23 == 0)
+x_16 = !lean_is_exclusive(x_13);
+if (x_16 == 0)
 {
-lean_object* x_24; lean_object* x_25; 
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_1);
-x_24 = lean_box(0);
-x_25 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_25, 0, x_24);
-lean_ctor_set(x_25, 1, x_10);
-return x_25;
+lean_object* x_17; lean_object* x_18; 
+x_17 = lean_ctor_get(x_13, 0);
+lean_dec(x_17);
+x_18 = lean_box(0);
+lean_ctor_set(x_13, 0, x_18);
+return x_13;
 }
 else
 {
-lean_object* x_26; 
-x_26 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_26;
-}
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_19 = lean_ctor_get(x_13, 1);
+lean_inc(x_19);
+lean_dec(x_13);
+x_20 = lean_box(0);
+x_21 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_21, 0, x_20);
+lean_ctor_set(x_21, 1, x_19);
+return x_21;
 }
 }
 else
 {
-lean_object* x_27; lean_object* x_28; lean_object* x_29; uint8_t x_30; 
-x_27 = lean_unsigned_to_nat(0u);
-x_28 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_27);
-x_29 = lean_unsigned_to_nat(2u);
-x_30 = lean_nat_dec_eq(x_28, x_29);
-if (x_30 == 0)
-{
-lean_object* x_31; uint8_t x_32; 
-x_31 = l_Lean_Meta_Grind_propagateConectivesUp___closed__4;
-x_32 = lean_name_eq(x_12, x_31);
-lean_dec(x_12);
-if (x_32 == 0)
-{
-lean_object* x_33; lean_object* x_34; 
-lean_dec(x_28);
+lean_object* x_22; uint8_t x_23; lean_object* x_24; 
+x_22 = lean_ctor_get(x_13, 1);
+lean_inc(x_22);
+lean_dec(x_13);
+x_23 = 1;
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+x_24 = l___private_Lean_Meta_Tactic_Grind_Proof_0__Lean_Meta_Grind_mkEqProofCore(x_2, x_3, x_23, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_22);
+if (lean_obj_tag(x_24) == 0)
+{
+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_24, 0);
+lean_inc(x_25);
+x_26 = lean_ctor_get(x_24, 1);
+lean_inc(x_26);
+lean_dec(x_24);
+x_27 = l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__3;
+lean_inc(x_1);
+x_28 = l_Lean_mkAppB(x_27, x_1, x_25);
+x_29 = l_Lean_Meta_Grind_pushEqTrue(x_1, x_28, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_26);
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-lean_dec(x_1);
-x_33 = lean_box(0);
-x_34 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_34, 0, x_33);
-lean_ctor_set(x_34, 1, x_10);
-return x_34;
+lean_dec(x_5);
+lean_dec(x_4);
+return x_29;
 }
 else
 {
-lean_object* x_35; uint8_t x_36; 
-x_35 = lean_unsigned_to_nat(1u);
-x_36 = lean_nat_dec_eq(x_28, x_35);
-lean_dec(x_28);
-if (x_36 == 0)
-{
-lean_object* x_37; lean_object* x_38; 
+uint8_t x_30; 
+lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
 lean_dec(x_1);
-x_37 = lean_box(0);
-x_38 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_38, 0, x_37);
-lean_ctor_set(x_38, 1, x_10);
-return x_38;
-}
-else
+x_30 = !lean_is_exclusive(x_24);
+if (x_30 == 0)
 {
-lean_object* x_39; 
-x_39 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_39;
-}
-}
+return x_24;
 }
 else
 {
-lean_object* x_40; 
-lean_dec(x_28);
-lean_dec(x_12);
-x_40 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_40;
+lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_31 = lean_ctor_get(x_24, 0);
+x_32 = lean_ctor_get(x_24, 1);
+lean_inc(x_32);
+lean_inc(x_31);
+lean_dec(x_24);
+x_33 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_33, 0, x_31);
+lean_ctor_set(x_33, 1, x_32);
+return x_33;
 }
 }
 }
 }
 else
 {
-lean_object* x_65; lean_object* x_66; 
+uint8_t x_34; 
 lean_dec(x_11);
+lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
-lean_dec(x_1);
-x_65 = lean_box(0);
-x_66 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_66, 0, x_65);
-lean_ctor_set(x_66, 1, x_10);
-return x_66;
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateConectivesUp___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, lean_object* x_10) {
-_start:
-{
-lean_object* x_11; 
-x_11 = l_Lean_Meta_Grind_propagateConectivesUp(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-return x_11;
-}
+lean_dec(x_1);
+x_34 = !lean_is_exclusive(x_13);
+if (x_34 == 0)
+{
+return x_13;
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateConnectivesDown___closed__1() {
-_start:
+else
 {
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("HEq", 3, 3);
-return x_1;
+lean_object* x_35; lean_object* x_36; lean_object* x_37; 
+x_35 = lean_ctor_get(x_13, 0);
+x_36 = lean_ctor_get(x_13, 1);
+lean_inc(x_36);
+lean_inc(x_35);
+lean_dec(x_13);
+x_37 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_37, 0, x_35);
+lean_ctor_set(x_37, 1, x_36);
+return x_37;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_propagateConnectivesDown___closed__2() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_propagateConnectivesDown___closed__1;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateConnectivesDown(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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateHEqUp(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:
 {
-lean_object* x_11; 
-x_11 = l_Lean_Expr_getAppFn(x_1);
-if (lean_obj_tag(x_11) == 4)
+lean_object* x_11; uint8_t x_12; 
+lean_inc(x_1);
+x_11 = l_Lean_Expr_cleanupAnnotations(x_1);
+x_12 = l_Lean_Expr_isApp(x_11);
+if (x_12 == 0)
 {
-lean_object* x_12; lean_object* x_13; lean_object* x_42; lean_object* x_67; uint8_t x_68; 
-x_12 = lean_ctor_get(x_11, 0);
-lean_inc(x_12);
+lean_object* x_13; lean_object* x_14; 
 lean_dec(x_11);
-x_67 = l_Lean_Meta_Grind_propagateConectivesUp___closed__6;
-x_68 = lean_name_eq(x_12, x_67);
-if (x_68 == 0)
-{
-lean_object* x_69; 
-x_69 = lean_box(0);
-x_42 = x_69;
-goto block_66;
-}
-else
-{
-lean_object* x_70; lean_object* x_71; lean_object* x_72; uint8_t x_73; 
-x_70 = lean_unsigned_to_nat(0u);
-x_71 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_70);
-x_72 = lean_unsigned_to_nat(3u);
-x_73 = lean_nat_dec_eq(x_71, x_72);
-lean_dec(x_71);
-if (x_73 == 0)
-{
-lean_object* x_74; 
-x_74 = lean_box(0);
-x_42 = x_74;
-goto block_66;
+lean_dec(x_9);
+lean_dec(x_8);
+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_13 = lean_box(0);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_13);
+lean_ctor_set(x_14, 1, x_10);
+return x_14;
 }
 else
 {
-lean_object* x_75; 
-lean_dec(x_12);
-x_75 = l_Lean_Meta_Grind_propagateEqDown(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_75;
-}
-}
-block_41:
-{
-lean_object* x_14; uint8_t x_15; 
-lean_dec(x_13);
-x_14 = l_Lean_Meta_Grind_propagateConectivesUp___closed__2;
-x_15 = lean_name_eq(x_12, x_14);
-if (x_15 == 0)
-{
-lean_object* x_16; uint8_t x_17; 
-x_16 = l_Lean_Meta_Grind_propagateConectivesUp___closed__4;
-x_17 = lean_name_eq(x_12, x_16);
-lean_dec(x_12);
+lean_object* x_15; lean_object* x_16; uint8_t x_17; 
+x_15 = l_Lean_Expr_appArg(x_11, lean_box(0));
+x_16 = l_Lean_Expr_appFnCleanup(x_11, lean_box(0));
+x_17 = l_Lean_Expr_isApp(x_16);
 if (x_17 == 0)
 {
 lean_object* x_18; lean_object* x_19; 
+lean_dec(x_16);
+lean_dec(x_15);
 lean_dec(x_9);
 lean_dec(x_8);
 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_18 = lean_box(0);
 x_19 = lean_alloc_ctor(0, 2, 0);
@@ -3527,376 +5295,334 @@ return x_19;
 }
 else
 {
-lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; 
-x_20 = lean_unsigned_to_nat(0u);
-x_21 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_20);
-x_22 = lean_unsigned_to_nat(1u);
-x_23 = lean_nat_dec_eq(x_21, x_22);
-lean_dec(x_21);
-if (x_23 == 0)
+lean_object* x_20; uint8_t x_21; 
+x_20 = l_Lean_Expr_appFnCleanup(x_16, lean_box(0));
+x_21 = l_Lean_Expr_isApp(x_20);
+if (x_21 == 0)
 {
-lean_object* x_24; lean_object* x_25; 
+lean_object* x_22; lean_object* x_23; 
+lean_dec(x_20);
+lean_dec(x_15);
 lean_dec(x_9);
 lean_dec(x_8);
 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_24 = lean_box(0);
-x_25 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_25, 0, x_24);
-lean_ctor_set(x_25, 1, x_10);
-return x_25;
-}
-else
-{
-lean_object* x_26; 
-x_26 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_26;
-}
-}
+x_22 = lean_box(0);
+x_23 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_23, 0, x_22);
+lean_ctor_set(x_23, 1, x_10);
+return x_23;
 }
 else
 {
-lean_object* x_27; lean_object* x_28; lean_object* x_29; uint8_t x_30; 
-x_27 = lean_unsigned_to_nat(0u);
-x_28 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_27);
-x_29 = lean_unsigned_to_nat(2u);
-x_30 = lean_nat_dec_eq(x_28, x_29);
-if (x_30 == 0)
-{
-lean_object* x_31; uint8_t x_32; 
-x_31 = l_Lean_Meta_Grind_propagateConectivesUp___closed__4;
-x_32 = lean_name_eq(x_12, x_31);
-lean_dec(x_12);
-if (x_32 == 0)
+lean_object* x_24; lean_object* x_25; uint8_t x_26; 
+x_24 = l_Lean_Expr_appArg(x_20, lean_box(0));
+x_25 = l_Lean_Expr_appFnCleanup(x_20, lean_box(0));
+x_26 = l_Lean_Expr_isApp(x_25);
+if (x_26 == 0)
 {
-lean_object* x_33; lean_object* x_34; 
-lean_dec(x_28);
+lean_object* x_27; lean_object* x_28; 
+lean_dec(x_25);
+lean_dec(x_24);
+lean_dec(x_15);
 lean_dec(x_9);
 lean_dec(x_8);
 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_33 = lean_box(0);
-x_34 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_34, 0, x_33);
-lean_ctor_set(x_34, 1, x_10);
-return x_34;
+x_27 = lean_box(0);
+x_28 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_28, 0, x_27);
+lean_ctor_set(x_28, 1, x_10);
+return x_28;
 }
 else
 {
-lean_object* x_35; uint8_t x_36; 
-x_35 = lean_unsigned_to_nat(1u);
-x_36 = lean_nat_dec_eq(x_28, x_35);
-lean_dec(x_28);
-if (x_36 == 0)
+lean_object* x_29; lean_object* x_30; uint8_t x_31; 
+x_29 = l_Lean_Expr_appFnCleanup(x_25, lean_box(0));
+x_30 = l_Lean_Meta_Grind_propagateHEqDown___closed__2;
+x_31 = l_Lean_Expr_isConstOf(x_29, x_30);
+lean_dec(x_29);
+if (x_31 == 0)
 {
-lean_object* x_37; lean_object* x_38; 
+lean_object* x_32; lean_object* x_33; 
+lean_dec(x_24);
+lean_dec(x_15);
 lean_dec(x_9);
 lean_dec(x_8);
 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_37 = lean_box(0);
-x_38 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_38, 0, x_37);
-lean_ctor_set(x_38, 1, x_10);
-return x_38;
-}
-else
-{
-lean_object* x_39; 
-x_39 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_39;
-}
-}
-}
-else
-{
-lean_object* x_40; 
-lean_dec(x_28);
-lean_dec(x_12);
-x_40 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_40;
-}
-}
-}
-block_66:
-{
-lean_object* x_43; uint8_t x_44; 
-lean_dec(x_42);
-x_43 = l_Lean_Meta_Grind_propagateConnectivesDown___closed__2;
-x_44 = lean_name_eq(x_12, x_43);
-if (x_44 == 0)
-{
-lean_object* x_45; uint8_t x_46; 
-x_45 = l_Lean_Meta_Grind_propagateConectivesUp___closed__8;
-x_46 = lean_name_eq(x_12, x_45);
-if (x_46 == 0)
-{
-lean_object* x_47; 
-x_47 = lean_box(0);
-x_13 = x_47;
-goto block_41;
-}
-else
-{
-lean_object* x_48; lean_object* x_49; lean_object* x_50; uint8_t x_51; 
-x_48 = lean_unsigned_to_nat(0u);
-x_49 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_48);
-x_50 = lean_unsigned_to_nat(2u);
-x_51 = lean_nat_dec_eq(x_49, x_50);
-lean_dec(x_49);
-if (x_51 == 0)
-{
-lean_object* x_52; 
-x_52 = lean_box(0);
-x_13 = x_52;
-goto block_41;
-}
-else
-{
-lean_object* x_53; 
-lean_dec(x_12);
-x_53 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_53;
-}
-}
-}
-else
-{
-lean_object* x_54; lean_object* x_55; lean_object* x_56; uint8_t x_57; 
-x_54 = lean_unsigned_to_nat(0u);
-x_55 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_1, x_54);
-x_56 = lean_unsigned_to_nat(4u);
-x_57 = lean_nat_dec_eq(x_55, x_56);
-if (x_57 == 0)
-{
-lean_object* x_58; uint8_t x_59; 
-x_58 = l_Lean_Meta_Grind_propagateConectivesUp___closed__8;
-x_59 = lean_name_eq(x_12, x_58);
-if (x_59 == 0)
-{
-lean_object* x_60; 
-lean_dec(x_55);
-x_60 = lean_box(0);
-x_13 = x_60;
-goto block_41;
-}
-else
-{
-lean_object* x_61; uint8_t x_62; 
-x_61 = lean_unsigned_to_nat(2u);
-x_62 = lean_nat_dec_eq(x_55, x_61);
-lean_dec(x_55);
-if (x_62 == 0)
-{
-lean_object* x_63; 
-x_63 = lean_box(0);
-x_13 = x_63;
-goto block_41;
+x_32 = lean_box(0);
+x_33 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_33, 0, x_32);
+lean_ctor_set(x_33, 1, x_10);
+return x_33;
 }
 else
 {
-lean_object* x_64; 
-lean_dec(x_12);
-x_64 = l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_64;
+lean_object* x_34; 
+x_34 = l_Lean_Meta_Grind_propagateHEqUp___lambda__1(x_1, x_24, x_15, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_34;
 }
 }
 }
-else
-{
-lean_object* x_65; 
-lean_dec(x_55);
-lean_dec(x_12);
-x_65 = l_Lean_Meta_Grind_propagateHEqDown(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_65;
 }
 }
 }
 }
-else
+static lean_object* _init_l___regBuiltin_Lean_Meta_Grind_propagateHEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2806____closed__1() {
+_start:
 {
-lean_object* x_76; lean_object* x_77; 
-lean_dec(x_11);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_1);
-x_76 = lean_box(0);
-x_77 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_77, 0, x_76);
-lean_ctor_set(x_77, 1, x_10);
-return x_77;
-}
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_propagateHEqUp), 10, 0);
+return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateConnectivesDown___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, lean_object* x_10) {
+LEAN_EXPORT lean_object* l___regBuiltin_Lean_Meta_Grind_propagateHEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2806_(lean_object* x_1) {
 _start:
 {
-lean_object* x_11; 
-x_11 = l_Lean_Meta_Grind_propagateConnectivesDown(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_11;
+lean_object* x_2; uint8_t x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = l_Lean_Meta_Grind_propagateHEqDown___closed__2;
+x_3 = 1;
+x_4 = l___regBuiltin_Lean_Meta_Grind_propagateHEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2806____closed__1;
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_2, x_3, x_4, x_1);
+return x_5;
 }
 }
-lean_object* initialize_Init_Grind_Lemmas(uint8_t builtin, lean_object*);
+lean_object* initialize_Init_Grind(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Meta_Tactic_Grind_Proof(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind_PropagatorAttr(uint8_t builtin, lean_object*);
 static bool _G_initialized = false;
 LEAN_EXPORT lean_object* initialize_Lean_Meta_Tactic_Grind_Propagate(uint8_t builtin, lean_object* w) {
 lean_object * res;
 if (_G_initialized) return lean_io_result_mk_ok(lean_box(0));
 _G_initialized = true;
-res = initialize_Init_Grind_Lemmas(builtin, lean_io_mk_world());
+res = initialize_Init_Grind(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 res = initialize_Lean_Meta_Tactic_Grind_Proof(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__2);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__3();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__3);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__4();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__4);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__5();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__5);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__6();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__6);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__7 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__7();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__7);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__8 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__8();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__8);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__9 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__9();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__9);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__10 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__10();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__10);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__11 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__11();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__11);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__12 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__12();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__12);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__13 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__13();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__13);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__14 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__14();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndUp___closed__14);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__2();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__2);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__3();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__3);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__4();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__4);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__5();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__5);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__6();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateAndDown___closed__6);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__2();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__2);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__3();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__3);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__4();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__4);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__5();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__5);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__6();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__6);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__7 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__7();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__7);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__8 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__8();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__8);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__9 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__9();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__9);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__10 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__10();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__10);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__11 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__11();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__11);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__12 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__12();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrUp___closed__12);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__2();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__2);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__3();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__3);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__4();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__4);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__5();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__5);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__6();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateOrDown___closed__6);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__2();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__2);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__3();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__3);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__4();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__4);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__5();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__5);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__6();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotUp___closed__6);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__2();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__2);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__3();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__3);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__4();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__4);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__5();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__5);
-l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__6();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Propagate_0__Lean_Meta_Grind_propagateNotDown___closed__6);
+res = initialize_Lean_Meta_Tactic_Grind_PropagatorAttr(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1 = _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__1);
+l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2 = _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__2);
+l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__3 = _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__3);
+l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__4 = _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__4);
+l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__5 = _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__5);
+l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__6 = _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__6();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__6);
+l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__7 = _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__7();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__7);
+l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__8 = _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__8();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__8);
+l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__9 = _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__9();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__9);
+l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__10 = _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__10();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__10);
+l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__11 = _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__11();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__11);
+l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__12 = _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__12();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__12);
+l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__13 = _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__13();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__13);
+l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__14 = _init_l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__14();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___lambda__1___closed__14);
+l_Lean_Meta_Grind_propagateAndUp___closed__1 = _init_l_Lean_Meta_Grind_propagateAndUp___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___closed__1);
+l_Lean_Meta_Grind_propagateAndUp___closed__2 = _init_l_Lean_Meta_Grind_propagateAndUp___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___closed__2);
+l_Lean_Meta_Grind_propagateAndUp___closed__3 = _init_l_Lean_Meta_Grind_propagateAndUp___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndUp___closed__3);
+l___regBuiltin_Lean_Meta_Grind_propagateAndUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_383____closed__1 = _init_l___regBuiltin_Lean_Meta_Grind_propagateAndUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_383____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Meta_Grind_propagateAndUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_383____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Meta_Grind_propagateAndUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_383_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__1 = _init_l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__1);
+l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__2 = _init_l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__2);
+l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__3 = _init_l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__3);
+l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__4 = _init_l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__4);
+l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__5 = _init_l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__5);
+l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__6 = _init_l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__6();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateAndDown___lambda__1___closed__6);
+l___regBuiltin_Lean_Meta_Grind_propagateAndDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_604____closed__1 = _init_l___regBuiltin_Lean_Meta_Grind_propagateAndDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_604____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Meta_Grind_propagateAndDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_604____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Meta_Grind_propagateAndDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_604_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__1 = _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__1);
+l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__2 = _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__2);
+l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__3 = _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__3);
+l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__4 = _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__4);
+l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__5 = _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__5);
+l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__6 = _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__6();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__6);
+l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__7 = _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__7();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__7);
+l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__8 = _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__8();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__8);
+l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__9 = _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__9();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__9);
+l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__10 = _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__10();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__10);
+l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__11 = _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__11();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__11);
+l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__12 = _init_l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__12();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrUp___lambda__1___closed__12);
+l_Lean_Meta_Grind_propagateOrUp___closed__1 = _init_l_Lean_Meta_Grind_propagateOrUp___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrUp___closed__1);
+l_Lean_Meta_Grind_propagateOrUp___closed__2 = _init_l_Lean_Meta_Grind_propagateOrUp___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrUp___closed__2);
+l___regBuiltin_Lean_Meta_Grind_propagateOrUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_985____closed__1 = _init_l___regBuiltin_Lean_Meta_Grind_propagateOrUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_985____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Meta_Grind_propagateOrUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_985____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Meta_Grind_propagateOrUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_985_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__1 = _init_l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__1);
+l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__2 = _init_l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__2);
+l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__3 = _init_l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__3);
+l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__4 = _init_l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__4);
+l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__5 = _init_l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__5);
+l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__6 = _init_l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__6();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateOrDown___lambda__1___closed__6);
+l___regBuiltin_Lean_Meta_Grind_propagateOrDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1206____closed__1 = _init_l___regBuiltin_Lean_Meta_Grind_propagateOrDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1206____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Meta_Grind_propagateOrDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1206____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Meta_Grind_propagateOrDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1206_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__1 = _init_l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__1);
+l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__2 = _init_l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__2);
+l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__3 = _init_l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__3);
+l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__4 = _init_l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__4);
+l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__5 = _init_l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__5);
+l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__6 = _init_l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__6();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotUp___lambda__1___closed__6);
+l_Lean_Meta_Grind_propagateNotUp___closed__1 = _init_l_Lean_Meta_Grind_propagateNotUp___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotUp___closed__1);
+l_Lean_Meta_Grind_propagateNotUp___closed__2 = _init_l_Lean_Meta_Grind_propagateNotUp___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotUp___closed__2);
+l___regBuiltin_Lean_Meta_Grind_propagateNotUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1426____closed__1 = _init_l___regBuiltin_Lean_Meta_Grind_propagateNotUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1426____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Meta_Grind_propagateNotUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1426____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Meta_Grind_propagateNotUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1426_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__1 = _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__1);
+l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__2 = _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__2);
+l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__3 = _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__3);
+l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__4 = _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__4);
+l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__5 = _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__5);
+l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__6 = _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__6();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__6);
+l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__7 = _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__7();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__7);
+l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__8 = _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__8();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__8);
+l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__9 = _init_l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__9();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateNotDown___lambda__1___closed__9);
+l___regBuiltin_Lean_Meta_Grind_propagateNotDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1706____closed__1 = _init_l___regBuiltin_Lean_Meta_Grind_propagateNotDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1706____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Meta_Grind_propagateNotDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1706____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Meta_Grind_propagateNotDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_1706_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__1 = _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__1);
+l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__2 = _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__2);
+l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__3 = _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__3);
+l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__4 = _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__4);
+l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__5 = _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__5);
+l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__6 = _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__6();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__6);
+l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__7 = _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__7();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__7);
+l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__8 = _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__8();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__8);
+l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__9 = _init_l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__9();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___lambda__1___closed__9);
 l_Lean_Meta_Grind_propagateEqUp___closed__1 = _init_l_Lean_Meta_Grind_propagateEqUp___closed__1();
 lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___closed__1);
 l_Lean_Meta_Grind_propagateEqUp___closed__2 = _init_l_Lean_Meta_Grind_propagateEqUp___closed__2();
 lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___closed__2);
-l_Lean_Meta_Grind_propagateEqUp___closed__3 = _init_l_Lean_Meta_Grind_propagateEqUp___closed__3();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___closed__3);
-l_Lean_Meta_Grind_propagateEqUp___closed__4 = _init_l_Lean_Meta_Grind_propagateEqUp___closed__4();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___closed__4);
-l_Lean_Meta_Grind_propagateEqUp___closed__5 = _init_l_Lean_Meta_Grind_propagateEqUp___closed__5();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___closed__5);
-l_Lean_Meta_Grind_propagateEqUp___closed__6 = _init_l_Lean_Meta_Grind_propagateEqUp___closed__6();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___closed__6);
-l_Lean_Meta_Grind_propagateEqUp___closed__7 = _init_l_Lean_Meta_Grind_propagateEqUp___closed__7();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___closed__7);
-l_Lean_Meta_Grind_propagateEqUp___closed__8 = _init_l_Lean_Meta_Grind_propagateEqUp___closed__8();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___closed__8);
-l_Lean_Meta_Grind_propagateEqUp___closed__9 = _init_l_Lean_Meta_Grind_propagateEqUp___closed__9();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateEqUp___closed__9);
-l_Lean_Meta_Grind_propagateConectivesUp___closed__1 = _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__1();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateConectivesUp___closed__1);
-l_Lean_Meta_Grind_propagateConectivesUp___closed__2 = _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__2();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateConectivesUp___closed__2);
-l_Lean_Meta_Grind_propagateConectivesUp___closed__3 = _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__3();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateConectivesUp___closed__3);
-l_Lean_Meta_Grind_propagateConectivesUp___closed__4 = _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__4();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateConectivesUp___closed__4);
-l_Lean_Meta_Grind_propagateConectivesUp___closed__5 = _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__5();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateConectivesUp___closed__5);
-l_Lean_Meta_Grind_propagateConectivesUp___closed__6 = _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__6();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateConectivesUp___closed__6);
-l_Lean_Meta_Grind_propagateConectivesUp___closed__7 = _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__7();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateConectivesUp___closed__7);
-l_Lean_Meta_Grind_propagateConectivesUp___closed__8 = _init_l_Lean_Meta_Grind_propagateConectivesUp___closed__8();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateConectivesUp___closed__8);
-l_Lean_Meta_Grind_propagateConnectivesDown___closed__1 = _init_l_Lean_Meta_Grind_propagateConnectivesDown___closed__1();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateConnectivesDown___closed__1);
-l_Lean_Meta_Grind_propagateConnectivesDown___closed__2 = _init_l_Lean_Meta_Grind_propagateConnectivesDown___closed__2();
-lean_mark_persistent(l_Lean_Meta_Grind_propagateConnectivesDown___closed__2);
-return lean_io_result_mk_ok(lean_box(0));
+l___regBuiltin_Lean_Meta_Grind_propagateEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2058____closed__1 = _init_l___regBuiltin_Lean_Meta_Grind_propagateEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2058____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Meta_Grind_propagateEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2058____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Meta_Grind_propagateEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2058_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__1 = _init_l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__1);
+l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__2 = _init_l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__2);
+l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__3 = _init_l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateEqDown___lambda__1___closed__3);
+l___regBuiltin_Lean_Meta_Grind_propagateEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2287____closed__1 = _init_l___regBuiltin_Lean_Meta_Grind_propagateEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2287____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Meta_Grind_propagateEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2287____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Meta_Grind_propagateEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2287_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l_Lean_Meta_Grind_propagateHEqDown___closed__1 = _init_l_Lean_Meta_Grind_propagateHEqDown___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateHEqDown___closed__1);
+l_Lean_Meta_Grind_propagateHEqDown___closed__2 = _init_l_Lean_Meta_Grind_propagateHEqDown___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_propagateHEqDown___closed__2);
+l___regBuiltin_Lean_Meta_Grind_propagateHEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2546____closed__1 = _init_l___regBuiltin_Lean_Meta_Grind_propagateHEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2546____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Meta_Grind_propagateHEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2546____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Meta_Grind_propagateHEqDown_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2546_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}l___regBuiltin_Lean_Meta_Grind_propagateHEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2806____closed__1 = _init_l___regBuiltin_Lean_Meta_Grind_propagateHEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2806____closed__1();
+lean_mark_persistent(l___regBuiltin_Lean_Meta_Grind_propagateHEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2806____closed__1);
+if (builtin) {res = l___regBuiltin_Lean_Meta_Grind_propagateHEqUp_declare__1____x40_Lean_Meta_Tactic_Grind_Propagate___hyg_2806_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}return lean_io_result_mk_ok(lean_box(0));
 }
 #ifdef __cplusplus
 }
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Grind/PropagatorAttr.c b/stage0/stdlib/Lean/Meta/Tactic/Grind/PropagatorAttr.c
new file mode 100644
index 000000000000..2beff5c9839d
--- /dev/null
+++ b/stage0/stdlib/Lean/Meta/Tactic/Grind/PropagatorAttr.c
@@ -0,0 +1,3679 @@
+// Lean compiler output
+// Module: Lean.Meta.Tactic.Grind.PropagatorAttr
+// Imports: Init.Grind Lean.Meta.Tactic.Grind.Proof
+#include <lean/lean.h>
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Wunused-parameter"
+#pragma clang diagnostic ignored "-Wunused-label"
+#elif defined(__GNUC__) && !defined(__CLANG__)
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#pragma GCC diagnostic ignored "-Wunused-label"
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___closed__2;
+lean_object* l_Lean_Expr_const___override(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__8;
+lean_object* lean_format_pretty(lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__2___closed__1;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4(uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__7;
+static lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__7;
+lean_object* lean_mk_empty_array_with_capacity(lean_object*);
+lean_object* l_Lean_mkAppN(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__5___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__26;
+LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__11(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__1;
+static lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__4;
+static lean_object* l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__1;
+lean_object* l_Lean_Syntax_formatStxAux(lean_object*, uint8_t, lean_object*, lean_object*);
+size_t lean_uint64_to_usize(uint64_t);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__12;
+lean_object* l_Lean_Name_toString(lean_object*, uint8_t, lean_object*);
+LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_Raw_u2080_expand_go___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__3(lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__6;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__8;
+lean_object* lean_mk_array(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_registerBuiltinUpwardPropagator(lean_object*, lean_object*, lean_object*);
+static uint64_t l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__7;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instInhabitedBuiltinPropagators;
+lean_object* l_Lean_replaceRef(lean_object*, lean_object*);
+lean_object* lean_array_fget(lean_object*, lean_object*);
+lean_object* lean_array_fset(lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__3;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_registerBuiltinDownwardPropagator(lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__14;
+static lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__2;
+LEAN_EXPORT lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Nat_nextPowerOfTwo_go(lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_resolveGlobalName___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_stringToMessageData(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__13(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__14;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__12;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2(lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__19;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__15;
+static lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__6;
+LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_foldlM___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__4(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__17;
+lean_object* l_Lean_initializing(lean_object*);
+lean_object* l_List_filterMapTR_go___at_Lean_preprocessSyntaxAndResolve___spec__1(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__5;
+size_t lean_usize_of_nat(lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__20;
+lean_object* l_List_mapTR_loop___at_Lean_filterFieldList___spec__2(lean_object*, lean_object*);
+lean_object* lean_st_ref_take(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__2;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__19;
+lean_object* l_Lean_declareBuiltin(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint64_t lean_uint64_shift_right(uint64_t, uint64_t);
+lean_object* lean_nat_div(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__4;
+LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(lean_object*);
+static lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__3;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__25;
+lean_object* l___private_Lean_CoreM_0__Lean_Core_mkFreshNameImp(lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___closed__1;
+lean_object* l_Lean_Syntax_getKind(lean_object*);
+lean_object* l_Lean_MessageData_ofFormat(lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__2___boxed(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__11;
+static lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__1;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__22;
+lean_object* lean_st_ref_get(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__5;
+static lean_object* l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__1;
+LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__18;
+uint8_t l_List_isEmpty___rarg(lean_object*);
+lean_object* lean_st_mk_ref(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__5___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__12___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Name_num___override(lean_object*, lean_object*);
+lean_object* l_Lean_Name_append(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__17;
+LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__12(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__4;
+LEAN_EXPORT lean_object* l_Lean_resolveGlobalName___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__13;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT uint8_t l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__2(lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*);
+uint8_t lean_name_eq(lean_object*, lean_object*);
+lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_builtinPropagatorsRef;
+static lean_object* l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__3;
+lean_object* l_Lean_Syntax_getArg(lean_object*, lean_object*);
+lean_object* l___private_Init_Util_0__mkPanicMessageWithDecl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__16;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__1;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__9;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__23;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__4;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__10;
+extern lean_object* l_Lean_Meta_instMonadMetaM;
+extern lean_object* l_Std_Format_defWidth;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__22;
+lean_object* l_Lean_MessageData_ofConstName(lean_object*, uint8_t);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__21;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__3;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__21;
+static lean_object* l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__4;
+lean_object* l_Lean_throwError___at_Lean_Meta_mkSimpCongrTheorem___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__5;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__23;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__9;
+static lean_object* l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__2;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__20;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__3;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__13;
+uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__2;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__10;
+LEAN_EXPORT lean_object* l___private_Lean_ResolveName_0__Lean_resolveGlobalConstCore___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_resolveGlobalConstNoOverload___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint64_t l_Lean_Name_hash___override(lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__6;
+lean_object* l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(lean_object*, lean_object*, lean_object*);
+uint64_t lean_uint64_xor(uint64_t, uint64_t);
+lean_object* lean_panic_fn(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__18;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(lean_object*, uint8_t, lean_object*, lean_object*);
+lean_object* l_Lean_ResolveName_resolveGlobalName(lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__11___closed__1;
+lean_object* lean_nat_mul(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__1(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__5___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__3(lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT uint8_t l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(lean_object*, lean_object*);
+lean_object* l_Lean_PersistentHashMap_mkEmptyEntriesArray(lean_object*, lean_object*);
+lean_object* l_Lean_registerBuiltinAttribute(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__24;
+lean_object* l_List_toString___at_Lean_ensureNoOverload___spec__2(lean_object*);
+lean_object* l___private_Lean_ToExpr_0__Lean_Name_toExprAux(lean_object*);
+size_t lean_usize_sub(size_t, size_t);
+lean_object* lean_array_mk(lean_object*);
+static lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__4;
+lean_object* l_List_mapTR_loop___at_Lean_ensureNonAmbiguous___spec__2(lean_object*, lean_object*);
+extern lean_object* l_Lean_instInhabitedName;
+lean_object* lean_array_uget(lean_object*, size_t);
+lean_object* l_instInhabitedOfMonad___rarg(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__9___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* lean_st_ref_set(lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__13___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Name_mkStr4(lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_52_(lean_object*);
+LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1___boxed(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__16;
+static lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__3;
+static lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__1;
+lean_object* lean_string_append(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__15;
+LEAN_EXPORT lean_object* l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* lean_array_get_size(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1;
+uint8_t lean_nat_dec_le(lean_object*, lean_object*);
+lean_object* lean_nat_add(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__2;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__2;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655_(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__8(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_ResolveName_0__Lean_resolveGlobalConstCore___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_throwError___at_Lean_Attribute_Builtin_ensureNoArgs___spec__2(lean_object*, lean_object*, lean_object*, lean_object*);
+uint64_t l___private_Lean_Meta_Basic_0__Lean_Meta_Config_toKey(lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__4;
+lean_object* lean_array_uset(lean_object*, size_t, lean_object*);
+static lean_object* l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__2;
+lean_object* l_List_filterTR_loop___at_Lean_filterFieldList___spec__1(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__11;
+LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__9(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__2;
+size_t lean_usize_land(size_t, size_t);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1;
+LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__8___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__1;
+static lean_object* _init_l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_unsigned_to_nat(10u);
+x_2 = lean_unsigned_to_nat(1u);
+x_3 = l_Nat_nextPowerOfTwo_go(x_1, x_2, lean_box(0));
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__1;
+x_3 = lean_mk_array(x_2, x_1);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_unsigned_to_nat(0u);
+x_2 = l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__2;
+x_3 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_3, 0, x_1);
+lean_ctor_set(x_3, 1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__3;
+x_2 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_2, 0, x_1);
+lean_ctor_set(x_2, 1, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_instInhabitedBuiltinPropagators() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__4;
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_52_(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; lean_object* x_3; uint8_t x_4; 
+x_2 = l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__4;
+x_3 = lean_st_mk_ref(x_2, x_1);
+x_4 = !lean_is_exclusive(x_3);
+if (x_4 == 0)
+{
+return x_3;
+}
+else
+{
+lean_object* x_5; lean_object* x_6; lean_object* x_7; 
+x_5 = lean_ctor_get(x_3, 0);
+x_6 = lean_ctor_get(x_3, 1);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_dec(x_3);
+x_7 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_7, 0, x_5);
+lean_ctor_set(x_7, 1, x_6);
+return x_7;
+}
+}
+}
+LEAN_EXPORT uint8_t l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(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; uint8_t x_6; 
+x_4 = lean_ctor_get(x_2, 0);
+x_5 = lean_ctor_get(x_2, 2);
+x_6 = lean_name_eq(x_4, x_1);
+if (x_6 == 0)
+{
+x_2 = x_5;
+goto _start;
+}
+else
+{
+uint8_t x_8; 
+x_8 = 1;
+return x_8;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_foldlM___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__4(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; uint64_t x_7; uint64_t x_8; uint64_t x_9; uint64_t x_10; uint64_t x_11; uint64_t x_12; uint64_t x_13; size_t x_14; size_t x_15; size_t x_16; size_t x_17; size_t x_18; lean_object* x_19; lean_object* x_20; 
+x_4 = lean_ctor_get(x_2, 0);
+x_5 = lean_ctor_get(x_2, 2);
+x_6 = lean_array_get_size(x_1);
+x_7 = l_Lean_Name_hash___override(x_4);
+x_8 = 32;
+x_9 = lean_uint64_shift_right(x_7, x_8);
+x_10 = lean_uint64_xor(x_7, x_9);
+x_11 = 16;
+x_12 = lean_uint64_shift_right(x_10, x_11);
+x_13 = lean_uint64_xor(x_10, x_12);
+x_14 = lean_uint64_to_usize(x_13);
+x_15 = lean_usize_of_nat(x_6);
+lean_dec(x_6);
+x_16 = 1;
+x_17 = lean_usize_sub(x_15, x_16);
+x_18 = lean_usize_land(x_14, x_17);
+x_19 = lean_array_uget(x_1, x_18);
+lean_ctor_set(x_2, 2, x_19);
+x_20 = lean_array_uset(x_1, x_18, x_2);
+x_1 = x_20;
+x_2 = x_5;
+goto _start;
+}
+else
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; uint64_t x_26; uint64_t x_27; uint64_t x_28; uint64_t x_29; uint64_t x_30; uint64_t x_31; uint64_t x_32; size_t x_33; size_t x_34; size_t x_35; size_t x_36; size_t x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+x_22 = lean_ctor_get(x_2, 0);
+x_23 = lean_ctor_get(x_2, 1);
+x_24 = lean_ctor_get(x_2, 2);
+lean_inc(x_24);
+lean_inc(x_23);
+lean_inc(x_22);
+lean_dec(x_2);
+x_25 = lean_array_get_size(x_1);
+x_26 = l_Lean_Name_hash___override(x_22);
+x_27 = 32;
+x_28 = lean_uint64_shift_right(x_26, x_27);
+x_29 = lean_uint64_xor(x_26, x_28);
+x_30 = 16;
+x_31 = lean_uint64_shift_right(x_29, x_30);
+x_32 = lean_uint64_xor(x_29, x_31);
+x_33 = lean_uint64_to_usize(x_32);
+x_34 = lean_usize_of_nat(x_25);
+lean_dec(x_25);
+x_35 = 1;
+x_36 = lean_usize_sub(x_34, x_35);
+x_37 = lean_usize_land(x_33, x_36);
+x_38 = lean_array_uget(x_1, x_37);
+x_39 = lean_alloc_ctor(1, 3, 0);
+lean_ctor_set(x_39, 0, x_22);
+lean_ctor_set(x_39, 1, x_23);
+lean_ctor_set(x_39, 2, x_38);
+x_40 = lean_array_uset(x_1, x_37, x_39);
+x_1 = x_40;
+x_2 = x_24;
+goto _start;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_Raw_u2080_expand_go___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__3(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_Std_DHashMap_Internal_AssocList_foldlM___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__4(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_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(lean_object* x_1) {
+_start:
+{
+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; 
+x_2 = lean_array_get_size(x_1);
+x_3 = lean_unsigned_to_nat(2u);
+x_4 = lean_nat_mul(x_2, x_3);
+lean_dec(x_2);
+x_5 = lean_box(0);
+x_6 = lean_mk_array(x_4, x_5);
+x_7 = lean_unsigned_to_nat(0u);
+x_8 = l_Std_DHashMap_Internal_Raw_u2080_expand_go___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__3(x_7, x_1, x_6);
+return x_8;
+}
+}
+LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
+_start:
+{
+if (lean_obj_tag(x_3) == 0)
+{
+lean_object* x_4; 
+lean_dec(x_2);
+lean_dec(x_1);
+x_4 = lean_box(0);
+return x_4;
+}
+else
+{
+uint8_t x_5; 
+x_5 = !lean_is_exclusive(x_3);
+if (x_5 == 0)
+{
+lean_object* x_6; lean_object* x_7; lean_object* x_8; uint8_t x_9; 
+x_6 = lean_ctor_get(x_3, 0);
+x_7 = lean_ctor_get(x_3, 1);
+x_8 = lean_ctor_get(x_3, 2);
+x_9 = lean_name_eq(x_6, x_1);
+if (x_9 == 0)
+{
+lean_object* x_10; 
+x_10 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_8);
+lean_ctor_set(x_3, 2, x_10);
+return x_3;
+}
+else
+{
+lean_dec(x_7);
+lean_dec(x_6);
+lean_ctor_set(x_3, 1, x_2);
+lean_ctor_set(x_3, 0, x_1);
+return x_3;
+}
+}
+else
+{
+lean_object* x_11; lean_object* x_12; lean_object* x_13; uint8_t x_14; 
+x_11 = lean_ctor_get(x_3, 0);
+x_12 = lean_ctor_get(x_3, 1);
+x_13 = lean_ctor_get(x_3, 2);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_dec(x_3);
+x_14 = lean_name_eq(x_11, x_1);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; 
+x_15 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_13);
+x_16 = lean_alloc_ctor(1, 3, 0);
+lean_ctor_set(x_16, 0, x_11);
+lean_ctor_set(x_16, 1, x_12);
+lean_ctor_set(x_16, 2, x_15);
+return x_16;
+}
+else
+{
+lean_object* x_17; 
+lean_dec(x_12);
+lean_dec(x_11);
+x_17 = lean_alloc_ctor(1, 3, 0);
+lean_ctor_set(x_17, 0, x_1);
+lean_ctor_set(x_17, 1, x_2);
+lean_ctor_set(x_17, 2, x_13);
+return x_17;
+}
+}
+}
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_Meta_Grind_builtinPropagatorsRef;
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+_start:
+{
+lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; uint8_t x_10; 
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1;
+x_6 = lean_st_ref_take(x_5, x_4);
+x_7 = lean_ctor_get(x_6, 0);
+lean_inc(x_7);
+x_8 = lean_ctor_get(x_7, 1);
+lean_inc(x_8);
+x_9 = lean_ctor_get(x_6, 1);
+lean_inc(x_9);
+lean_dec(x_6);
+x_10 = !lean_is_exclusive(x_7);
+if (x_10 == 0)
+{
+lean_object* x_11; uint8_t x_12; 
+x_11 = lean_ctor_get(x_7, 1);
+lean_dec(x_11);
+x_12 = !lean_is_exclusive(x_8);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; uint64_t x_16; uint64_t x_17; uint64_t x_18; uint64_t x_19; uint64_t x_20; uint64_t x_21; uint64_t x_22; size_t x_23; size_t x_24; size_t x_25; size_t x_26; size_t x_27; lean_object* x_28; uint8_t x_29; 
+x_13 = lean_ctor_get(x_8, 0);
+x_14 = lean_ctor_get(x_8, 1);
+x_15 = lean_array_get_size(x_14);
+x_16 = l_Lean_Name_hash___override(x_1);
+x_17 = 32;
+x_18 = lean_uint64_shift_right(x_16, x_17);
+x_19 = lean_uint64_xor(x_16, x_18);
+x_20 = 16;
+x_21 = lean_uint64_shift_right(x_19, x_20);
+x_22 = lean_uint64_xor(x_19, x_21);
+x_23 = lean_uint64_to_usize(x_22);
+x_24 = lean_usize_of_nat(x_15);
+lean_dec(x_15);
+x_25 = 1;
+x_26 = lean_usize_sub(x_24, x_25);
+x_27 = lean_usize_land(x_23, x_26);
+x_28 = lean_array_uget(x_14, x_27);
+x_29 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_1, x_28);
+if (x_29 == 0)
+{
+lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; uint8_t x_39; 
+x_30 = lean_unsigned_to_nat(1u);
+x_31 = lean_nat_add(x_13, x_30);
+lean_dec(x_13);
+x_32 = lean_alloc_ctor(1, 3, 0);
+lean_ctor_set(x_32, 0, x_1);
+lean_ctor_set(x_32, 1, x_2);
+lean_ctor_set(x_32, 2, x_28);
+x_33 = lean_array_uset(x_14, x_27, x_32);
+x_34 = lean_unsigned_to_nat(4u);
+x_35 = lean_nat_mul(x_31, x_34);
+x_36 = lean_unsigned_to_nat(3u);
+x_37 = lean_nat_div(x_35, x_36);
+lean_dec(x_35);
+x_38 = lean_array_get_size(x_33);
+x_39 = lean_nat_dec_le(x_37, x_38);
+lean_dec(x_38);
+lean_dec(x_37);
+if (x_39 == 0)
+{
+lean_object* x_40; lean_object* x_41; uint8_t x_42; 
+x_40 = l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(x_33);
+lean_ctor_set(x_8, 1, x_40);
+lean_ctor_set(x_8, 0, x_31);
+x_41 = lean_st_ref_set(x_5, x_7, x_9);
+x_42 = !lean_is_exclusive(x_41);
+if (x_42 == 0)
+{
+return x_41;
+}
+else
+{
+lean_object* x_43; lean_object* x_44; lean_object* x_45; 
+x_43 = lean_ctor_get(x_41, 0);
+x_44 = lean_ctor_get(x_41, 1);
+lean_inc(x_44);
+lean_inc(x_43);
+lean_dec(x_41);
+x_45 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_45, 0, x_43);
+lean_ctor_set(x_45, 1, x_44);
+return x_45;
+}
+}
+else
+{
+lean_object* x_46; uint8_t x_47; 
+lean_ctor_set(x_8, 1, x_33);
+lean_ctor_set(x_8, 0, x_31);
+x_46 = lean_st_ref_set(x_5, x_7, x_9);
+x_47 = !lean_is_exclusive(x_46);
+if (x_47 == 0)
+{
+return x_46;
+}
+else
+{
+lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_48 = lean_ctor_get(x_46, 0);
+x_49 = lean_ctor_get(x_46, 1);
+lean_inc(x_49);
+lean_inc(x_48);
+lean_dec(x_46);
+x_50 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_50, 0, x_48);
+lean_ctor_set(x_50, 1, x_49);
+return x_50;
+}
+}
+}
+else
+{
+lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; uint8_t x_56; 
+x_51 = lean_box(0);
+x_52 = lean_array_uset(x_14, x_27, x_51);
+x_53 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_28);
+x_54 = lean_array_uset(x_52, x_27, x_53);
+lean_ctor_set(x_8, 1, x_54);
+x_55 = lean_st_ref_set(x_5, x_7, x_9);
+x_56 = !lean_is_exclusive(x_55);
+if (x_56 == 0)
+{
+return x_55;
+}
+else
+{
+lean_object* x_57; lean_object* x_58; lean_object* x_59; 
+x_57 = lean_ctor_get(x_55, 0);
+x_58 = lean_ctor_get(x_55, 1);
+lean_inc(x_58);
+lean_inc(x_57);
+lean_dec(x_55);
+x_59 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_59, 0, x_57);
+lean_ctor_set(x_59, 1, x_58);
+return x_59;
+}
+}
+}
+else
+{
+lean_object* x_60; lean_object* x_61; lean_object* x_62; uint64_t x_63; uint64_t x_64; uint64_t x_65; uint64_t x_66; uint64_t x_67; uint64_t x_68; uint64_t x_69; size_t x_70; size_t x_71; size_t x_72; size_t x_73; size_t x_74; lean_object* x_75; uint8_t x_76; 
+x_60 = lean_ctor_get(x_8, 0);
+x_61 = lean_ctor_get(x_8, 1);
+lean_inc(x_61);
+lean_inc(x_60);
+lean_dec(x_8);
+x_62 = lean_array_get_size(x_61);
+x_63 = l_Lean_Name_hash___override(x_1);
+x_64 = 32;
+x_65 = lean_uint64_shift_right(x_63, x_64);
+x_66 = lean_uint64_xor(x_63, x_65);
+x_67 = 16;
+x_68 = lean_uint64_shift_right(x_66, x_67);
+x_69 = lean_uint64_xor(x_66, x_68);
+x_70 = lean_uint64_to_usize(x_69);
+x_71 = lean_usize_of_nat(x_62);
+lean_dec(x_62);
+x_72 = 1;
+x_73 = lean_usize_sub(x_71, x_72);
+x_74 = lean_usize_land(x_70, x_73);
+x_75 = lean_array_uget(x_61, x_74);
+x_76 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_1, x_75);
+if (x_76 == 0)
+{
+lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; uint8_t x_86; 
+x_77 = lean_unsigned_to_nat(1u);
+x_78 = lean_nat_add(x_60, x_77);
+lean_dec(x_60);
+x_79 = lean_alloc_ctor(1, 3, 0);
+lean_ctor_set(x_79, 0, x_1);
+lean_ctor_set(x_79, 1, x_2);
+lean_ctor_set(x_79, 2, x_75);
+x_80 = lean_array_uset(x_61, x_74, x_79);
+x_81 = lean_unsigned_to_nat(4u);
+x_82 = lean_nat_mul(x_78, x_81);
+x_83 = lean_unsigned_to_nat(3u);
+x_84 = lean_nat_div(x_82, x_83);
+lean_dec(x_82);
+x_85 = lean_array_get_size(x_80);
+x_86 = lean_nat_dec_le(x_84, x_85);
+lean_dec(x_85);
+lean_dec(x_84);
+if (x_86 == 0)
+{
+lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; 
+x_87 = l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(x_80);
+x_88 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_88, 0, x_78);
+lean_ctor_set(x_88, 1, x_87);
+lean_ctor_set(x_7, 1, x_88);
+x_89 = lean_st_ref_set(x_5, x_7, x_9);
+x_90 = lean_ctor_get(x_89, 0);
+lean_inc(x_90);
+x_91 = lean_ctor_get(x_89, 1);
+lean_inc(x_91);
+if (lean_is_exclusive(x_89)) {
+ lean_ctor_release(x_89, 0);
+ lean_ctor_release(x_89, 1);
+ x_92 = x_89;
+} else {
+ lean_dec_ref(x_89);
+ x_92 = lean_box(0);
+}
+if (lean_is_scalar(x_92)) {
+ x_93 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_93 = x_92;
+}
+lean_ctor_set(x_93, 0, x_90);
+lean_ctor_set(x_93, 1, x_91);
+return x_93;
+}
+else
+{
+lean_object* x_94; lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; lean_object* x_99; 
+x_94 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_94, 0, x_78);
+lean_ctor_set(x_94, 1, x_80);
+lean_ctor_set(x_7, 1, x_94);
+x_95 = lean_st_ref_set(x_5, x_7, x_9);
+x_96 = lean_ctor_get(x_95, 0);
+lean_inc(x_96);
+x_97 = lean_ctor_get(x_95, 1);
+lean_inc(x_97);
+if (lean_is_exclusive(x_95)) {
+ lean_ctor_release(x_95, 0);
+ lean_ctor_release(x_95, 1);
+ x_98 = x_95;
+} else {
+ lean_dec_ref(x_95);
+ x_98 = lean_box(0);
+}
+if (lean_is_scalar(x_98)) {
+ x_99 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_99 = x_98;
+}
+lean_ctor_set(x_99, 0, x_96);
+lean_ctor_set(x_99, 1, x_97);
+return x_99;
+}
+}
+else
+{
+lean_object* x_100; lean_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; lean_object* x_106; lean_object* x_107; lean_object* x_108; lean_object* x_109; 
+x_100 = lean_box(0);
+x_101 = lean_array_uset(x_61, x_74, x_100);
+x_102 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_75);
+x_103 = lean_array_uset(x_101, x_74, x_102);
+x_104 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_104, 0, x_60);
+lean_ctor_set(x_104, 1, x_103);
+lean_ctor_set(x_7, 1, x_104);
+x_105 = lean_st_ref_set(x_5, x_7, x_9);
+x_106 = lean_ctor_get(x_105, 0);
+lean_inc(x_106);
+x_107 = lean_ctor_get(x_105, 1);
+lean_inc(x_107);
+if (lean_is_exclusive(x_105)) {
+ lean_ctor_release(x_105, 0);
+ lean_ctor_release(x_105, 1);
+ x_108 = x_105;
+} else {
+ lean_dec_ref(x_105);
+ x_108 = lean_box(0);
+}
+if (lean_is_scalar(x_108)) {
+ x_109 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_109 = x_108;
+}
+lean_ctor_set(x_109, 0, x_106);
+lean_ctor_set(x_109, 1, x_107);
+return x_109;
+}
+}
+}
+else
+{
+lean_object* x_110; lean_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; uint64_t x_115; uint64_t x_116; uint64_t x_117; uint64_t x_118; uint64_t x_119; uint64_t x_120; uint64_t x_121; size_t x_122; size_t x_123; size_t x_124; size_t x_125; size_t x_126; lean_object* x_127; uint8_t x_128; 
+x_110 = lean_ctor_get(x_7, 0);
+lean_inc(x_110);
+lean_dec(x_7);
+x_111 = lean_ctor_get(x_8, 0);
+lean_inc(x_111);
+x_112 = lean_ctor_get(x_8, 1);
+lean_inc(x_112);
+if (lean_is_exclusive(x_8)) {
+ lean_ctor_release(x_8, 0);
+ lean_ctor_release(x_8, 1);
+ x_113 = x_8;
+} else {
+ lean_dec_ref(x_8);
+ x_113 = lean_box(0);
+}
+x_114 = lean_array_get_size(x_112);
+x_115 = l_Lean_Name_hash___override(x_1);
+x_116 = 32;
+x_117 = lean_uint64_shift_right(x_115, x_116);
+x_118 = lean_uint64_xor(x_115, x_117);
+x_119 = 16;
+x_120 = lean_uint64_shift_right(x_118, x_119);
+x_121 = lean_uint64_xor(x_118, x_120);
+x_122 = lean_uint64_to_usize(x_121);
+x_123 = lean_usize_of_nat(x_114);
+lean_dec(x_114);
+x_124 = 1;
+x_125 = lean_usize_sub(x_123, x_124);
+x_126 = lean_usize_land(x_122, x_125);
+x_127 = lean_array_uget(x_112, x_126);
+x_128 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_1, x_127);
+if (x_128 == 0)
+{
+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_object* x_135; lean_object* x_136; lean_object* x_137; uint8_t x_138; 
+x_129 = lean_unsigned_to_nat(1u);
+x_130 = lean_nat_add(x_111, x_129);
+lean_dec(x_111);
+x_131 = lean_alloc_ctor(1, 3, 0);
+lean_ctor_set(x_131, 0, x_1);
+lean_ctor_set(x_131, 1, x_2);
+lean_ctor_set(x_131, 2, x_127);
+x_132 = lean_array_uset(x_112, x_126, x_131);
+x_133 = lean_unsigned_to_nat(4u);
+x_134 = lean_nat_mul(x_130, x_133);
+x_135 = lean_unsigned_to_nat(3u);
+x_136 = lean_nat_div(x_134, x_135);
+lean_dec(x_134);
+x_137 = lean_array_get_size(x_132);
+x_138 = lean_nat_dec_le(x_136, x_137);
+lean_dec(x_137);
+lean_dec(x_136);
+if (x_138 == 0)
+{
+lean_object* x_139; lean_object* x_140; lean_object* x_141; lean_object* x_142; lean_object* x_143; lean_object* x_144; lean_object* x_145; lean_object* x_146; 
+x_139 = l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(x_132);
+if (lean_is_scalar(x_113)) {
+ x_140 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_140 = x_113;
+}
+lean_ctor_set(x_140, 0, x_130);
+lean_ctor_set(x_140, 1, x_139);
+x_141 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_141, 0, x_110);
+lean_ctor_set(x_141, 1, x_140);
+x_142 = lean_st_ref_set(x_5, x_141, x_9);
+x_143 = lean_ctor_get(x_142, 0);
+lean_inc(x_143);
+x_144 = lean_ctor_get(x_142, 1);
+lean_inc(x_144);
+if (lean_is_exclusive(x_142)) {
+ lean_ctor_release(x_142, 0);
+ lean_ctor_release(x_142, 1);
+ x_145 = x_142;
+} else {
+ lean_dec_ref(x_142);
+ x_145 = lean_box(0);
+}
+if (lean_is_scalar(x_145)) {
+ x_146 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_146 = x_145;
+}
+lean_ctor_set(x_146, 0, x_143);
+lean_ctor_set(x_146, 1, x_144);
+return x_146;
+}
+else
+{
+lean_object* x_147; lean_object* x_148; lean_object* x_149; lean_object* x_150; lean_object* x_151; lean_object* x_152; lean_object* x_153; 
+if (lean_is_scalar(x_113)) {
+ x_147 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_147 = x_113;
+}
+lean_ctor_set(x_147, 0, x_130);
+lean_ctor_set(x_147, 1, x_132);
+x_148 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_148, 0, x_110);
+lean_ctor_set(x_148, 1, x_147);
+x_149 = lean_st_ref_set(x_5, x_148, x_9);
+x_150 = lean_ctor_get(x_149, 0);
+lean_inc(x_150);
+x_151 = lean_ctor_get(x_149, 1);
+lean_inc(x_151);
+if (lean_is_exclusive(x_149)) {
+ lean_ctor_release(x_149, 0);
+ lean_ctor_release(x_149, 1);
+ x_152 = x_149;
+} else {
+ lean_dec_ref(x_149);
+ x_152 = lean_box(0);
+}
+if (lean_is_scalar(x_152)) {
+ x_153 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_153 = x_152;
+}
+lean_ctor_set(x_153, 0, x_150);
+lean_ctor_set(x_153, 1, x_151);
+return x_153;
+}
+}
+else
+{
+lean_object* x_154; lean_object* x_155; lean_object* x_156; lean_object* x_157; lean_object* x_158; lean_object* x_159; lean_object* x_160; lean_object* x_161; lean_object* x_162; lean_object* x_163; lean_object* x_164; 
+x_154 = lean_box(0);
+x_155 = lean_array_uset(x_112, x_126, x_154);
+x_156 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_127);
+x_157 = lean_array_uset(x_155, x_126, x_156);
+if (lean_is_scalar(x_113)) {
+ x_158 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_158 = x_113;
+}
+lean_ctor_set(x_158, 0, x_111);
+lean_ctor_set(x_158, 1, x_157);
+x_159 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_159, 0, x_110);
+lean_ctor_set(x_159, 1, x_158);
+x_160 = lean_st_ref_set(x_5, x_159, x_9);
+x_161 = lean_ctor_get(x_160, 0);
+lean_inc(x_161);
+x_162 = lean_ctor_get(x_160, 1);
+lean_inc(x_162);
+if (lean_is_exclusive(x_160)) {
+ lean_ctor_release(x_160, 0);
+ lean_ctor_release(x_160, 1);
+ x_163 = x_160;
+} else {
+ lean_dec_ref(x_160);
+ x_163 = lean_box(0);
+}
+if (lean_is_scalar(x_163)) {
+ x_164 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_164 = x_163;
+}
+lean_ctor_set(x_164, 0, x_161);
+lean_ctor_set(x_164, 1, x_162);
+return x_164;
+}
+}
+}
+}
+LEAN_EXPORT uint8_t l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__2(lean_object* x_1) {
+_start:
+{
+uint8_t x_2; 
+x_2 = 0;
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__3(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+_start:
+{
+lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; uint8_t x_10; 
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1;
+x_6 = lean_st_ref_take(x_5, x_4);
+x_7 = lean_ctor_get(x_6, 0);
+lean_inc(x_7);
+x_8 = lean_ctor_get(x_7, 0);
+lean_inc(x_8);
+x_9 = lean_ctor_get(x_6, 1);
+lean_inc(x_9);
+lean_dec(x_6);
+x_10 = !lean_is_exclusive(x_7);
+if (x_10 == 0)
+{
+lean_object* x_11; uint8_t x_12; 
+x_11 = lean_ctor_get(x_7, 0);
+lean_dec(x_11);
+x_12 = !lean_is_exclusive(x_8);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; uint64_t x_16; uint64_t x_17; uint64_t x_18; uint64_t x_19; uint64_t x_20; uint64_t x_21; uint64_t x_22; size_t x_23; size_t x_24; size_t x_25; size_t x_26; size_t x_27; lean_object* x_28; uint8_t x_29; 
+x_13 = lean_ctor_get(x_8, 0);
+x_14 = lean_ctor_get(x_8, 1);
+x_15 = lean_array_get_size(x_14);
+x_16 = l_Lean_Name_hash___override(x_1);
+x_17 = 32;
+x_18 = lean_uint64_shift_right(x_16, x_17);
+x_19 = lean_uint64_xor(x_16, x_18);
+x_20 = 16;
+x_21 = lean_uint64_shift_right(x_19, x_20);
+x_22 = lean_uint64_xor(x_19, x_21);
+x_23 = lean_uint64_to_usize(x_22);
+x_24 = lean_usize_of_nat(x_15);
+lean_dec(x_15);
+x_25 = 1;
+x_26 = lean_usize_sub(x_24, x_25);
+x_27 = lean_usize_land(x_23, x_26);
+x_28 = lean_array_uget(x_14, x_27);
+x_29 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_1, x_28);
+if (x_29 == 0)
+{
+lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; uint8_t x_39; 
+x_30 = lean_unsigned_to_nat(1u);
+x_31 = lean_nat_add(x_13, x_30);
+lean_dec(x_13);
+x_32 = lean_alloc_ctor(1, 3, 0);
+lean_ctor_set(x_32, 0, x_1);
+lean_ctor_set(x_32, 1, x_2);
+lean_ctor_set(x_32, 2, x_28);
+x_33 = lean_array_uset(x_14, x_27, x_32);
+x_34 = lean_unsigned_to_nat(4u);
+x_35 = lean_nat_mul(x_31, x_34);
+x_36 = lean_unsigned_to_nat(3u);
+x_37 = lean_nat_div(x_35, x_36);
+lean_dec(x_35);
+x_38 = lean_array_get_size(x_33);
+x_39 = lean_nat_dec_le(x_37, x_38);
+lean_dec(x_38);
+lean_dec(x_37);
+if (x_39 == 0)
+{
+lean_object* x_40; lean_object* x_41; uint8_t x_42; 
+x_40 = l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(x_33);
+lean_ctor_set(x_8, 1, x_40);
+lean_ctor_set(x_8, 0, x_31);
+x_41 = lean_st_ref_set(x_5, x_7, x_9);
+x_42 = !lean_is_exclusive(x_41);
+if (x_42 == 0)
+{
+return x_41;
+}
+else
+{
+lean_object* x_43; lean_object* x_44; lean_object* x_45; 
+x_43 = lean_ctor_get(x_41, 0);
+x_44 = lean_ctor_get(x_41, 1);
+lean_inc(x_44);
+lean_inc(x_43);
+lean_dec(x_41);
+x_45 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_45, 0, x_43);
+lean_ctor_set(x_45, 1, x_44);
+return x_45;
+}
+}
+else
+{
+lean_object* x_46; uint8_t x_47; 
+lean_ctor_set(x_8, 1, x_33);
+lean_ctor_set(x_8, 0, x_31);
+x_46 = lean_st_ref_set(x_5, x_7, x_9);
+x_47 = !lean_is_exclusive(x_46);
+if (x_47 == 0)
+{
+return x_46;
+}
+else
+{
+lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_48 = lean_ctor_get(x_46, 0);
+x_49 = lean_ctor_get(x_46, 1);
+lean_inc(x_49);
+lean_inc(x_48);
+lean_dec(x_46);
+x_50 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_50, 0, x_48);
+lean_ctor_set(x_50, 1, x_49);
+return x_50;
+}
+}
+}
+else
+{
+lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; uint8_t x_56; 
+x_51 = lean_box(0);
+x_52 = lean_array_uset(x_14, x_27, x_51);
+x_53 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_28);
+x_54 = lean_array_uset(x_52, x_27, x_53);
+lean_ctor_set(x_8, 1, x_54);
+x_55 = lean_st_ref_set(x_5, x_7, x_9);
+x_56 = !lean_is_exclusive(x_55);
+if (x_56 == 0)
+{
+return x_55;
+}
+else
+{
+lean_object* x_57; lean_object* x_58; lean_object* x_59; 
+x_57 = lean_ctor_get(x_55, 0);
+x_58 = lean_ctor_get(x_55, 1);
+lean_inc(x_58);
+lean_inc(x_57);
+lean_dec(x_55);
+x_59 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_59, 0, x_57);
+lean_ctor_set(x_59, 1, x_58);
+return x_59;
+}
+}
+}
+else
+{
+lean_object* x_60; lean_object* x_61; lean_object* x_62; uint64_t x_63; uint64_t x_64; uint64_t x_65; uint64_t x_66; uint64_t x_67; uint64_t x_68; uint64_t x_69; size_t x_70; size_t x_71; size_t x_72; size_t x_73; size_t x_74; lean_object* x_75; uint8_t x_76; 
+x_60 = lean_ctor_get(x_8, 0);
+x_61 = lean_ctor_get(x_8, 1);
+lean_inc(x_61);
+lean_inc(x_60);
+lean_dec(x_8);
+x_62 = lean_array_get_size(x_61);
+x_63 = l_Lean_Name_hash___override(x_1);
+x_64 = 32;
+x_65 = lean_uint64_shift_right(x_63, x_64);
+x_66 = lean_uint64_xor(x_63, x_65);
+x_67 = 16;
+x_68 = lean_uint64_shift_right(x_66, x_67);
+x_69 = lean_uint64_xor(x_66, x_68);
+x_70 = lean_uint64_to_usize(x_69);
+x_71 = lean_usize_of_nat(x_62);
+lean_dec(x_62);
+x_72 = 1;
+x_73 = lean_usize_sub(x_71, x_72);
+x_74 = lean_usize_land(x_70, x_73);
+x_75 = lean_array_uget(x_61, x_74);
+x_76 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_1, x_75);
+if (x_76 == 0)
+{
+lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; uint8_t x_86; 
+x_77 = lean_unsigned_to_nat(1u);
+x_78 = lean_nat_add(x_60, x_77);
+lean_dec(x_60);
+x_79 = lean_alloc_ctor(1, 3, 0);
+lean_ctor_set(x_79, 0, x_1);
+lean_ctor_set(x_79, 1, x_2);
+lean_ctor_set(x_79, 2, x_75);
+x_80 = lean_array_uset(x_61, x_74, x_79);
+x_81 = lean_unsigned_to_nat(4u);
+x_82 = lean_nat_mul(x_78, x_81);
+x_83 = lean_unsigned_to_nat(3u);
+x_84 = lean_nat_div(x_82, x_83);
+lean_dec(x_82);
+x_85 = lean_array_get_size(x_80);
+x_86 = lean_nat_dec_le(x_84, x_85);
+lean_dec(x_85);
+lean_dec(x_84);
+if (x_86 == 0)
+{
+lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; 
+x_87 = l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(x_80);
+x_88 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_88, 0, x_78);
+lean_ctor_set(x_88, 1, x_87);
+lean_ctor_set(x_7, 0, x_88);
+x_89 = lean_st_ref_set(x_5, x_7, x_9);
+x_90 = lean_ctor_get(x_89, 0);
+lean_inc(x_90);
+x_91 = lean_ctor_get(x_89, 1);
+lean_inc(x_91);
+if (lean_is_exclusive(x_89)) {
+ lean_ctor_release(x_89, 0);
+ lean_ctor_release(x_89, 1);
+ x_92 = x_89;
+} else {
+ lean_dec_ref(x_89);
+ x_92 = lean_box(0);
+}
+if (lean_is_scalar(x_92)) {
+ x_93 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_93 = x_92;
+}
+lean_ctor_set(x_93, 0, x_90);
+lean_ctor_set(x_93, 1, x_91);
+return x_93;
+}
+else
+{
+lean_object* x_94; lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; lean_object* x_99; 
+x_94 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_94, 0, x_78);
+lean_ctor_set(x_94, 1, x_80);
+lean_ctor_set(x_7, 0, x_94);
+x_95 = lean_st_ref_set(x_5, x_7, x_9);
+x_96 = lean_ctor_get(x_95, 0);
+lean_inc(x_96);
+x_97 = lean_ctor_get(x_95, 1);
+lean_inc(x_97);
+if (lean_is_exclusive(x_95)) {
+ lean_ctor_release(x_95, 0);
+ lean_ctor_release(x_95, 1);
+ x_98 = x_95;
+} else {
+ lean_dec_ref(x_95);
+ x_98 = lean_box(0);
+}
+if (lean_is_scalar(x_98)) {
+ x_99 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_99 = x_98;
+}
+lean_ctor_set(x_99, 0, x_96);
+lean_ctor_set(x_99, 1, x_97);
+return x_99;
+}
+}
+else
+{
+lean_object* x_100; lean_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; lean_object* x_106; lean_object* x_107; lean_object* x_108; lean_object* x_109; 
+x_100 = lean_box(0);
+x_101 = lean_array_uset(x_61, x_74, x_100);
+x_102 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_75);
+x_103 = lean_array_uset(x_101, x_74, x_102);
+x_104 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_104, 0, x_60);
+lean_ctor_set(x_104, 1, x_103);
+lean_ctor_set(x_7, 0, x_104);
+x_105 = lean_st_ref_set(x_5, x_7, x_9);
+x_106 = lean_ctor_get(x_105, 0);
+lean_inc(x_106);
+x_107 = lean_ctor_get(x_105, 1);
+lean_inc(x_107);
+if (lean_is_exclusive(x_105)) {
+ lean_ctor_release(x_105, 0);
+ lean_ctor_release(x_105, 1);
+ x_108 = x_105;
+} else {
+ lean_dec_ref(x_105);
+ x_108 = lean_box(0);
+}
+if (lean_is_scalar(x_108)) {
+ x_109 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_109 = x_108;
+}
+lean_ctor_set(x_109, 0, x_106);
+lean_ctor_set(x_109, 1, x_107);
+return x_109;
+}
+}
+}
+else
+{
+lean_object* x_110; lean_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; uint64_t x_115; uint64_t x_116; uint64_t x_117; uint64_t x_118; uint64_t x_119; uint64_t x_120; uint64_t x_121; size_t x_122; size_t x_123; size_t x_124; size_t x_125; size_t x_126; lean_object* x_127; uint8_t x_128; 
+x_110 = lean_ctor_get(x_7, 1);
+lean_inc(x_110);
+lean_dec(x_7);
+x_111 = lean_ctor_get(x_8, 0);
+lean_inc(x_111);
+x_112 = lean_ctor_get(x_8, 1);
+lean_inc(x_112);
+if (lean_is_exclusive(x_8)) {
+ lean_ctor_release(x_8, 0);
+ lean_ctor_release(x_8, 1);
+ x_113 = x_8;
+} else {
+ lean_dec_ref(x_8);
+ x_113 = lean_box(0);
+}
+x_114 = lean_array_get_size(x_112);
+x_115 = l_Lean_Name_hash___override(x_1);
+x_116 = 32;
+x_117 = lean_uint64_shift_right(x_115, x_116);
+x_118 = lean_uint64_xor(x_115, x_117);
+x_119 = 16;
+x_120 = lean_uint64_shift_right(x_118, x_119);
+x_121 = lean_uint64_xor(x_118, x_120);
+x_122 = lean_uint64_to_usize(x_121);
+x_123 = lean_usize_of_nat(x_114);
+lean_dec(x_114);
+x_124 = 1;
+x_125 = lean_usize_sub(x_123, x_124);
+x_126 = lean_usize_land(x_122, x_125);
+x_127 = lean_array_uget(x_112, x_126);
+x_128 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_1, x_127);
+if (x_128 == 0)
+{
+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_object* x_135; lean_object* x_136; lean_object* x_137; uint8_t x_138; 
+x_129 = lean_unsigned_to_nat(1u);
+x_130 = lean_nat_add(x_111, x_129);
+lean_dec(x_111);
+x_131 = lean_alloc_ctor(1, 3, 0);
+lean_ctor_set(x_131, 0, x_1);
+lean_ctor_set(x_131, 1, x_2);
+lean_ctor_set(x_131, 2, x_127);
+x_132 = lean_array_uset(x_112, x_126, x_131);
+x_133 = lean_unsigned_to_nat(4u);
+x_134 = lean_nat_mul(x_130, x_133);
+x_135 = lean_unsigned_to_nat(3u);
+x_136 = lean_nat_div(x_134, x_135);
+lean_dec(x_134);
+x_137 = lean_array_get_size(x_132);
+x_138 = lean_nat_dec_le(x_136, x_137);
+lean_dec(x_137);
+lean_dec(x_136);
+if (x_138 == 0)
+{
+lean_object* x_139; lean_object* x_140; lean_object* x_141; lean_object* x_142; lean_object* x_143; lean_object* x_144; lean_object* x_145; lean_object* x_146; 
+x_139 = l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(x_132);
+if (lean_is_scalar(x_113)) {
+ x_140 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_140 = x_113;
+}
+lean_ctor_set(x_140, 0, x_130);
+lean_ctor_set(x_140, 1, x_139);
+x_141 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_141, 0, x_140);
+lean_ctor_set(x_141, 1, x_110);
+x_142 = lean_st_ref_set(x_5, x_141, x_9);
+x_143 = lean_ctor_get(x_142, 0);
+lean_inc(x_143);
+x_144 = lean_ctor_get(x_142, 1);
+lean_inc(x_144);
+if (lean_is_exclusive(x_142)) {
+ lean_ctor_release(x_142, 0);
+ lean_ctor_release(x_142, 1);
+ x_145 = x_142;
+} else {
+ lean_dec_ref(x_142);
+ x_145 = lean_box(0);
+}
+if (lean_is_scalar(x_145)) {
+ x_146 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_146 = x_145;
+}
+lean_ctor_set(x_146, 0, x_143);
+lean_ctor_set(x_146, 1, x_144);
+return x_146;
+}
+else
+{
+lean_object* x_147; lean_object* x_148; lean_object* x_149; lean_object* x_150; lean_object* x_151; lean_object* x_152; lean_object* x_153; 
+if (lean_is_scalar(x_113)) {
+ x_147 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_147 = x_113;
+}
+lean_ctor_set(x_147, 0, x_130);
+lean_ctor_set(x_147, 1, x_132);
+x_148 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_148, 0, x_147);
+lean_ctor_set(x_148, 1, x_110);
+x_149 = lean_st_ref_set(x_5, x_148, x_9);
+x_150 = lean_ctor_get(x_149, 0);
+lean_inc(x_150);
+x_151 = lean_ctor_get(x_149, 1);
+lean_inc(x_151);
+if (lean_is_exclusive(x_149)) {
+ lean_ctor_release(x_149, 0);
+ lean_ctor_release(x_149, 1);
+ x_152 = x_149;
+} else {
+ lean_dec_ref(x_149);
+ x_152 = lean_box(0);
+}
+if (lean_is_scalar(x_152)) {
+ x_153 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_153 = x_152;
+}
+lean_ctor_set(x_153, 0, x_150);
+lean_ctor_set(x_153, 1, x_151);
+return x_153;
+}
+}
+else
+{
+lean_object* x_154; lean_object* x_155; lean_object* x_156; lean_object* x_157; lean_object* x_158; lean_object* x_159; lean_object* x_160; lean_object* x_161; lean_object* x_162; lean_object* x_163; lean_object* x_164; 
+x_154 = lean_box(0);
+x_155 = lean_array_uset(x_112, x_126, x_154);
+x_156 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_127);
+x_157 = lean_array_uset(x_155, x_126, x_156);
+if (lean_is_scalar(x_113)) {
+ x_158 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_158 = x_113;
+}
+lean_ctor_set(x_158, 0, x_111);
+lean_ctor_set(x_158, 1, x_157);
+x_159 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_159, 0, x_158);
+lean_ctor_set(x_159, 1, x_110);
+x_160 = lean_st_ref_set(x_5, x_159, x_9);
+x_161 = lean_ctor_get(x_160, 0);
+lean_inc(x_161);
+x_162 = lean_ctor_get(x_160, 1);
+lean_inc(x_162);
+if (lean_is_exclusive(x_160)) {
+ lean_ctor_release(x_160, 0);
+ lean_ctor_release(x_160, 1);
+ x_163 = x_160;
+} else {
+ lean_dec_ref(x_160);
+ x_163 = lean_box(0);
+}
+if (lean_is_scalar(x_163)) {
+ x_164 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_164 = x_163;
+}
+lean_ctor_set(x_164, 0, x_161);
+lean_ctor_set(x_164, 1, x_162);
+return x_164;
+}
+}
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__2___boxed), 1, 0);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("invalid builtin `grind` downward propagator `", 45, 45);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("`, it has already been declared", 31, 31);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("invalid builtin `grind` upward propagator `", 43, 43);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4(uint8_t x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
+_start:
+{
+if (x_1 == 0)
+{
+lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; uint8_t x_10; 
+x_6 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1;
+x_7 = lean_st_ref_get(x_6, x_5);
+x_8 = lean_ctor_get(x_7, 0);
+lean_inc(x_8);
+x_9 = lean_ctor_get(x_8, 1);
+lean_inc(x_9);
+lean_dec(x_8);
+x_10 = !lean_is_exclusive(x_7);
+if (x_10 == 0)
+{
+lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; uint64_t x_15; uint64_t x_16; uint64_t x_17; uint64_t x_18; uint64_t x_19; uint64_t x_20; uint64_t x_21; size_t x_22; size_t x_23; size_t x_24; size_t x_25; size_t x_26; lean_object* x_27; uint8_t x_28; 
+x_11 = lean_ctor_get(x_7, 1);
+x_12 = lean_ctor_get(x_7, 0);
+lean_dec(x_12);
+x_13 = lean_ctor_get(x_9, 1);
+lean_inc(x_13);
+lean_dec(x_9);
+x_14 = lean_array_get_size(x_13);
+x_15 = l_Lean_Name_hash___override(x_2);
+x_16 = 32;
+x_17 = lean_uint64_shift_right(x_15, x_16);
+x_18 = lean_uint64_xor(x_15, x_17);
+x_19 = 16;
+x_20 = lean_uint64_shift_right(x_18, x_19);
+x_21 = lean_uint64_xor(x_18, x_20);
+x_22 = lean_uint64_to_usize(x_21);
+x_23 = lean_usize_of_nat(x_14);
+lean_dec(x_14);
+x_24 = 1;
+x_25 = lean_usize_sub(x_23, x_24);
+x_26 = lean_usize_land(x_22, x_25);
+x_27 = lean_array_uget(x_13, x_26);
+lean_dec(x_13);
+x_28 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_2, x_27);
+lean_dec(x_27);
+if (x_28 == 0)
+{
+lean_object* x_29; lean_object* x_30; 
+lean_free_object(x_7);
+x_29 = lean_box(0);
+x_30 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1(x_2, x_3, x_29, x_11);
+return x_30;
+}
+else
+{
+uint8_t x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; 
+lean_dec(x_3);
+x_31 = 1;
+x_32 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1;
+x_33 = l_Lean_Name_toString(x_2, x_31, x_32);
+x_34 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__2;
+x_35 = lean_string_append(x_34, x_33);
+lean_dec(x_33);
+x_36 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3;
+x_37 = lean_string_append(x_35, x_36);
+x_38 = lean_alloc_ctor(18, 1, 0);
+lean_ctor_set(x_38, 0, x_37);
+lean_ctor_set_tag(x_7, 1);
+lean_ctor_set(x_7, 0, x_38);
+return x_7;
+}
+}
+else
+{
+lean_object* x_39; lean_object* x_40; lean_object* x_41; uint64_t x_42; uint64_t x_43; uint64_t x_44; uint64_t x_45; uint64_t x_46; uint64_t x_47; uint64_t x_48; size_t x_49; size_t x_50; size_t x_51; size_t x_52; size_t x_53; lean_object* x_54; uint8_t x_55; 
+x_39 = lean_ctor_get(x_7, 1);
+lean_inc(x_39);
+lean_dec(x_7);
+x_40 = lean_ctor_get(x_9, 1);
+lean_inc(x_40);
+lean_dec(x_9);
+x_41 = lean_array_get_size(x_40);
+x_42 = l_Lean_Name_hash___override(x_2);
+x_43 = 32;
+x_44 = lean_uint64_shift_right(x_42, x_43);
+x_45 = lean_uint64_xor(x_42, x_44);
+x_46 = 16;
+x_47 = lean_uint64_shift_right(x_45, x_46);
+x_48 = lean_uint64_xor(x_45, x_47);
+x_49 = lean_uint64_to_usize(x_48);
+x_50 = lean_usize_of_nat(x_41);
+lean_dec(x_41);
+x_51 = 1;
+x_52 = lean_usize_sub(x_50, x_51);
+x_53 = lean_usize_land(x_49, x_52);
+x_54 = lean_array_uget(x_40, x_53);
+lean_dec(x_40);
+x_55 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_2, x_54);
+lean_dec(x_54);
+if (x_55 == 0)
+{
+lean_object* x_56; lean_object* x_57; 
+x_56 = lean_box(0);
+x_57 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1(x_2, x_3, x_56, x_39);
+return x_57;
+}
+else
+{
+uint8_t x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; 
+lean_dec(x_3);
+x_58 = 1;
+x_59 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1;
+x_60 = l_Lean_Name_toString(x_2, x_58, x_59);
+x_61 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__2;
+x_62 = lean_string_append(x_61, x_60);
+lean_dec(x_60);
+x_63 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3;
+x_64 = lean_string_append(x_62, x_63);
+x_65 = lean_alloc_ctor(18, 1, 0);
+lean_ctor_set(x_65, 0, x_64);
+x_66 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_66, 0, x_65);
+lean_ctor_set(x_66, 1, x_39);
+return x_66;
+}
+}
+}
+else
+{
+lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; uint8_t x_71; 
+x_67 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1;
+x_68 = lean_st_ref_get(x_67, x_5);
+x_69 = lean_ctor_get(x_68, 0);
+lean_inc(x_69);
+x_70 = lean_ctor_get(x_69, 0);
+lean_inc(x_70);
+lean_dec(x_69);
+x_71 = !lean_is_exclusive(x_68);
+if (x_71 == 0)
+{
+lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; uint64_t x_76; uint64_t x_77; uint64_t x_78; uint64_t x_79; uint64_t x_80; uint64_t x_81; uint64_t x_82; size_t x_83; size_t x_84; size_t x_85; size_t x_86; size_t x_87; lean_object* x_88; uint8_t x_89; 
+x_72 = lean_ctor_get(x_68, 1);
+x_73 = lean_ctor_get(x_68, 0);
+lean_dec(x_73);
+x_74 = lean_ctor_get(x_70, 1);
+lean_inc(x_74);
+lean_dec(x_70);
+x_75 = lean_array_get_size(x_74);
+x_76 = l_Lean_Name_hash___override(x_2);
+x_77 = 32;
+x_78 = lean_uint64_shift_right(x_76, x_77);
+x_79 = lean_uint64_xor(x_76, x_78);
+x_80 = 16;
+x_81 = lean_uint64_shift_right(x_79, x_80);
+x_82 = lean_uint64_xor(x_79, x_81);
+x_83 = lean_uint64_to_usize(x_82);
+x_84 = lean_usize_of_nat(x_75);
+lean_dec(x_75);
+x_85 = 1;
+x_86 = lean_usize_sub(x_84, x_85);
+x_87 = lean_usize_land(x_83, x_86);
+x_88 = lean_array_uget(x_74, x_87);
+lean_dec(x_74);
+x_89 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_2, x_88);
+lean_dec(x_88);
+if (x_89 == 0)
+{
+lean_object* x_90; lean_object* x_91; 
+lean_free_object(x_68);
+x_90 = lean_box(0);
+x_91 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__3(x_2, x_3, x_90, x_72);
+return x_91;
+}
+else
+{
+uint8_t x_92; lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; lean_object* x_99; 
+lean_dec(x_3);
+x_92 = 1;
+x_93 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1;
+x_94 = l_Lean_Name_toString(x_2, x_92, x_93);
+x_95 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__4;
+x_96 = lean_string_append(x_95, x_94);
+lean_dec(x_94);
+x_97 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3;
+x_98 = lean_string_append(x_96, x_97);
+x_99 = lean_alloc_ctor(18, 1, 0);
+lean_ctor_set(x_99, 0, x_98);
+lean_ctor_set_tag(x_68, 1);
+lean_ctor_set(x_68, 0, x_99);
+return x_68;
+}
+}
+else
+{
+lean_object* x_100; lean_object* x_101; lean_object* x_102; uint64_t x_103; uint64_t x_104; uint64_t x_105; uint64_t x_106; uint64_t x_107; uint64_t x_108; uint64_t x_109; size_t x_110; size_t x_111; size_t x_112; size_t x_113; size_t x_114; lean_object* x_115; uint8_t x_116; 
+x_100 = lean_ctor_get(x_68, 1);
+lean_inc(x_100);
+lean_dec(x_68);
+x_101 = lean_ctor_get(x_70, 1);
+lean_inc(x_101);
+lean_dec(x_70);
+x_102 = lean_array_get_size(x_101);
+x_103 = l_Lean_Name_hash___override(x_2);
+x_104 = 32;
+x_105 = lean_uint64_shift_right(x_103, x_104);
+x_106 = lean_uint64_xor(x_103, x_105);
+x_107 = 16;
+x_108 = lean_uint64_shift_right(x_106, x_107);
+x_109 = lean_uint64_xor(x_106, x_108);
+x_110 = lean_uint64_to_usize(x_109);
+x_111 = lean_usize_of_nat(x_102);
+lean_dec(x_102);
+x_112 = 1;
+x_113 = lean_usize_sub(x_111, x_112);
+x_114 = lean_usize_land(x_110, x_113);
+x_115 = lean_array_uget(x_101, x_114);
+lean_dec(x_101);
+x_116 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_2, x_115);
+lean_dec(x_115);
+if (x_116 == 0)
+{
+lean_object* x_117; lean_object* x_118; 
+x_117 = lean_box(0);
+x_118 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__3(x_2, x_3, x_117, x_100);
+return x_118;
+}
+else
+{
+uint8_t x_119; lean_object* x_120; lean_object* x_121; lean_object* x_122; lean_object* x_123; lean_object* x_124; lean_object* x_125; lean_object* x_126; lean_object* x_127; 
+lean_dec(x_3);
+x_119 = 1;
+x_120 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1;
+x_121 = l_Lean_Name_toString(x_2, x_119, x_120);
+x_122 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__4;
+x_123 = lean_string_append(x_122, x_121);
+lean_dec(x_121);
+x_124 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3;
+x_125 = lean_string_append(x_123, x_124);
+x_126 = lean_alloc_ctor(18, 1, 0);
+lean_ctor_set(x_126, 0, x_125);
+x_127 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_127, 0, x_126);
+lean_ctor_set(x_127, 1, x_100);
+return x_127;
+}
+}
+}
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("invalid builtin `grind` propagator declaration, it can only be registered during initialization", 95, 95);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__1;
+x_2 = lean_alloc_ctor(18, 1, 0);
+lean_ctor_set(x_2, 0, x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4) {
+_start:
+{
+lean_object* x_5; lean_object* x_6; uint8_t x_7; 
+x_5 = l_Lean_initializing(x_4);
+x_6 = lean_ctor_get(x_5, 0);
+lean_inc(x_6);
+x_7 = lean_unbox(x_6);
+lean_dec(x_6);
+if (x_7 == 0)
+{
+uint8_t x_8; 
+lean_dec(x_3);
+lean_dec(x_1);
+x_8 = !lean_is_exclusive(x_5);
+if (x_8 == 0)
+{
+lean_object* x_9; lean_object* x_10; 
+x_9 = lean_ctor_get(x_5, 0);
+lean_dec(x_9);
+x_10 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__2;
+lean_ctor_set_tag(x_5, 1);
+lean_ctor_set(x_5, 0, x_10);
+return x_5;
+}
+else
+{
+lean_object* x_11; lean_object* x_12; lean_object* x_13; 
+x_11 = lean_ctor_get(x_5, 1);
+lean_inc(x_11);
+lean_dec(x_5);
+x_12 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__2;
+x_13 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_13, 0, x_12);
+lean_ctor_set(x_13, 1, x_11);
+return x_13;
+}
+}
+else
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_14 = lean_ctor_get(x_5, 1);
+lean_inc(x_14);
+lean_dec(x_5);
+x_15 = lean_box(0);
+x_16 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4(x_2, x_1, x_3, x_15, x_14);
+return x_16;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1___boxed(lean_object* x_1, lean_object* x_2) {
+_start:
+{
+uint8_t x_3; lean_object* x_4; 
+x_3 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___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___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___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_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1(x_1, x_2, x_3, x_4);
+lean_dec(x_3);
+return x_5;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__2___boxed(lean_object* x_1) {
+_start:
+{
+uint8_t x_2; lean_object* x_3; 
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__2(x_1);
+lean_dec(x_1);
+x_3 = lean_box(x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__3___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_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__3(x_1, x_2, x_3, x_4);
+lean_dec(x_3);
+return x_5;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
+_start:
+{
+uint8_t x_6; lean_object* x_7; 
+x_6 = lean_unbox(x_1);
+lean_dec(x_1);
+x_7 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4(x_6, x_2, x_3, x_4, x_5);
+lean_dec(x_4);
+return x_7;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+_start:
+{
+uint8_t x_5; lean_object* x_6; 
+x_5 = lean_unbox(x_2);
+lean_dec(x_2);
+x_6 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_1, x_5, x_3, x_4);
+return x_6;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_registerBuiltinUpwardPropagator(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
+_start:
+{
+uint8_t x_4; lean_object* x_5; 
+x_4 = 1;
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_1, x_4, x_2, x_3);
+return x_5;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_registerBuiltinDownwardPropagator(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
+_start:
+{
+uint8_t x_4; lean_object* x_5; 
+x_4 = 0;
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_1, x_4, x_2, x_3);
+return x_5;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_resolveGlobalName___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__4(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:
+{
+lean_object* x_7; uint8_t x_8; 
+x_7 = lean_st_ref_get(x_5, x_6);
+x_8 = !lean_is_exclusive(x_7);
+if (x_8 == 0)
+{
+lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; 
+x_9 = lean_ctor_get(x_7, 0);
+x_10 = lean_ctor_get(x_9, 0);
+lean_inc(x_10);
+lean_dec(x_9);
+x_11 = lean_ctor_get(x_4, 6);
+lean_inc(x_11);
+x_12 = lean_ctor_get(x_4, 7);
+lean_inc(x_12);
+lean_dec(x_4);
+x_13 = l_Lean_ResolveName_resolveGlobalName(x_10, x_11, x_12, x_1);
+lean_ctor_set(x_7, 0, x_13);
+return x_7;
+}
+else
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_14 = lean_ctor_get(x_7, 0);
+x_15 = lean_ctor_get(x_7, 1);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_dec(x_7);
+x_16 = lean_ctor_get(x_14, 0);
+lean_inc(x_16);
+lean_dec(x_14);
+x_17 = lean_ctor_get(x_4, 6);
+lean_inc(x_17);
+x_18 = lean_ctor_get(x_4, 7);
+lean_inc(x_18);
+lean_dec(x_4);
+x_19 = l_Lean_ResolveName_resolveGlobalName(x_16, x_17, x_18, x_1);
+x_20 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_20, 0, x_19);
+lean_ctor_set(x_20, 1, x_15);
+return x_20;
+}
+}
+}
+static lean_object* _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("unknown constant '", 18, 18);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__1;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("'", 1, 1);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__3;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6(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:
+{
+uint8_t x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; 
+x_7 = 0;
+x_8 = l_Lean_MessageData_ofConstName(x_1, x_7);
+x_9 = l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__2;
+x_10 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_10, 0, x_9);
+lean_ctor_set(x_10, 1, x_8);
+x_11 = l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__4;
+x_12 = lean_alloc_ctor(7, 2, 0);
+lean_ctor_set(x_12, 0, x_10);
+lean_ctor_set(x_12, 1, x_11);
+x_13 = l_Lean_throwError___at_Lean_Meta_mkSimpCongrTheorem___spec__4(x_12, x_2, x_3, x_4, x_5, x_6);
+return x_13;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__5___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) {
+_start:
+{
+lean_object* x_9; lean_object* x_10; 
+x_9 = l_List_mapTR_loop___at_Lean_filterFieldList___spec__2(x_1, x_2);
+x_10 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_10, 0, x_9);
+lean_ctor_set(x_10, 1, x_8);
+return x_10;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__5(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) {
+_start:
+{
+lean_object* x_8; lean_object* x_9; uint8_t x_10; 
+x_8 = lean_box(0);
+x_9 = l_List_filterTR_loop___at_Lean_filterFieldList___spec__1(x_2, x_8);
+x_10 = l_List_isEmpty___rarg(x_9);
+if (x_10 == 0)
+{
+lean_object* x_11; lean_object* x_12; 
+lean_dec(x_1);
+x_11 = lean_box(0);
+x_12 = l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__5___lambda__1(x_9, x_8, x_11, x_3, x_4, x_5, x_6, x_7);
+return x_12;
+}
+else
+{
+lean_object* x_13; uint8_t x_14; 
+lean_dec(x_9);
+x_13 = l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6(x_1, x_3, x_4, x_5, x_6, x_7);
+x_14 = !lean_is_exclusive(x_13);
+if (x_14 == 0)
+{
+return x_13;
+}
+else
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; 
+x_15 = lean_ctor_get(x_13, 0);
+x_16 = lean_ctor_get(x_13, 1);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_dec(x_13);
+x_17 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_17, 0, x_15);
+lean_ctor_set(x_17, 1, x_16);
+return x_17;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_ResolveName_0__Lean_resolveGlobalConstCore___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__3(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:
+{
+lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; 
+lean_inc(x_4);
+lean_inc(x_1);
+x_7 = l_Lean_resolveGlobalName___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__4(x_1, x_2, x_3, x_4, x_5, x_6);
+x_8 = lean_ctor_get(x_7, 0);
+lean_inc(x_8);
+x_9 = lean_ctor_get(x_7, 1);
+lean_inc(x_9);
+lean_dec(x_7);
+x_10 = l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__5(x_1, x_8, x_2, x_3, x_4, x_5, x_9);
+lean_dec(x_4);
+return x_10;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__9(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:
+{
+lean_object* x_7; lean_object* x_8; uint8_t x_9; 
+x_7 = lean_ctor_get(x_4, 5);
+x_8 = l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(x_1, x_2, x_3, x_4, x_5, x_6);
+x_9 = !lean_is_exclusive(x_8);
+if (x_9 == 0)
+{
+lean_object* x_10; lean_object* x_11; 
+x_10 = lean_ctor_get(x_8, 0);
+lean_inc(x_7);
+x_11 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_11, 0, x_7);
+lean_ctor_set(x_11, 1, x_10);
+lean_ctor_set_tag(x_8, 1);
+lean_ctor_set(x_8, 0, x_11);
+return x_8;
+}
+else
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
+x_12 = lean_ctor_get(x_8, 0);
+x_13 = lean_ctor_get(x_8, 1);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_dec(x_8);
+lean_inc(x_7);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_7);
+lean_ctor_set(x_14, 1, x_12);
+x_15 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_15, 0, x_14);
+lean_ctor_set(x_15, 1, x_13);
+return x_15;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__8(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) {
+_start:
+{
+uint8_t x_8; 
+x_8 = !lean_is_exclusive(x_5);
+if (x_8 == 0)
+{
+lean_object* x_9; lean_object* x_10; lean_object* x_11; 
+x_9 = lean_ctor_get(x_5, 5);
+x_10 = l_Lean_replaceRef(x_1, x_9);
+lean_dec(x_9);
+lean_ctor_set(x_5, 5, x_10);
+x_11 = l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__9(x_2, x_3, x_4, x_5, x_6, x_7);
+lean_dec(x_5);
+return x_11;
+}
+else
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; lean_object* x_24; uint8_t x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_12 = lean_ctor_get(x_5, 0);
+x_13 = lean_ctor_get(x_5, 1);
+x_14 = lean_ctor_get(x_5, 2);
+x_15 = lean_ctor_get(x_5, 3);
+x_16 = lean_ctor_get(x_5, 4);
+x_17 = lean_ctor_get(x_5, 5);
+x_18 = lean_ctor_get(x_5, 6);
+x_19 = lean_ctor_get(x_5, 7);
+x_20 = lean_ctor_get(x_5, 8);
+x_21 = lean_ctor_get(x_5, 9);
+x_22 = lean_ctor_get(x_5, 10);
+x_23 = lean_ctor_get_uint8(x_5, sizeof(void*)*12);
+x_24 = lean_ctor_get(x_5, 11);
+x_25 = lean_ctor_get_uint8(x_5, sizeof(void*)*12 + 1);
+lean_inc(x_24);
+lean_inc(x_22);
+lean_inc(x_21);
+lean_inc(x_20);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_dec(x_5);
+x_26 = l_Lean_replaceRef(x_1, x_17);
+lean_dec(x_17);
+x_27 = lean_alloc_ctor(0, 12, 2);
+lean_ctor_set(x_27, 0, x_12);
+lean_ctor_set(x_27, 1, x_13);
+lean_ctor_set(x_27, 2, x_14);
+lean_ctor_set(x_27, 3, x_15);
+lean_ctor_set(x_27, 4, x_16);
+lean_ctor_set(x_27, 5, x_26);
+lean_ctor_set(x_27, 6, x_18);
+lean_ctor_set(x_27, 7, x_19);
+lean_ctor_set(x_27, 8, x_20);
+lean_ctor_set(x_27, 9, x_21);
+lean_ctor_set(x_27, 10, x_22);
+lean_ctor_set(x_27, 11, x_24);
+lean_ctor_set_uint8(x_27, sizeof(void*)*12, x_23);
+lean_ctor_set_uint8(x_27, sizeof(void*)*12 + 1, x_25);
+x_28 = l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__9(x_2, x_3, x_4, x_27, x_6, x_7);
+lean_dec(x_27);
+return x_28;
+}
+}
+}
+static lean_object* _init_l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("expected identifier", 19, 19);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__1;
+x_2 = lean_alloc_ctor(3, 1, 0);
+lean_ctor_set(x_2, 0, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__2;
+x_2 = l_Lean_MessageData_ofFormat(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = lean_box(0);
+x_2 = lean_array_mk(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7(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) {
+_start:
+{
+if (lean_obj_tag(x_1) == 3)
+{
+lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; uint8_t x_12; 
+x_8 = lean_ctor_get(x_1, 2);
+lean_inc(x_8);
+x_9 = lean_ctor_get(x_1, 3);
+lean_inc(x_9);
+x_10 = l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__4;
+x_11 = l_List_filterMapTR_go___at_Lean_preprocessSyntaxAndResolve___spec__1(x_9, x_10);
+x_12 = l_List_isEmpty___rarg(x_11);
+if (x_12 == 0)
+{
+lean_object* x_13; 
+lean_dec(x_8);
+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_13 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_13, 0, x_11);
+lean_ctor_set(x_13, 1, x_7);
+return x_13;
+}
+else
+{
+uint8_t x_14; 
+lean_dec(x_11);
+x_14 = !lean_is_exclusive(x_5);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; 
+x_15 = lean_ctor_get(x_5, 5);
+x_16 = l_Lean_replaceRef(x_1, x_15);
+lean_dec(x_15);
+lean_dec(x_1);
+lean_ctor_set(x_5, 5, x_16);
+x_17 = lean_apply_6(x_2, x_8, x_3, x_4, x_5, x_6, x_7);
+return x_17;
+}
+else
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; uint8_t x_29; lean_object* x_30; uint8_t x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; 
+x_18 = lean_ctor_get(x_5, 0);
+x_19 = lean_ctor_get(x_5, 1);
+x_20 = lean_ctor_get(x_5, 2);
+x_21 = lean_ctor_get(x_5, 3);
+x_22 = lean_ctor_get(x_5, 4);
+x_23 = lean_ctor_get(x_5, 5);
+x_24 = lean_ctor_get(x_5, 6);
+x_25 = lean_ctor_get(x_5, 7);
+x_26 = lean_ctor_get(x_5, 8);
+x_27 = lean_ctor_get(x_5, 9);
+x_28 = lean_ctor_get(x_5, 10);
+x_29 = lean_ctor_get_uint8(x_5, sizeof(void*)*12);
+x_30 = lean_ctor_get(x_5, 11);
+x_31 = lean_ctor_get_uint8(x_5, sizeof(void*)*12 + 1);
+lean_inc(x_30);
+lean_inc(x_28);
+lean_inc(x_27);
+lean_inc(x_26);
+lean_inc(x_25);
+lean_inc(x_24);
+lean_inc(x_23);
+lean_inc(x_22);
+lean_inc(x_21);
+lean_inc(x_20);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_dec(x_5);
+x_32 = l_Lean_replaceRef(x_1, x_23);
+lean_dec(x_23);
+lean_dec(x_1);
+x_33 = lean_alloc_ctor(0, 12, 2);
+lean_ctor_set(x_33, 0, x_18);
+lean_ctor_set(x_33, 1, x_19);
+lean_ctor_set(x_33, 2, x_20);
+lean_ctor_set(x_33, 3, x_21);
+lean_ctor_set(x_33, 4, x_22);
+lean_ctor_set(x_33, 5, x_32);
+lean_ctor_set(x_33, 6, x_24);
+lean_ctor_set(x_33, 7, x_25);
+lean_ctor_set(x_33, 8, x_26);
+lean_ctor_set(x_33, 9, x_27);
+lean_ctor_set(x_33, 10, x_28);
+lean_ctor_set(x_33, 11, x_30);
+lean_ctor_set_uint8(x_33, sizeof(void*)*12, x_29);
+lean_ctor_set_uint8(x_33, sizeof(void*)*12 + 1, x_31);
+x_34 = lean_apply_6(x_2, x_8, x_3, x_4, x_33, x_6, x_7);
+return x_34;
+}
+}
+}
+else
+{
+lean_object* x_35; lean_object* x_36; 
+lean_dec(x_2);
+x_35 = l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__3;
+x_36 = l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__8(x_1, x_35, x_3, x_4, x_5, x_6, x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_1);
+return x_36;
+}
+}
+}
+static lean_object* _init_l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__2___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l___private_Lean_ResolveName_0__Lean_resolveGlobalConstCore___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__3___boxed), 6, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__2(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:
+{
+lean_object* x_7; lean_object* x_8; 
+x_7 = l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__2___closed__1;
+x_8 = l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7(x_1, x_7, x_2, x_3, x_4, x_5, x_6);
+return x_8;
+}
+}
+static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__11___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_instMonadMetaM;
+x_2 = l_Lean_instInhabitedName;
+x_3 = l_instInhabitedOfMonad___rarg(x_1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__11(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:
+{
+lean_object* x_7; lean_object* x_8; lean_object* x_9; 
+x_7 = l_panic___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__11___closed__1;
+x_8 = lean_panic_fn(x_7, x_1);
+x_9 = lean_apply_5(x_8, x_2, x_3, x_4, x_5, x_6);
+return x_9;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__13(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:
+{
+lean_object* x_7; lean_object* x_8; uint8_t x_9; 
+x_7 = lean_ctor_get(x_4, 5);
+x_8 = l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(x_1, x_2, x_3, x_4, x_5, x_6);
+x_9 = !lean_is_exclusive(x_8);
+if (x_9 == 0)
+{
+lean_object* x_10; lean_object* x_11; 
+x_10 = lean_ctor_get(x_8, 0);
+lean_inc(x_7);
+x_11 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_11, 0, x_7);
+lean_ctor_set(x_11, 1, x_10);
+lean_ctor_set_tag(x_8, 1);
+lean_ctor_set(x_8, 0, x_11);
+return x_8;
+}
+else
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
+x_12 = lean_ctor_get(x_8, 0);
+x_13 = lean_ctor_get(x_8, 1);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_dec(x_8);
+lean_inc(x_7);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_7);
+lean_ctor_set(x_14, 1, x_12);
+x_15 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_15, 0, x_14);
+lean_ctor_set(x_15, 1, x_13);
+return x_15;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__12(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) {
+_start:
+{
+uint8_t x_8; 
+x_8 = !lean_is_exclusive(x_5);
+if (x_8 == 0)
+{
+lean_object* x_9; lean_object* x_10; lean_object* x_11; 
+x_9 = lean_ctor_get(x_5, 5);
+x_10 = l_Lean_replaceRef(x_1, x_9);
+lean_dec(x_9);
+lean_ctor_set(x_5, 5, x_10);
+x_11 = l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__13(x_2, x_3, x_4, x_5, x_6, x_7);
+lean_dec(x_5);
+return x_11;
+}
+else
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; lean_object* x_24; uint8_t x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_12 = lean_ctor_get(x_5, 0);
+x_13 = lean_ctor_get(x_5, 1);
+x_14 = lean_ctor_get(x_5, 2);
+x_15 = lean_ctor_get(x_5, 3);
+x_16 = lean_ctor_get(x_5, 4);
+x_17 = lean_ctor_get(x_5, 5);
+x_18 = lean_ctor_get(x_5, 6);
+x_19 = lean_ctor_get(x_5, 7);
+x_20 = lean_ctor_get(x_5, 8);
+x_21 = lean_ctor_get(x_5, 9);
+x_22 = lean_ctor_get(x_5, 10);
+x_23 = lean_ctor_get_uint8(x_5, sizeof(void*)*12);
+x_24 = lean_ctor_get(x_5, 11);
+x_25 = lean_ctor_get_uint8(x_5, sizeof(void*)*12 + 1);
+lean_inc(x_24);
+lean_inc(x_22);
+lean_inc(x_21);
+lean_inc(x_20);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_dec(x_5);
+x_26 = l_Lean_replaceRef(x_1, x_17);
+lean_dec(x_17);
+x_27 = lean_alloc_ctor(0, 12, 2);
+lean_ctor_set(x_27, 0, x_12);
+lean_ctor_set(x_27, 1, x_13);
+lean_ctor_set(x_27, 2, x_14);
+lean_ctor_set(x_27, 3, x_15);
+lean_ctor_set(x_27, 4, x_16);
+lean_ctor_set(x_27, 5, x_26);
+lean_ctor_set(x_27, 6, x_18);
+lean_ctor_set(x_27, 7, x_19);
+lean_ctor_set(x_27, 8, x_20);
+lean_ctor_set(x_27, 9, x_21);
+lean_ctor_set(x_27, 10, x_22);
+lean_ctor_set(x_27, 11, x_24);
+lean_ctor_set_uint8(x_27, sizeof(void*)*12, x_23);
+lean_ctor_set_uint8(x_27, sizeof(void*)*12 + 1, x_25);
+x_28 = l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__13(x_2, x_3, x_4, x_27, x_6, x_7);
+lean_dec(x_27);
+return x_28;
+}
+}
+}
+static lean_object* _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Lean.ResolveName", 16, 16);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Lean.ensureNonAmbiguous", 23, 23);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("unreachable code has been reached", 33, 33);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__1;
+x_2 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__2;
+x_3 = lean_unsigned_to_nat(364u);
+x_4 = lean_unsigned_to_nat(11u);
+x_5 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__3;
+x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
+return x_6;
+}
+}
+static lean_object* _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__5() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("ambiguous identifier '", 22, 22);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__6() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("', possible interpretations: ", 29, 29);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__7() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("", 0, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10(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) {
+_start:
+{
+if (lean_obj_tag(x_2) == 0)
+{
+lean_object* x_8; lean_object* x_9; 
+lean_dec(x_1);
+x_8 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__4;
+x_9 = l_panic___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__11(x_8, x_3, x_4, x_5, x_6, x_7);
+return x_9;
+}
+else
+{
+lean_object* x_10; 
+x_10 = lean_ctor_get(x_2, 1);
+lean_inc(x_10);
+if (lean_obj_tag(x_10) == 0)
+{
+uint8_t x_11; 
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_1);
+x_11 = !lean_is_exclusive(x_2);
+if (x_11 == 0)
+{
+lean_object* x_12; 
+x_12 = lean_ctor_get(x_2, 1);
+lean_dec(x_12);
+lean_ctor_set_tag(x_2, 0);
+lean_ctor_set(x_2, 1, x_7);
+return x_2;
+}
+else
+{
+lean_object* x_13; lean_object* x_14; 
+x_13 = lean_ctor_get(x_2, 0);
+lean_inc(x_13);
+lean_dec(x_2);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_13);
+lean_ctor_set(x_14, 1, x_7);
+return x_14;
+}
+}
+else
+{
+lean_object* x_15; uint8_t x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+lean_dec(x_10);
+x_15 = lean_box(0);
+x_16 = 0;
+x_17 = lean_unsigned_to_nat(0u);
+lean_inc(x_1);
+x_18 = l_Lean_Syntax_formatStxAux(x_15, x_16, x_17, x_1);
+x_19 = l_Std_Format_defWidth;
+x_20 = lean_format_pretty(x_18, x_19, x_17, x_17);
+x_21 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__5;
+x_22 = lean_string_append(x_21, x_20);
+lean_dec(x_20);
+x_23 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__6;
+x_24 = lean_string_append(x_22, x_23);
+x_25 = lean_box(0);
+x_26 = l_List_mapTR_loop___at_Lean_ensureNonAmbiguous___spec__2(x_2, x_25);
+x_27 = l_List_toString___at_Lean_ensureNoOverload___spec__2(x_26);
+lean_dec(x_26);
+x_28 = lean_string_append(x_24, x_27);
+lean_dec(x_27);
+x_29 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__7;
+x_30 = lean_string_append(x_28, x_29);
+x_31 = lean_alloc_ctor(3, 1, 0);
+lean_ctor_set(x_31, 0, x_30);
+x_32 = l_Lean_MessageData_ofFormat(x_31);
+x_33 = l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__12(x_1, x_32, x_3, x_4, x_5, x_6, x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_1);
+return x_33;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_resolveGlobalConstNoOverload___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__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:
+{
+lean_object* x_7; lean_object* x_8; 
+x_7 = lean_alloc_closure((void*)(l___private_Lean_ResolveName_0__Lean_resolveGlobalConstCore___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__3___boxed), 6, 0);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+lean_inc(x_2);
+lean_inc(x_1);
+x_8 = l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7(x_1, x_7, x_2, x_3, x_4, x_5, x_6);
+if (lean_obj_tag(x_8) == 0)
+{
+lean_object* x_9; lean_object* x_10; lean_object* x_11; 
+x_9 = lean_ctor_get(x_8, 0);
+lean_inc(x_9);
+x_10 = lean_ctor_get(x_8, 1);
+lean_inc(x_10);
+lean_dec(x_8);
+x_11 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10(x_1, x_9, x_2, x_3, x_4, x_5, x_10);
+return x_11;
+}
+else
+{
+uint8_t x_12; 
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+x_12 = !lean_is_exclusive(x_8);
+if (x_12 == 0)
+{
+return x_8;
+}
+else
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; 
+x_13 = lean_ctor_get(x_8, 0);
+x_14 = lean_ctor_get(x_8, 1);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_dec(x_8);
+x_15 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_15, 0, x_13);
+lean_ctor_set(x_15, 1, x_14);
+return x_15;
+}
+}
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Lean", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Parser", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Tactic", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("simpPost", 8, 8);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__2;
+x_3 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__3;
+x_4 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__4;
+x_5 = l_Lean_Name_mkStr4(x_1, x_2, x_3, x_4);
+return x_5;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__6() {
+_start:
+{
+uint8_t x_1; uint8_t x_2; uint8_t x_3; uint8_t x_4; uint8_t x_5; lean_object* x_6; 
+x_1 = 0;
+x_2 = 1;
+x_3 = 1;
+x_4 = 0;
+x_5 = 2;
+x_6 = lean_alloc_ctor(0, 0, 17);
+lean_ctor_set_uint8(x_6, 0, x_1);
+lean_ctor_set_uint8(x_6, 1, x_1);
+lean_ctor_set_uint8(x_6, 2, x_1);
+lean_ctor_set_uint8(x_6, 3, x_1);
+lean_ctor_set_uint8(x_6, 4, x_1);
+lean_ctor_set_uint8(x_6, 5, x_2);
+lean_ctor_set_uint8(x_6, 6, x_2);
+lean_ctor_set_uint8(x_6, 7, x_1);
+lean_ctor_set_uint8(x_6, 8, x_2);
+lean_ctor_set_uint8(x_6, 9, x_3);
+lean_ctor_set_uint8(x_6, 10, x_4);
+lean_ctor_set_uint8(x_6, 11, x_2);
+lean_ctor_set_uint8(x_6, 12, x_2);
+lean_ctor_set_uint8(x_6, 13, x_2);
+lean_ctor_set_uint8(x_6, 14, x_5);
+lean_ctor_set_uint8(x_6, 15, x_2);
+lean_ctor_set_uint8(x_6, 16, x_2);
+return x_6;
+}
+}
+static uint64_t _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__7() {
+_start:
+{
+lean_object* x_1; uint64_t x_2; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__6;
+x_2 = l___private_Lean_Meta_Basic_0__Lean_Meta_Config_toKey(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__8() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_PersistentHashMap_mkEmptyEntriesArray(lean_box(0), lean_box(0));
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__9() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__8;
+x_2 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_2, 0, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__10() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = lean_unsigned_to_nat(32u);
+x_2 = lean_mk_empty_array_with_capacity(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__11() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__10;
+x_2 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_2, 0, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__12() {
+_start:
+{
+size_t x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
+x_1 = 5;
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__11;
+x_3 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__10;
+x_4 = lean_unsigned_to_nat(0u);
+x_5 = lean_alloc_ctor(0, 4, sizeof(size_t)*1);
+lean_ctor_set(x_5, 0, x_2);
+lean_ctor_set(x_5, 1, x_3);
+lean_ctor_set(x_5, 2, x_4);
+lean_ctor_set(x_5, 3, x_4);
+lean_ctor_set_usize(x_5, 4, x_1);
+return x_5;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__13() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__9;
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__12;
+x_3 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_3, 0, x_1);
+lean_ctor_set(x_3, 1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__14() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; uint64_t x_4; uint8_t x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; 
+x_1 = lean_box(0);
+x_2 = lean_box(0);
+x_3 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__6;
+x_4 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__7;
+x_5 = 0;
+x_6 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__13;
+x_7 = l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__4;
+x_8 = lean_unsigned_to_nat(0u);
+x_9 = lean_alloc_ctor(0, 7, 11);
+lean_ctor_set(x_9, 0, x_3);
+lean_ctor_set(x_9, 1, x_1);
+lean_ctor_set(x_9, 2, x_6);
+lean_ctor_set(x_9, 3, x_7);
+lean_ctor_set(x_9, 4, x_2);
+lean_ctor_set(x_9, 5, x_8);
+lean_ctor_set(x_9, 6, x_2);
+lean_ctor_set_uint64(x_9, sizeof(void*)*7, x_4);
+lean_ctor_set_uint8(x_9, sizeof(void*)*7 + 8, x_5);
+lean_ctor_set_uint8(x_9, sizeof(void*)*7 + 9, x_5);
+lean_ctor_set_uint8(x_9, sizeof(void*)*7 + 10, x_5);
+return x_9;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__15() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_unsigned_to_nat(0u);
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__9;
+x_3 = lean_alloc_ctor(0, 9, 0);
+lean_ctor_set(x_3, 0, x_1);
+lean_ctor_set(x_3, 1, x_1);
+lean_ctor_set(x_3, 2, x_1);
+lean_ctor_set(x_3, 3, x_2);
+lean_ctor_set(x_3, 4, x_2);
+lean_ctor_set(x_3, 5, x_2);
+lean_ctor_set(x_3, 6, x_2);
+lean_ctor_set(x_3, 7, x_2);
+lean_ctor_set(x_3, 8, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__16() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__9;
+x_2 = lean_alloc_ctor(0, 6, 0);
+lean_ctor_set(x_2, 0, x_1);
+lean_ctor_set(x_2, 1, x_1);
+lean_ctor_set(x_2, 2, x_1);
+lean_ctor_set(x_2, 3, x_1);
+lean_ctor_set(x_2, 4, x_1);
+lean_ctor_set(x_2, 5, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__17() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__9;
+x_2 = lean_alloc_ctor(0, 4, 0);
+lean_ctor_set(x_2, 0, x_1);
+lean_ctor_set(x_2, 1, x_1);
+lean_ctor_set(x_2, 2, x_1);
+lean_ctor_set(x_2, 3, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__18() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__15;
+x_3 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__16;
+x_4 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__12;
+x_5 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__17;
+x_6 = lean_alloc_ctor(0, 5, 0);
+lean_ctor_set(x_6, 0, x_2);
+lean_ctor_set(x_6, 1, x_3);
+lean_ctor_set(x_6, 2, x_1);
+lean_ctor_set(x_6, 3, x_4);
+lean_ctor_set(x_6, 4, x_5);
+return x_6;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__19() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("declare", 7, 7);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__20() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__19;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__21() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Meta", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__22() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Grind", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__23() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("registerBuiltinDownwardPropagator", 33, 33);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__24() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__21;
+x_3 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__22;
+x_4 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__23;
+x_5 = l_Lean_Name_mkStr4(x_1, x_2, x_3, x_4);
+return x_5;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__25() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("registerBuiltinUpwardPropagator", 31, 31);
+return x_1;
+}
+}
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__26() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
+x_1 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__21;
+x_3 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__22;
+x_4 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__25;
+x_5 = l_Lean_Name_mkStr4(x_1, x_2, x_3, x_4);
+return x_5;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
+_start:
+{
+lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; uint8_t x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+x_6 = lean_unsigned_to_nat(1u);
+x_7 = l_Lean_Syntax_getArg(x_2, x_6);
+x_8 = l_Lean_Syntax_getKind(x_7);
+x_9 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__5;
+x_10 = lean_name_eq(x_8, x_9);
+lean_dec(x_8);
+x_11 = lean_unsigned_to_nat(2u);
+x_12 = l_Lean_Syntax_getArg(x_2, x_11);
+x_13 = lean_box(0);
+x_14 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__18;
+x_15 = lean_st_mk_ref(x_14, x_5);
+if (x_10 == 0)
+{
+lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_52 = lean_ctor_get(x_15, 0);
+lean_inc(x_52);
+x_53 = lean_ctor_get(x_15, 1);
+lean_inc(x_53);
+lean_dec(x_15);
+x_54 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__24;
+x_16 = x_54;
+x_17 = x_52;
+x_18 = x_53;
+goto block_51;
+}
+else
+{
+lean_object* x_55; lean_object* x_56; lean_object* x_57; 
+x_55 = lean_ctor_get(x_15, 0);
+lean_inc(x_55);
+x_56 = lean_ctor_get(x_15, 1);
+lean_inc(x_56);
+lean_dec(x_15);
+x_57 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__26;
+x_16 = x_57;
+x_17 = x_55;
+x_18 = x_56;
+goto block_51;
+}
+block_51:
+{
+lean_object* x_19; lean_object* x_20; 
+x_19 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__14;
+lean_inc(x_4);
+lean_inc(x_3);
+lean_inc(x_17);
+x_20 = l_Lean_resolveGlobalConstNoOverload___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__1(x_12, x_19, x_17, x_3, x_4, x_18);
+if (lean_obj_tag(x_20) == 0)
+{
+lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_21 = lean_ctor_get(x_20, 0);
+lean_inc(x_21);
+x_22 = lean_ctor_get(x_20, 1);
+lean_inc(x_22);
+lean_dec(x_20);
+x_23 = l_Lean_Expr_const___override(x_16, x_13);
+x_24 = l___private_Lean_ToExpr_0__Lean_Name_toExprAux(x_21);
+lean_inc(x_1);
+x_25 = l_Lean_Expr_const___override(x_1, x_13);
+x_26 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_26, 0, x_25);
+lean_ctor_set(x_26, 1, x_13);
+x_27 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_27, 0, x_24);
+lean_ctor_set(x_27, 1, x_26);
+x_28 = lean_array_mk(x_27);
+x_29 = l_Lean_mkAppN(x_23, x_28);
+lean_dec(x_28);
+x_30 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__20;
+x_31 = l_Lean_Name_append(x_1, x_30);
+x_32 = l___private_Lean_CoreM_0__Lean_Core_mkFreshNameImp(x_31, x_3, x_4, x_22);
+x_33 = lean_ctor_get(x_32, 0);
+lean_inc(x_33);
+x_34 = lean_ctor_get(x_32, 1);
+lean_inc(x_34);
+lean_dec(x_32);
+x_35 = l_Lean_declareBuiltin(x_33, x_29, x_3, x_4, x_34);
+lean_dec(x_4);
+lean_dec(x_3);
+if (lean_obj_tag(x_35) == 0)
+{
+lean_object* x_36; lean_object* x_37; lean_object* x_38; uint8_t x_39; 
+x_36 = lean_ctor_get(x_35, 0);
+lean_inc(x_36);
+x_37 = lean_ctor_get(x_35, 1);
+lean_inc(x_37);
+lean_dec(x_35);
+x_38 = lean_st_ref_get(x_17, x_37);
+lean_dec(x_17);
+x_39 = !lean_is_exclusive(x_38);
+if (x_39 == 0)
+{
+lean_object* x_40; 
+x_40 = lean_ctor_get(x_38, 0);
+lean_dec(x_40);
+lean_ctor_set(x_38, 0, x_36);
+return x_38;
+}
+else
+{
+lean_object* x_41; lean_object* x_42; 
+x_41 = lean_ctor_get(x_38, 1);
+lean_inc(x_41);
+lean_dec(x_38);
+x_42 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_42, 0, x_36);
+lean_ctor_set(x_42, 1, x_41);
+return x_42;
+}
+}
+else
+{
+uint8_t x_43; 
+lean_dec(x_17);
+x_43 = !lean_is_exclusive(x_35);
+if (x_43 == 0)
+{
+return x_35;
+}
+else
+{
+lean_object* x_44; lean_object* x_45; lean_object* x_46; 
+x_44 = lean_ctor_get(x_35, 0);
+x_45 = lean_ctor_get(x_35, 1);
+lean_inc(x_45);
+lean_inc(x_44);
+lean_dec(x_35);
+x_46 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_46, 0, x_44);
+lean_ctor_set(x_46, 1, x_45);
+return x_46;
+}
+}
+}
+else
+{
+uint8_t x_47; 
+lean_dec(x_17);
+lean_dec(x_16);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_1);
+x_47 = !lean_is_exclusive(x_20);
+if (x_47 == 0)
+{
+return x_20;
+}
+else
+{
+lean_object* x_48; lean_object* x_49; lean_object* x_50; 
+x_48 = lean_ctor_get(x_20, 0);
+x_49 = lean_ctor_get(x_20, 1);
+lean_inc(x_49);
+lean_inc(x_48);
+lean_dec(x_20);
+x_50 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_50, 0, x_48);
+lean_ctor_set(x_50, 1, x_49);
+return x_50;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_resolveGlobalName___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__4___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) {
+_start:
+{
+lean_object* x_7; 
+x_7 = l_Lean_resolveGlobalName___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__4(x_1, x_2, x_3, x_4, x_5, x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_7;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___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) {
+_start:
+{
+lean_object* x_7; 
+x_7 = l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6(x_1, x_2, x_3, x_4, x_5, x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_7;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__5___lambda__1___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) {
+_start:
+{
+lean_object* x_9; 
+x_9 = l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__5___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_9;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__5___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) {
+_start:
+{
+lean_object* x_8; 
+x_8 = l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__5(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_8;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_ResolveName_0__Lean_resolveGlobalConstCore___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__3___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) {
+_start:
+{
+lean_object* x_7; 
+x_7 = l___private_Lean_ResolveName_0__Lean_resolveGlobalConstCore___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__3(x_1, x_2, x_3, x_4, x_5, x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_7;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__9___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) {
+_start:
+{
+lean_object* x_7; 
+x_7 = l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__9(x_1, x_2, x_3, x_4, x_5, x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_7;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__8___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) {
+_start:
+{
+lean_object* x_8; 
+x_8 = l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__8(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_1);
+return x_8;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__13___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) {
+_start:
+{
+lean_object* x_7; 
+x_7 = l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__13(x_1, x_2, x_3, x_4, x_5, x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_7;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__12___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) {
+_start:
+{
+lean_object* x_8; 
+x_8 = l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__12(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_1);
+return x_8;
+}
+}
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
+_start:
+{
+lean_object* x_6; 
+x_6 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin(x_1, x_2, x_3, x_4, x_5);
+lean_dec(x_2);
+return x_6;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__1(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
+_start:
+{
+lean_object* x_7; 
+x_7 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin(x_1, x_2, x_4, x_5, x_6);
+return x_7;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Not implemented yet, [-builtin_simproc]", 39, 39);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___closed__1;
+x_2 = l_Lean_stringToMessageData(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+_start:
+{
+lean_object* x_5; lean_object* x_6; 
+x_5 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___closed__2;
+x_6 = l_Lean_throwError___at_Lean_Attribute_Builtin_ensureNoArgs___spec__2(x_5, x_2, x_3, x_4);
+return x_6;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__1;
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__21;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__2;
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__22;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__4() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("initFn", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__3;
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__4;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__6() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("_@", 2, 2);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__7() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__5;
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__6;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__8() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__7;
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__9() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__8;
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__21;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__10() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__9;
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__3;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__11() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__10;
+x_2 = l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__22;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__12() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("PropagatorAttr", 14, 14);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__13() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__11;
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__12;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__14() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("_hyg", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__15() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__13;
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__14;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__16() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__15;
+x_2 = lean_unsigned_to_nat(655u);
+x_3 = l_Lean_Name_num___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__17() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("grindPropagatorBuiltinAttr", 26, 26);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__18() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__17;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__19() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("Builtin `grind` propagator procedure", 36, 36);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__20() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__16;
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__18;
+x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__19;
+x_4 = 1;
+x_5 = lean_alloc_ctor(0, 3, 1);
+lean_ctor_set(x_5, 0, x_1);
+lean_ctor_set(x_5, 1, x_2);
+lean_ctor_set(x_5, 2, x_3);
+lean_ctor_set_uint8(x_5, sizeof(void*)*3, x_4);
+return x_5;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__21() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__1___boxed), 6, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__22() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___boxed), 4, 0);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__23() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__20;
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__21;
+x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__22;
+x_4 = lean_alloc_ctor(0, 3, 0);
+lean_ctor_set(x_4, 0, x_1);
+lean_ctor_set(x_4, 1, x_2);
+lean_ctor_set(x_4, 2, x_3);
+return x_4;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655_(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; lean_object* x_3; 
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__23;
+x_3 = l_Lean_registerBuiltinAttribute(x_2, x_1);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__1___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) {
+_start:
+{
+uint8_t x_7; lean_object* x_8; 
+x_7 = lean_unbox(x_3);
+lean_dec(x_3);
+x_8 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__1(x_1, x_2, x_7, x_4, x_5, x_6);
+lean_dec(x_2);
+return x_8;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___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_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2(x_1, x_2, x_3, x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_5;
+}
+}
+lean_object* initialize_Init_Grind(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind_Proof(uint8_t builtin, lean_object*);
+static bool _G_initialized = false;
+LEAN_EXPORT lean_object* initialize_Lean_Meta_Tactic_Grind_PropagatorAttr(uint8_t builtin, lean_object* w) {
+lean_object * res;
+if (_G_initialized) return lean_io_result_mk_ok(lean_box(0));
+_G_initialized = true;
+res = initialize_Init_Grind(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+res = initialize_Lean_Meta_Tactic_Grind_Proof(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__1 = _init_l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__1);
+l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__2 = _init_l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__2);
+l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__3 = _init_l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__3);
+l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__4 = _init_l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__4);
+l_Lean_Meta_Grind_instInhabitedBuiltinPropagators = _init_l_Lean_Meta_Grind_instInhabitedBuiltinPropagators();
+lean_mark_persistent(l_Lean_Meta_Grind_instInhabitedBuiltinPropagators);
+if (builtin) {res = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_52_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+l_Lean_Meta_Grind_builtinPropagatorsRef = lean_io_result_get_value(res);
+lean_mark_persistent(l_Lean_Meta_Grind_builtinPropagatorsRef);
+lean_dec_ref(res);
+}l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__2);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__4();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__4);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__1);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__2);
+l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__1 = _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__1();
+lean_mark_persistent(l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__1);
+l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__2 = _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__2();
+lean_mark_persistent(l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__2);
+l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__3 = _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__3();
+lean_mark_persistent(l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__3);
+l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__4 = _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__4();
+lean_mark_persistent(l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__4);
+l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__1 = _init_l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__1();
+lean_mark_persistent(l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__1);
+l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__2 = _init_l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__2();
+lean_mark_persistent(l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__2);
+l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__3 = _init_l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__3();
+lean_mark_persistent(l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__3);
+l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__4 = _init_l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__4();
+lean_mark_persistent(l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__4);
+l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__2___closed__1 = _init_l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__2___closed__1();
+lean_mark_persistent(l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__2___closed__1);
+l_panic___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__11___closed__1 = _init_l_panic___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__11___closed__1();
+lean_mark_persistent(l_panic___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__11___closed__1);
+l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__1 = _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__1();
+lean_mark_persistent(l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__1);
+l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__2 = _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__2();
+lean_mark_persistent(l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__2);
+l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__3 = _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__3();
+lean_mark_persistent(l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__3);
+l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__4 = _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__4();
+lean_mark_persistent(l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__4);
+l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__5 = _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__5();
+lean_mark_persistent(l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__5);
+l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__6 = _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__6();
+lean_mark_persistent(l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__6);
+l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__7 = _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__7();
+lean_mark_persistent(l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__7);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__1);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__2);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__3);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__4();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__4);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__5();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__5);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__6();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__6);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__7 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__7();
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__8 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__8();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__8);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__9 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__9();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__9);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__10 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__10();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__10);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__11 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__11();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__11);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__12 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__12();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__12);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__13 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__13();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__13);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__14 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__14();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__14);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__15 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__15();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__15);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__16 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__16();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__16);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__17 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__17();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__17);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__18 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__18();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__18);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__19 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__19();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__19);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__20 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__20();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__20);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__21 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__21();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__21);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__22 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__22();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__22);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__23 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__23();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__23);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__24 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__24();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__24);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__25 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__25();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__25);
+l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__26 = _init_l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__26();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_PropagatorAttr_0__Lean_Meta_Grind_addBuiltin___closed__26);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___closed__1 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___closed__1);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___closed__2 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____lambda__2___closed__2);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__1 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__1);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__2 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__2);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__3 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__3);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__4 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__4);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__5 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__5);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__6 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__6();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__6);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__7 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__7();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__7);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__8 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__8();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__8);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__9 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__9();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__9);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__10 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__10();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__10);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__11 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__11();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__11);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__12 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__12();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__12);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__13 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__13();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__13);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__14 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__14();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__14);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__15 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__15();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__15);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__16 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__16();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__16);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__17 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__17();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__17);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__18 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__18();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__18);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__19 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__19();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__19);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__20 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__20();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__20);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__21 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__21();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__21);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__22 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__22();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__22);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__23 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__23();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655____closed__23);
+if (builtin) {res = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_PropagatorAttr___hyg_655_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+}return lean_io_result_mk_ok(lean_box(0));
+}
+#ifdef __cplusplus
+}
+#endif
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Grind/Run.c b/stage0/stdlib/Lean/Meta/Tactic/Grind/Run.c
new file mode 100644
index 000000000000..2aaf380b50aa
--- /dev/null
+++ b/stage0/stdlib/Lean/Meta/Tactic/Grind/Run.c
@@ -0,0 +1,1827 @@
+// Lean compiler output
+// Module: Lean.Meta.Tactic.Grind.Run
+// Imports: Init.Grind.Lemmas Lean.Meta.Tactic.Grind.Types Lean.Meta.Tactic.Grind.PropagatorAttr Lean.Meta.Tactic.Grind.Proj
+#include <lean/lean.h>
+#if defined(__clang__)
+#pragma clang diagnostic ignored "-Wunused-parameter"
+#pragma clang diagnostic ignored "-Wunused-label"
+#elif defined(__GNUC__) && !defined(__CLANG__)
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#pragma GCC diagnostic ignored "-Wunused-label"
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+lean_object* l_Lean_Expr_const___override(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run___rarg___lambda__1___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_Meta_Grind_mkMethods(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__14;
+lean_object* lean_mk_empty_array_with_capacity(lean_object*);
+LEAN_EXPORT lean_object* l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg(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_Grind_GrindM_run___rarg___closed__20;
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__11;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run(lean_object*);
+size_t lean_uint64_to_usize(uint64_t);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27(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_Grind_GrindM_run___rarg___closed__5;
+LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_mkMethods___spec__1___boxed(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2(lean_object*);
+lean_object* l_Lean_Meta_getSimpCongrTheorems___rarg(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__1;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_getFalseExpr___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+size_t lean_usize_of_nat(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GrindM_run(lean_object*);
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__10;
+uint64_t lean_uint64_shift_right(uint64_t, uint64_t);
+lean_object* l_Lean_Meta_Simp_SimprocExtension_getSimprocs(lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkMethods___rarg___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_object* l_Lean_Meta_Grind_propagateProjEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* l_Lean_Meta_Grind_getTrueExpr___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+lean_object* lean_st_ref_get(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__13;
+lean_object* lean_st_mk_ref(lean_object*, lean_object*);
+lean_object* l___private_Lean_Meta_Basic_0__Lean_Meta_withMVarContextImp___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__15;
+lean_object* l_ShareCommon_mkStateImpl(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkMethods___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*);
+uint8_t lean_name_eq(lean_object*, lean_object*);
+lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GrindM_run___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkGoal___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_object* l_Lean_Meta_Simp_mkContext(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+extern lean_object* l_Lean_Meta_Grind_builtinPropagatorsRef;
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__18;
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__7;
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__12;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkMethods___rarg(lean_object*);
+LEAN_EXPORT lean_object* l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkGoal___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*);
+extern lean_object* l_Lean_Meta_Grind_grindNormSimprocExt;
+lean_object* l_Lean_Meta_SimpExtension_getTheorems(lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run___rarg___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__3;
+static lean_object* l_Lean_Meta_Grind_GoalM_run_x27___closed__1;
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__6;
+LEAN_EXPORT lean_object* l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(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_Grind_mkMethods___boxed(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__19;
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_empty___at_Lean_Meta_Grind_mkGoal___spec__1;
+uint64_t l_Lean_Name_hash___override(lean_object*);
+extern lean_object* l_Lean_Meta_Grind_grindNormExt;
+uint64_t lean_uint64_xor(uint64_t, uint64_t);
+LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_mkMethods___spec__1(lean_object*, lean_object*);
+lean_object* l_Lean_Expr_getAppFn(lean_object*);
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__17;
+lean_object* l_Lean_Meta_Grind_mkENodeCore(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_object*);
+lean_object* l_Lean_PersistentHashMap_mkEmptyEntriesArray(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+size_t lean_usize_sub(size_t, size_t);
+lean_object* lean_array_mk(lean_object*);
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__4;
+extern lean_object* l_Lean_Meta_Simp_defaultMaxSteps;
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__8;
+lean_object* lean_array_uget(lean_object*, size_t);
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__9;
+lean_object* lean_array_get_size(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkGoal(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+extern lean_object* l_Lean_ShareCommon_objectFactory;
+lean_object* lean_state_sharecommon(lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_mkMethods___rarg___closed__1;
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__16;
+static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__2;
+static lean_object* l_Lean_Meta_Grind_mkGoal___closed__1;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27___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_Meta_Grind_GoalM_run___rarg___lambda__2(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_Grind_mkMethods___rarg___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*);
+size_t lean_usize_land(size_t, size_t);
+LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_mkMethods___spec__1(lean_object* x_1, lean_object* x_2) {
+_start:
+{
+if (lean_obj_tag(x_2) == 0)
+{
+lean_object* x_3; 
+x_3 = lean_box(0);
+return x_3;
+}
+else
+{
+lean_object* x_4; lean_object* x_5; lean_object* x_6; uint8_t x_7; 
+x_4 = lean_ctor_get(x_2, 0);
+x_5 = lean_ctor_get(x_2, 1);
+x_6 = lean_ctor_get(x_2, 2);
+x_7 = lean_name_eq(x_4, x_1);
+if (x_7 == 0)
+{
+x_2 = x_6;
+goto _start;
+}
+else
+{
+lean_object* x_9; 
+lean_inc(x_5);
+x_9 = lean_alloc_ctor(1, 1, 0);
+lean_ctor_set(x_9, 0, x_5);
+return x_9;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkMethods___rarg___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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = l_Lean_Expr_getAppFn(x_2);
+if (lean_obj_tag(x_12) == 4)
+{
+lean_object* x_13; lean_object* x_14; 
+x_13 = lean_ctor_get(x_12, 0);
+lean_inc(x_13);
+lean_dec(x_12);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+lean_inc(x_2);
+x_14 = l_Lean_Meta_Grind_propagateProjEq(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+if (lean_obj_tag(x_14) == 0)
+{
+uint8_t x_15; 
+x_15 = !lean_is_exclusive(x_14);
+if (x_15 == 0)
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; uint64_t x_21; uint64_t x_22; uint64_t x_23; uint64_t x_24; uint64_t x_25; uint64_t x_26; uint64_t x_27; size_t x_28; size_t x_29; size_t x_30; size_t x_31; size_t x_32; lean_object* x_33; lean_object* x_34; 
+x_16 = lean_ctor_get(x_1, 0);
+x_17 = lean_ctor_get(x_14, 1);
+x_18 = lean_ctor_get(x_14, 0);
+lean_dec(x_18);
+x_19 = lean_ctor_get(x_16, 1);
+x_20 = lean_array_get_size(x_19);
+x_21 = l_Lean_Name_hash___override(x_13);
+x_22 = 32;
+x_23 = lean_uint64_shift_right(x_21, x_22);
+x_24 = lean_uint64_xor(x_21, x_23);
+x_25 = 16;
+x_26 = lean_uint64_shift_right(x_24, x_25);
+x_27 = lean_uint64_xor(x_24, x_26);
+x_28 = lean_uint64_to_usize(x_27);
+x_29 = lean_usize_of_nat(x_20);
+lean_dec(x_20);
+x_30 = 1;
+x_31 = lean_usize_sub(x_29, x_30);
+x_32 = lean_usize_land(x_28, x_31);
+x_33 = lean_array_uget(x_19, x_32);
+x_34 = l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_mkMethods___spec__1(x_13, x_33);
+lean_dec(x_33);
+lean_dec(x_13);
+if (lean_obj_tag(x_34) == 0)
+{
+lean_object* x_35; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_35 = lean_box(0);
+lean_ctor_set(x_14, 0, x_35);
+return x_14;
+}
+else
+{
+lean_object* x_36; lean_object* x_37; 
+lean_free_object(x_14);
+x_36 = lean_ctor_get(x_34, 0);
+lean_inc(x_36);
+lean_dec(x_34);
+x_37 = lean_apply_10(x_36, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_17);
+return x_37;
+}
+}
+else
+{
+lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; uint64_t x_42; uint64_t x_43; uint64_t x_44; uint64_t x_45; uint64_t x_46; uint64_t x_47; uint64_t x_48; size_t x_49; size_t x_50; size_t x_51; size_t x_52; size_t x_53; lean_object* x_54; lean_object* x_55; 
+x_38 = lean_ctor_get(x_1, 0);
+x_39 = lean_ctor_get(x_14, 1);
+lean_inc(x_39);
+lean_dec(x_14);
+x_40 = lean_ctor_get(x_38, 1);
+x_41 = lean_array_get_size(x_40);
+x_42 = l_Lean_Name_hash___override(x_13);
+x_43 = 32;
+x_44 = lean_uint64_shift_right(x_42, x_43);
+x_45 = lean_uint64_xor(x_42, x_44);
+x_46 = 16;
+x_47 = lean_uint64_shift_right(x_45, x_46);
+x_48 = lean_uint64_xor(x_45, x_47);
+x_49 = lean_uint64_to_usize(x_48);
+x_50 = lean_usize_of_nat(x_41);
+lean_dec(x_41);
+x_51 = 1;
+x_52 = lean_usize_sub(x_50, x_51);
+x_53 = lean_usize_land(x_49, x_52);
+x_54 = lean_array_uget(x_40, x_53);
+x_55 = l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_mkMethods___spec__1(x_13, x_54);
+lean_dec(x_54);
+lean_dec(x_13);
+if (lean_obj_tag(x_55) == 0)
+{
+lean_object* x_56; lean_object* x_57; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_56 = lean_box(0);
+x_57 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_57, 0, x_56);
+lean_ctor_set(x_57, 1, x_39);
+return x_57;
+}
+else
+{
+lean_object* x_58; lean_object* x_59; 
+x_58 = lean_ctor_get(x_55, 0);
+lean_inc(x_58);
+lean_dec(x_55);
+x_59 = lean_apply_10(x_58, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_39);
+return x_59;
+}
+}
+}
+else
+{
+uint8_t x_60; 
+lean_dec(x_13);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_60 = !lean_is_exclusive(x_14);
+if (x_60 == 0)
+{
+return x_14;
+}
+else
+{
+lean_object* x_61; lean_object* x_62; lean_object* x_63; 
+x_61 = lean_ctor_get(x_14, 0);
+x_62 = lean_ctor_get(x_14, 1);
+lean_inc(x_62);
+lean_inc(x_61);
+lean_dec(x_14);
+x_63 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_63, 0, x_61);
+lean_ctor_set(x_63, 1, x_62);
+return x_63;
+}
+}
+}
+else
+{
+lean_object* x_64; lean_object* x_65; 
+lean_dec(x_12);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_64 = lean_box(0);
+x_65 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_65, 0, x_64);
+lean_ctor_set(x_65, 1, x_11);
+return x_65;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkMethods___rarg___lambda__2(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, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = l_Lean_Expr_getAppFn(x_2);
+if (lean_obj_tag(x_12) == 4)
+{
+lean_object* x_13; lean_object* x_14; uint8_t x_15; 
+x_13 = lean_ctor_get(x_1, 1);
+lean_inc(x_13);
+lean_dec(x_1);
+x_14 = lean_ctor_get(x_12, 0);
+lean_inc(x_14);
+lean_dec(x_12);
+x_15 = !lean_is_exclusive(x_13);
+if (x_15 == 0)
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; uint64_t x_19; uint64_t x_20; uint64_t x_21; uint64_t x_22; uint64_t x_23; uint64_t x_24; uint64_t x_25; size_t x_26; size_t x_27; size_t x_28; size_t x_29; size_t x_30; lean_object* x_31; lean_object* x_32; 
+x_16 = lean_ctor_get(x_13, 1);
+x_17 = lean_ctor_get(x_13, 0);
+lean_dec(x_17);
+x_18 = lean_array_get_size(x_16);
+x_19 = l_Lean_Name_hash___override(x_14);
+x_20 = 32;
+x_21 = lean_uint64_shift_right(x_19, x_20);
+x_22 = lean_uint64_xor(x_19, x_21);
+x_23 = 16;
+x_24 = lean_uint64_shift_right(x_22, x_23);
+x_25 = lean_uint64_xor(x_22, x_24);
+x_26 = lean_uint64_to_usize(x_25);
+x_27 = lean_usize_of_nat(x_18);
+lean_dec(x_18);
+x_28 = 1;
+x_29 = lean_usize_sub(x_27, x_28);
+x_30 = lean_usize_land(x_26, x_29);
+x_31 = lean_array_uget(x_16, x_30);
+lean_dec(x_16);
+x_32 = l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_mkMethods___spec__1(x_14, x_31);
+lean_dec(x_31);
+lean_dec(x_14);
+if (lean_obj_tag(x_32) == 0)
+{
+lean_object* x_33; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_33 = lean_box(0);
+lean_ctor_set(x_13, 1, x_11);
+lean_ctor_set(x_13, 0, x_33);
+return x_13;
+}
+else
+{
+lean_object* x_34; lean_object* x_35; 
+lean_free_object(x_13);
+x_34 = lean_ctor_get(x_32, 0);
+lean_inc(x_34);
+lean_dec(x_32);
+x_35 = lean_apply_10(x_34, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+return x_35;
+}
+}
+else
+{
+lean_object* x_36; lean_object* x_37; uint64_t x_38; uint64_t x_39; uint64_t x_40; uint64_t x_41; uint64_t x_42; uint64_t x_43; uint64_t x_44; size_t x_45; size_t x_46; size_t x_47; size_t x_48; size_t x_49; lean_object* x_50; lean_object* x_51; 
+x_36 = lean_ctor_get(x_13, 1);
+lean_inc(x_36);
+lean_dec(x_13);
+x_37 = lean_array_get_size(x_36);
+x_38 = l_Lean_Name_hash___override(x_14);
+x_39 = 32;
+x_40 = lean_uint64_shift_right(x_38, x_39);
+x_41 = lean_uint64_xor(x_38, x_40);
+x_42 = 16;
+x_43 = lean_uint64_shift_right(x_41, x_42);
+x_44 = lean_uint64_xor(x_41, x_43);
+x_45 = lean_uint64_to_usize(x_44);
+x_46 = lean_usize_of_nat(x_37);
+lean_dec(x_37);
+x_47 = 1;
+x_48 = lean_usize_sub(x_46, x_47);
+x_49 = lean_usize_land(x_45, x_48);
+x_50 = lean_array_uget(x_36, x_49);
+lean_dec(x_36);
+x_51 = l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_mkMethods___spec__1(x_14, x_50);
+lean_dec(x_50);
+lean_dec(x_14);
+if (lean_obj_tag(x_51) == 0)
+{
+lean_object* x_52; lean_object* x_53; 
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_52 = lean_box(0);
+x_53 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_53, 0, x_52);
+lean_ctor_set(x_53, 1, x_11);
+return x_53;
+}
+else
+{
+lean_object* x_54; lean_object* x_55; 
+x_54 = lean_ctor_get(x_51, 0);
+lean_inc(x_54);
+lean_dec(x_51);
+x_55 = lean_apply_10(x_54, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+return x_55;
+}
+}
+}
+else
+{
+lean_object* x_56; lean_object* x_57; 
+lean_dec(x_12);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+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_56 = lean_box(0);
+x_57 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_57, 0, x_56);
+lean_ctor_set(x_57, 1, x_11);
+return x_57;
+}
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_mkMethods___rarg___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_Meta_Grind_builtinPropagatorsRef;
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkMethods___rarg(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; lean_object* x_3; uint8_t x_4; 
+x_2 = l_Lean_Meta_Grind_mkMethods___rarg___closed__1;
+x_3 = lean_st_ref_get(x_2, x_1);
+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; 
+x_5 = lean_ctor_get(x_3, 0);
+lean_inc(x_5);
+x_6 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_mkMethods___rarg___lambda__1___boxed), 11, 1);
+lean_closure_set(x_6, 0, x_5);
+x_7 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_mkMethods___rarg___lambda__2), 11, 1);
+lean_closure_set(x_7, 0, x_5);
+x_8 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_8, 0, x_6);
+lean_ctor_set(x_8, 1, x_7);
+lean_ctor_set(x_3, 0, x_8);
+return x_3;
+}
+else
+{
+lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; 
+x_9 = lean_ctor_get(x_3, 0);
+x_10 = lean_ctor_get(x_3, 1);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_dec(x_3);
+lean_inc(x_9);
+x_11 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_mkMethods___rarg___lambda__1___boxed), 11, 1);
+lean_closure_set(x_11, 0, x_9);
+x_12 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_mkMethods___rarg___lambda__2), 11, 1);
+lean_closure_set(x_12, 0, x_9);
+x_13 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_13, 0, x_11);
+lean_ctor_set(x_13, 1, x_12);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_13);
+lean_ctor_set(x_14, 1, x_10);
+return x_14;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkMethods(lean_object* x_1, lean_object* x_2) {
+_start:
+{
+lean_object* x_3; 
+x_3 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_mkMethods___rarg), 1, 0);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_mkMethods___spec__1___boxed(lean_object* x_1, lean_object* x_2) {
+_start:
+{
+lean_object* x_3; 
+x_3 = l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_mkMethods___spec__1(x_1, x_2);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkMethods___rarg___lambda__1___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, lean_object* x_10, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = l_Lean_Meta_Grind_mkMethods___rarg___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_1);
+return x_12;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkMethods___boxed(lean_object* x_1, lean_object* x_2) {
+_start:
+{
+lean_object* x_3; 
+x_3 = l_Lean_Meta_Grind_mkMethods(x_1, x_2);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_ShareCommon_objectFactory;
+x_2 = l_ShareCommon_mkStateImpl(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__2() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("False", 5, 5);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__2;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__4() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__3;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__5() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_ShareCommon_objectFactory;
+x_2 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__1;
+x_3 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__4;
+x_4 = lean_state_sharecommon(x_1, x_2, x_3);
+return x_4;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__6() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("True", 4, 4);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__7() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__6;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__8() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__7;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__9() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_Meta_Grind_grindNormExt;
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__10() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_Meta_Grind_grindNormSimprocExt;
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__11() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; uint8_t x_3; uint8_t x_4; uint8_t x_5; lean_object* x_6; 
+x_1 = l_Lean_Meta_Simp_defaultMaxSteps;
+x_2 = lean_unsigned_to_nat(2u);
+x_3 = 0;
+x_4 = 1;
+x_5 = 0;
+x_6 = lean_alloc_ctor(0, 2, 19);
+lean_ctor_set(x_6, 0, x_1);
+lean_ctor_set(x_6, 1, x_2);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2, x_3);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 1, x_4);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 2, x_3);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 3, x_4);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 4, x_4);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 5, x_4);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 6, x_5);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 7, x_4);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 8, x_4);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 9, x_3);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 10, x_4);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 11, x_3);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 12, x_4);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 13, x_4);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 14, x_3);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 15, x_3);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 16, x_3);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 17, x_4);
+lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 18, x_4);
+return x_6;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__12() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_PersistentHashMap_mkEmptyEntriesArray(lean_box(0), lean_box(0));
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__13() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__12;
+x_2 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_2, 0, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__14() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__13;
+x_2 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_2, 0, x_1);
+lean_ctor_set(x_2, 1, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__15() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__13;
+x_2 = lean_unsigned_to_nat(0u);
+x_3 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_3, 0, x_1);
+lean_ctor_set(x_3, 1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__16() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = lean_unsigned_to_nat(32u);
+x_2 = lean_mk_empty_array_with_capacity(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__17() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__16;
+x_2 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_2, 0, x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__18() {
+_start:
+{
+size_t x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
+x_1 = 5;
+x_2 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__17;
+x_3 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__16;
+x_4 = lean_unsigned_to_nat(0u);
+x_5 = lean_alloc_ctor(0, 4, sizeof(size_t)*1);
+lean_ctor_set(x_5, 0, x_2);
+lean_ctor_set(x_5, 1, x_3);
+lean_ctor_set(x_5, 2, x_4);
+lean_ctor_set(x_5, 3, x_4);
+lean_ctor_set_usize(x_5, 4, x_1);
+return x_5;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__19() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__13;
+x_2 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__18;
+x_3 = lean_alloc_ctor(0, 4, 0);
+lean_ctor_set(x_3, 0, x_1);
+lean_ctor_set(x_3, 1, x_1);
+lean_ctor_set(x_3, 2, x_1);
+lean_ctor_set(x_3, 3, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__20() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__15;
+x_2 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__19;
+x_3 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_3, 0, x_1);
+lean_ctor_set(x_3, 1, x_2);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GrindM_run___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, lean_object* x_7) {
+_start:
+{
+lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; 
+x_8 = lean_box(0);
+x_9 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__5;
+x_10 = lean_ctor_get(x_9, 0);
+lean_inc(x_10);
+x_11 = lean_ctor_get(x_9, 1);
+lean_inc(x_11);
+x_12 = l_Lean_ShareCommon_objectFactory;
+x_13 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__8;
+x_14 = lean_state_sharecommon(x_12, x_11, x_13);
+x_15 = lean_ctor_get(x_14, 0);
+lean_inc(x_15);
+x_16 = lean_ctor_get(x_14, 1);
+lean_inc(x_16);
+lean_dec(x_14);
+x_17 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__9;
+x_18 = l_Lean_Meta_SimpExtension_getTheorems(x_17, x_5, x_6, x_7);
+x_19 = lean_ctor_get(x_18, 0);
+lean_inc(x_19);
+x_20 = lean_ctor_get(x_18, 1);
+lean_inc(x_20);
+lean_dec(x_18);
+x_21 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__10;
+x_22 = l_Lean_Meta_Simp_SimprocExtension_getSimprocs(x_21, x_5, x_6, x_20);
+x_23 = !lean_is_exclusive(x_22);
+if (x_23 == 0)
+{
+lean_object* x_24; lean_object* x_25; lean_object* x_26; uint8_t x_27; 
+x_24 = lean_ctor_get(x_22, 1);
+lean_ctor_set_tag(x_22, 1);
+lean_ctor_set(x_22, 1, x_8);
+x_25 = lean_array_mk(x_22);
+x_26 = l_Lean_Meta_getSimpCongrTheorems___rarg(x_6, x_24);
+x_27 = !lean_is_exclusive(x_26);
+if (x_27 == 0)
+{
+lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; 
+x_28 = lean_ctor_get(x_26, 0);
+x_29 = lean_ctor_get(x_26, 1);
+lean_ctor_set_tag(x_26, 1);
+lean_ctor_set(x_26, 1, x_8);
+lean_ctor_set(x_26, 0, x_19);
+x_30 = lean_array_mk(x_26);
+x_31 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__11;
+x_32 = l_Lean_Meta_Simp_mkContext(x_31, x_30, x_28, x_3, x_4, x_5, x_6, x_29);
+x_33 = lean_ctor_get(x_32, 0);
+lean_inc(x_33);
+x_34 = lean_ctor_get(x_32, 1);
+lean_inc(x_34);
+lean_dec(x_32);
+x_35 = l_Lean_Meta_Grind_mkMethods___rarg(x_34);
+x_36 = lean_ctor_get(x_35, 0);
+lean_inc(x_36);
+x_37 = lean_ctor_get(x_35, 1);
+lean_inc(x_37);
+lean_dec(x_35);
+x_38 = lean_alloc_ctor(0, 3, 0);
+lean_ctor_set(x_38, 0, x_33);
+lean_ctor_set(x_38, 1, x_25);
+lean_ctor_set(x_38, 2, x_2);
+x_39 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__14;
+x_40 = lean_unsigned_to_nat(1u);
+x_41 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__13;
+x_42 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__20;
+x_43 = lean_alloc_ctor(0, 7, 0);
+lean_ctor_set(x_43, 0, x_39);
+lean_ctor_set(x_43, 1, x_16);
+lean_ctor_set(x_43, 2, x_40);
+lean_ctor_set(x_43, 3, x_41);
+lean_ctor_set(x_43, 4, x_42);
+lean_ctor_set(x_43, 5, x_15);
+lean_ctor_set(x_43, 6, x_10);
+x_44 = lean_st_mk_ref(x_43, x_37);
+x_45 = lean_ctor_get(x_44, 0);
+lean_inc(x_45);
+x_46 = lean_ctor_get(x_44, 1);
+lean_inc(x_46);
+lean_dec(x_44);
+lean_inc(x_45);
+x_47 = lean_apply_8(x_1, x_36, x_38, x_45, x_3, x_4, x_5, x_6, x_46);
+if (lean_obj_tag(x_47) == 0)
+{
+lean_object* x_48; lean_object* x_49; lean_object* x_50; uint8_t x_51; 
+x_48 = lean_ctor_get(x_47, 0);
+lean_inc(x_48);
+x_49 = lean_ctor_get(x_47, 1);
+lean_inc(x_49);
+lean_dec(x_47);
+x_50 = lean_st_ref_get(x_45, x_49);
+lean_dec(x_45);
+x_51 = !lean_is_exclusive(x_50);
+if (x_51 == 0)
+{
+lean_object* x_52; 
+x_52 = lean_ctor_get(x_50, 0);
+lean_dec(x_52);
+lean_ctor_set(x_50, 0, x_48);
+return x_50;
+}
+else
+{
+lean_object* x_53; lean_object* x_54; 
+x_53 = lean_ctor_get(x_50, 1);
+lean_inc(x_53);
+lean_dec(x_50);
+x_54 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_54, 0, x_48);
+lean_ctor_set(x_54, 1, x_53);
+return x_54;
+}
+}
+else
+{
+uint8_t x_55; 
+lean_dec(x_45);
+x_55 = !lean_is_exclusive(x_47);
+if (x_55 == 0)
+{
+return x_47;
+}
+else
+{
+lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+x_56 = lean_ctor_get(x_47, 0);
+x_57 = lean_ctor_get(x_47, 1);
+lean_inc(x_57);
+lean_inc(x_56);
+lean_dec(x_47);
+x_58 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_58, 0, x_56);
+lean_ctor_set(x_58, 1, x_57);
+return x_58;
+}
+}
+}
+else
+{
+lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; 
+x_59 = lean_ctor_get(x_26, 0);
+x_60 = lean_ctor_get(x_26, 1);
+lean_inc(x_60);
+lean_inc(x_59);
+lean_dec(x_26);
+x_61 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_61, 0, x_19);
+lean_ctor_set(x_61, 1, x_8);
+x_62 = lean_array_mk(x_61);
+x_63 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__11;
+x_64 = l_Lean_Meta_Simp_mkContext(x_63, x_62, x_59, x_3, x_4, x_5, x_6, x_60);
+x_65 = lean_ctor_get(x_64, 0);
+lean_inc(x_65);
+x_66 = lean_ctor_get(x_64, 1);
+lean_inc(x_66);
+lean_dec(x_64);
+x_67 = l_Lean_Meta_Grind_mkMethods___rarg(x_66);
+x_68 = lean_ctor_get(x_67, 0);
+lean_inc(x_68);
+x_69 = lean_ctor_get(x_67, 1);
+lean_inc(x_69);
+lean_dec(x_67);
+x_70 = lean_alloc_ctor(0, 3, 0);
+lean_ctor_set(x_70, 0, x_65);
+lean_ctor_set(x_70, 1, x_25);
+lean_ctor_set(x_70, 2, x_2);
+x_71 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__14;
+x_72 = lean_unsigned_to_nat(1u);
+x_73 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__13;
+x_74 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__20;
+x_75 = lean_alloc_ctor(0, 7, 0);
+lean_ctor_set(x_75, 0, x_71);
+lean_ctor_set(x_75, 1, x_16);
+lean_ctor_set(x_75, 2, x_72);
+lean_ctor_set(x_75, 3, x_73);
+lean_ctor_set(x_75, 4, x_74);
+lean_ctor_set(x_75, 5, x_15);
+lean_ctor_set(x_75, 6, x_10);
+x_76 = lean_st_mk_ref(x_75, x_69);
+x_77 = lean_ctor_get(x_76, 0);
+lean_inc(x_77);
+x_78 = lean_ctor_get(x_76, 1);
+lean_inc(x_78);
+lean_dec(x_76);
+lean_inc(x_77);
+x_79 = lean_apply_8(x_1, x_68, x_70, x_77, x_3, x_4, x_5, x_6, x_78);
+if (lean_obj_tag(x_79) == 0)
+{
+lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; 
+x_80 = lean_ctor_get(x_79, 0);
+lean_inc(x_80);
+x_81 = lean_ctor_get(x_79, 1);
+lean_inc(x_81);
+lean_dec(x_79);
+x_82 = lean_st_ref_get(x_77, x_81);
+lean_dec(x_77);
+x_83 = lean_ctor_get(x_82, 1);
+lean_inc(x_83);
+if (lean_is_exclusive(x_82)) {
+ lean_ctor_release(x_82, 0);
+ lean_ctor_release(x_82, 1);
+ x_84 = x_82;
+} else {
+ lean_dec_ref(x_82);
+ x_84 = lean_box(0);
+}
+if (lean_is_scalar(x_84)) {
+ x_85 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_85 = x_84;
+}
+lean_ctor_set(x_85, 0, x_80);
+lean_ctor_set(x_85, 1, x_83);
+return x_85;
+}
+else
+{
+lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; 
+lean_dec(x_77);
+x_86 = lean_ctor_get(x_79, 0);
+lean_inc(x_86);
+x_87 = lean_ctor_get(x_79, 1);
+lean_inc(x_87);
+if (lean_is_exclusive(x_79)) {
+ lean_ctor_release(x_79, 0);
+ lean_ctor_release(x_79, 1);
+ x_88 = x_79;
+} else {
+ lean_dec_ref(x_79);
+ x_88 = lean_box(0);
+}
+if (lean_is_scalar(x_88)) {
+ x_89 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_89 = x_88;
+}
+lean_ctor_set(x_89, 0, x_86);
+lean_ctor_set(x_89, 1, x_87);
+return x_89;
+}
+}
+}
+else
+{
+lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; 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_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; 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_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; lean_object* x_115; lean_object* x_116; 
+x_90 = lean_ctor_get(x_22, 0);
+x_91 = lean_ctor_get(x_22, 1);
+lean_inc(x_91);
+lean_inc(x_90);
+lean_dec(x_22);
+x_92 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_92, 0, x_90);
+lean_ctor_set(x_92, 1, x_8);
+x_93 = lean_array_mk(x_92);
+x_94 = l_Lean_Meta_getSimpCongrTheorems___rarg(x_6, x_91);
+x_95 = lean_ctor_get(x_94, 0);
+lean_inc(x_95);
+x_96 = lean_ctor_get(x_94, 1);
+lean_inc(x_96);
+if (lean_is_exclusive(x_94)) {
+ lean_ctor_release(x_94, 0);
+ lean_ctor_release(x_94, 1);
+ x_97 = x_94;
+} else {
+ lean_dec_ref(x_94);
+ x_97 = lean_box(0);
+}
+if (lean_is_scalar(x_97)) {
+ x_98 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_98 = x_97;
+ lean_ctor_set_tag(x_98, 1);
+}
+lean_ctor_set(x_98, 0, x_19);
+lean_ctor_set(x_98, 1, x_8);
+x_99 = lean_array_mk(x_98);
+x_100 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__11;
+x_101 = l_Lean_Meta_Simp_mkContext(x_100, x_99, x_95, x_3, x_4, x_5, x_6, x_96);
+x_102 = lean_ctor_get(x_101, 0);
+lean_inc(x_102);
+x_103 = lean_ctor_get(x_101, 1);
+lean_inc(x_103);
+lean_dec(x_101);
+x_104 = l_Lean_Meta_Grind_mkMethods___rarg(x_103);
+x_105 = lean_ctor_get(x_104, 0);
+lean_inc(x_105);
+x_106 = lean_ctor_get(x_104, 1);
+lean_inc(x_106);
+lean_dec(x_104);
+x_107 = lean_alloc_ctor(0, 3, 0);
+lean_ctor_set(x_107, 0, x_102);
+lean_ctor_set(x_107, 1, x_93);
+lean_ctor_set(x_107, 2, x_2);
+x_108 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__14;
+x_109 = lean_unsigned_to_nat(1u);
+x_110 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__13;
+x_111 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__20;
+x_112 = lean_alloc_ctor(0, 7, 0);
+lean_ctor_set(x_112, 0, x_108);
+lean_ctor_set(x_112, 1, x_16);
+lean_ctor_set(x_112, 2, x_109);
+lean_ctor_set(x_112, 3, x_110);
+lean_ctor_set(x_112, 4, x_111);
+lean_ctor_set(x_112, 5, x_15);
+lean_ctor_set(x_112, 6, x_10);
+x_113 = lean_st_mk_ref(x_112, x_106);
+x_114 = lean_ctor_get(x_113, 0);
+lean_inc(x_114);
+x_115 = lean_ctor_get(x_113, 1);
+lean_inc(x_115);
+lean_dec(x_113);
+lean_inc(x_114);
+x_116 = lean_apply_8(x_1, x_105, x_107, x_114, x_3, x_4, x_5, x_6, x_115);
+if (lean_obj_tag(x_116) == 0)
+{
+lean_object* x_117; lean_object* x_118; lean_object* x_119; lean_object* x_120; lean_object* x_121; lean_object* x_122; 
+x_117 = lean_ctor_get(x_116, 0);
+lean_inc(x_117);
+x_118 = lean_ctor_get(x_116, 1);
+lean_inc(x_118);
+lean_dec(x_116);
+x_119 = lean_st_ref_get(x_114, x_118);
+lean_dec(x_114);
+x_120 = lean_ctor_get(x_119, 1);
+lean_inc(x_120);
+if (lean_is_exclusive(x_119)) {
+ lean_ctor_release(x_119, 0);
+ lean_ctor_release(x_119, 1);
+ x_121 = x_119;
+} else {
+ lean_dec_ref(x_119);
+ x_121 = lean_box(0);
+}
+if (lean_is_scalar(x_121)) {
+ x_122 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_122 = x_121;
+}
+lean_ctor_set(x_122, 0, x_117);
+lean_ctor_set(x_122, 1, x_120);
+return x_122;
+}
+else
+{
+lean_object* x_123; lean_object* x_124; lean_object* x_125; lean_object* x_126; 
+lean_dec(x_114);
+x_123 = lean_ctor_get(x_116, 0);
+lean_inc(x_123);
+x_124 = lean_ctor_get(x_116, 1);
+lean_inc(x_124);
+if (lean_is_exclusive(x_116)) {
+ lean_ctor_release(x_116, 0);
+ lean_ctor_release(x_116, 1);
+ x_125 = x_116;
+} else {
+ lean_dec_ref(x_116);
+ x_125 = lean_box(0);
+}
+if (lean_is_scalar(x_125)) {
+ x_126 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_126 = x_125;
+}
+lean_ctor_set(x_126, 0, x_123);
+lean_ctor_set(x_126, 1, x_124);
+return x_126;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GrindM_run(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; 
+x_2 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GrindM_run___rarg), 7, 0);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___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, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_11 = lean_apply_8(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_11) == 0)
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; 
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+x_13 = lean_ctor_get(x_11, 1);
+lean_inc(x_13);
+lean_dec(x_11);
+x_14 = lean_apply_9(x_2, x_12, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
+return x_14;
+}
+else
+{
+uint8_t x_15; 
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+x_15 = !lean_is_exclusive(x_11);
+if (x_15 == 0)
+{
+return x_11;
+}
+else
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+x_16 = lean_ctor_get(x_11, 0);
+x_17 = lean_ctor_get(x_11, 1);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_dec(x_11);
+x_18 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_18, 0, x_16);
+lean_ctor_set(x_18, 1, x_17);
+return x_18;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1(lean_object* x_1, lean_object* x_2) {
+_start:
+{
+lean_object* x_3; 
+x_3 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 0);
+return x_3;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___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, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; lean_object* x_12; 
+x_11 = lean_apply_3(x_2, x_3, x_4, x_5);
+x_12 = l___private_Lean_Meta_Basic_0__Lean_Meta_withMVarContextImp___rarg(x_1, x_11, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_12) == 0)
+{
+uint8_t x_13; 
+x_13 = !lean_is_exclusive(x_12);
+if (x_13 == 0)
+{
+return x_12;
+}
+else
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_14 = lean_ctor_get(x_12, 0);
+x_15 = lean_ctor_get(x_12, 1);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_dec(x_12);
+x_16 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_16, 0, x_14);
+lean_ctor_set(x_16, 1, x_15);
+return x_16;
+}
+}
+else
+{
+uint8_t x_17; 
+x_17 = !lean_is_exclusive(x_12);
+if (x_17 == 0)
+{
+return x_12;
+}
+else
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_18 = lean_ctor_get(x_12, 0);
+x_19 = lean_ctor_get(x_12, 1);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_dec(x_12);
+x_20 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_20, 0, x_18);
+lean_ctor_set(x_20, 1, x_19);
+return x_20;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; 
+x_2 = lean_alloc_closure((void*)(l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg), 10, 0);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run___rarg___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) {
+_start:
+{
+lean_object* x_10; uint8_t x_11; 
+x_10 = lean_st_mk_ref(x_1, x_9);
+x_11 = !lean_is_exclusive(x_10);
+if (x_11 == 0)
+{
+return x_10;
+}
+else
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; 
+x_12 = lean_ctor_get(x_10, 0);
+x_13 = lean_ctor_get(x_10, 1);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_dec(x_10);
+x_14 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_14, 0, x_12);
+lean_ctor_set(x_14, 1, x_13);
+return x_14;
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run___rarg___lambda__2(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:
+{
+lean_object* x_11; 
+lean_inc(x_2);
+x_11 = lean_apply_9(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_11) == 0)
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; uint8_t x_15; 
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+x_13 = lean_ctor_get(x_11, 1);
+lean_inc(x_13);
+lean_dec(x_11);
+x_14 = lean_st_ref_get(x_2, x_13);
+lean_dec(x_2);
+x_15 = !lean_is_exclusive(x_14);
+if (x_15 == 0)
+{
+lean_object* x_16; lean_object* x_17; 
+x_16 = lean_ctor_get(x_14, 0);
+x_17 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_17, 0, x_12);
+lean_ctor_set(x_17, 1, x_16);
+lean_ctor_set(x_14, 0, x_17);
+return x_14;
+}
+else
+{
+lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_18 = lean_ctor_get(x_14, 0);
+x_19 = lean_ctor_get(x_14, 1);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_dec(x_14);
+x_20 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_20, 0, x_12);
+lean_ctor_set(x_20, 1, x_18);
+x_21 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_21, 0, x_20);
+lean_ctor_set(x_21, 1, x_19);
+return x_21;
+}
+}
+else
+{
+uint8_t x_22; 
+lean_dec(x_2);
+x_22 = !lean_is_exclusive(x_11);
+if (x_22 == 0)
+{
+return x_11;
+}
+else
+{
+lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+x_23 = lean_ctor_get(x_11, 0);
+x_24 = lean_ctor_get(x_11, 1);
+lean_inc(x_24);
+lean_inc(x_23);
+lean_dec(x_11);
+x_25 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_25, 0, x_23);
+lean_ctor_set(x_25, 1, x_24);
+return x_25;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run___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, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
+x_11 = lean_ctor_get(x_1, 0);
+lean_inc(x_11);
+x_12 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GoalM_run___rarg___lambda__1___boxed), 9, 1);
+lean_closure_set(x_12, 0, x_1);
+x_13 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GoalM_run___rarg___lambda__2), 10, 1);
+lean_closure_set(x_13, 0, x_2);
+x_14 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
+lean_closure_set(x_14, 0, x_12);
+lean_closure_set(x_14, 1, x_13);
+x_15 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(x_11, x_14, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_15;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; 
+x_2 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GoalM_run___rarg), 10, 0);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run___rarg___lambda__1___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_Meta_Grind_GoalM_run___rarg___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_10;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27___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:
+{
+lean_object* x_11; 
+lean_inc(x_2);
+x_11 = lean_apply_9(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_11) == 0)
+{
+lean_object* x_12; lean_object* x_13; uint8_t x_14; 
+x_12 = lean_ctor_get(x_11, 1);
+lean_inc(x_12);
+lean_dec(x_11);
+x_13 = lean_st_ref_get(x_2, x_12);
+x_14 = !lean_is_exclusive(x_13);
+if (x_14 == 0)
+{
+lean_object* x_15; lean_object* x_16; uint8_t x_17; 
+x_15 = lean_ctor_get(x_13, 1);
+x_16 = lean_st_ref_get(x_2, x_15);
+lean_dec(x_2);
+x_17 = !lean_is_exclusive(x_16);
+if (x_17 == 0)
+{
+lean_object* x_18; 
+x_18 = lean_ctor_get(x_16, 0);
+lean_ctor_set(x_13, 1, x_18);
+lean_ctor_set(x_16, 0, x_13);
+return x_16;
+}
+else
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_19 = lean_ctor_get(x_16, 0);
+x_20 = lean_ctor_get(x_16, 1);
+lean_inc(x_20);
+lean_inc(x_19);
+lean_dec(x_16);
+lean_ctor_set(x_13, 1, x_19);
+x_21 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_21, 0, x_13);
+lean_ctor_set(x_21, 1, x_20);
+return x_21;
+}
+}
+else
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_22 = lean_ctor_get(x_13, 0);
+x_23 = lean_ctor_get(x_13, 1);
+lean_inc(x_23);
+lean_inc(x_22);
+lean_dec(x_13);
+x_24 = lean_st_ref_get(x_2, x_23);
+lean_dec(x_2);
+x_25 = lean_ctor_get(x_24, 0);
+lean_inc(x_25);
+x_26 = lean_ctor_get(x_24, 1);
+lean_inc(x_26);
+if (lean_is_exclusive(x_24)) {
+ lean_ctor_release(x_24, 0);
+ lean_ctor_release(x_24, 1);
+ x_27 = x_24;
+} else {
+ lean_dec_ref(x_24);
+ x_27 = lean_box(0);
+}
+x_28 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_28, 0, x_22);
+lean_ctor_set(x_28, 1, x_25);
+if (lean_is_scalar(x_27)) {
+ x_29 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_29 = x_27;
+}
+lean_ctor_set(x_29, 0, x_28);
+lean_ctor_set(x_29, 1, x_26);
+return x_29;
+}
+}
+else
+{
+uint8_t x_30; 
+lean_dec(x_2);
+x_30 = !lean_is_exclusive(x_11);
+if (x_30 == 0)
+{
+return x_11;
+}
+else
+{
+lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_31 = lean_ctor_get(x_11, 0);
+x_32 = lean_ctor_get(x_11, 1);
+lean_inc(x_32);
+lean_inc(x_31);
+lean_dec(x_11);
+x_33 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_33, 0, x_31);
+lean_ctor_set(x_33, 1, x_32);
+return x_33;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27___lambda__2(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:
+{
+uint8_t x_10; 
+x_10 = !lean_is_exclusive(x_1);
+if (x_10 == 0)
+{
+lean_object* x_11; 
+x_11 = lean_ctor_get(x_1, 1);
+lean_dec(x_11);
+lean_ctor_set(x_1, 1, x_9);
+return x_1;
+}
+else
+{
+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_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_13, 0, x_12);
+lean_ctor_set(x_13, 1, x_9);
+return x_13;
+}
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_GoalM_run_x27___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GoalM_run_x27___lambda__2___boxed), 9, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27(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:
+{
+lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; 
+x_11 = lean_ctor_get(x_1, 0);
+lean_inc(x_11);
+x_12 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GoalM_run___rarg___lambda__1___boxed), 9, 1);
+lean_closure_set(x_12, 0, x_1);
+x_13 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GoalM_run_x27___lambda__1), 10, 1);
+lean_closure_set(x_13, 0, x_2);
+x_14 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
+lean_closure_set(x_14, 0, x_12);
+lean_closure_set(x_14, 1, x_13);
+x_15 = l_Lean_Meta_Grind_GoalM_run_x27___closed__1;
+x_16 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
+lean_closure_set(x_16, 0, x_14);
+lean_closure_set(x_16, 1, x_15);
+x_17 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(x_11, x_16, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_17;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27___lambda__2___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_Meta_Grind_GoalM_run_x27___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_10;
+}
+}
+static lean_object* _init_l_Lean_PersistentHashMap_empty___at_Lean_Meta_Grind_mkGoal___spec__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__13;
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkGoal___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, lean_object* x_11) {
+_start:
+{
+uint8_t x_12; uint8_t x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; uint8_t x_20; 
+x_12 = 1;
+x_13 = 0;
+x_14 = lean_unsigned_to_nat(0u);
+x_15 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_12, x_13, x_14, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+x_16 = lean_ctor_get(x_15, 1);
+lean_inc(x_16);
+lean_dec(x_15);
+x_17 = l_Lean_Meta_Grind_mkENodeCore(x_2, x_12, x_13, x_14, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_16);
+x_18 = lean_ctor_get(x_17, 1);
+lean_inc(x_18);
+lean_dec(x_17);
+x_19 = lean_st_ref_get(x_3, x_18);
+x_20 = !lean_is_exclusive(x_19);
+if (x_20 == 0)
+{
+lean_object* x_21; lean_object* x_22; uint8_t x_23; 
+x_21 = lean_ctor_get(x_19, 1);
+x_22 = lean_st_ref_get(x_3, x_21);
+x_23 = !lean_is_exclusive(x_22);
+if (x_23 == 0)
+{
+lean_object* x_24; 
+x_24 = lean_ctor_get(x_22, 0);
+lean_ctor_set(x_19, 1, x_24);
+lean_ctor_set(x_22, 0, x_19);
+return x_22;
+}
+else
+{
+lean_object* x_25; lean_object* x_26; lean_object* x_27; 
+x_25 = lean_ctor_get(x_22, 0);
+x_26 = lean_ctor_get(x_22, 1);
+lean_inc(x_26);
+lean_inc(x_25);
+lean_dec(x_22);
+lean_ctor_set(x_19, 1, x_25);
+x_27 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_27, 0, x_19);
+lean_ctor_set(x_27, 1, x_26);
+return x_27;
+}
+}
+else
+{
+lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_28 = lean_ctor_get(x_19, 0);
+x_29 = lean_ctor_get(x_19, 1);
+lean_inc(x_29);
+lean_inc(x_28);
+lean_dec(x_19);
+x_30 = lean_st_ref_get(x_3, x_29);
+x_31 = lean_ctor_get(x_30, 0);
+lean_inc(x_31);
+x_32 = lean_ctor_get(x_30, 1);
+lean_inc(x_32);
+if (lean_is_exclusive(x_30)) {
+ lean_ctor_release(x_30, 0);
+ lean_ctor_release(x_30, 1);
+ x_33 = x_30;
+} else {
+ lean_dec_ref(x_30);
+ x_33 = lean_box(0);
+}
+x_34 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_34, 0, x_28);
+lean_ctor_set(x_34, 1, x_31);
+if (lean_is_scalar(x_33)) {
+ x_35 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_35 = x_33;
+}
+lean_ctor_set(x_35, 0, x_34);
+lean_ctor_set(x_35, 1, x_32);
+return x_35;
+}
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_mkGoal___closed__1() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; 
+x_1 = lean_box(0);
+x_2 = lean_array_mk(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkGoal(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; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; 
+x_10 = l_Lean_Meta_Grind_getTrueExpr___rarg(x_4, x_5, x_6, x_7, x_8, x_9);
+x_11 = lean_ctor_get(x_10, 0);
+lean_inc(x_11);
+x_12 = lean_ctor_get(x_10, 1);
+lean_inc(x_12);
+lean_dec(x_10);
+x_13 = l_Lean_Meta_Grind_getFalseExpr___rarg(x_4, x_5, x_6, x_7, x_8, x_12);
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_ctor_get(x_13, 1);
+lean_inc(x_15);
+lean_dec(x_13);
+x_16 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__13;
+x_17 = l_Lean_PersistentHashMap_empty___at_Lean_Meta_Grind_mkGoal___spec__1;
+x_18 = l_Lean_Meta_Grind_mkGoal___closed__1;
+x_19 = 0;
+x_20 = lean_unsigned_to_nat(0u);
+lean_inc(x_1);
+x_21 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_21, 0, x_1);
+lean_ctor_set(x_21, 1, x_16);
+lean_ctor_set(x_21, 2, x_16);
+lean_ctor_set(x_21, 3, x_17);
+lean_ctor_set(x_21, 4, x_16);
+lean_ctor_set(x_21, 5, x_18);
+lean_ctor_set(x_21, 6, x_20);
+lean_ctor_set(x_21, 7, x_20);
+lean_ctor_set_uint8(x_21, sizeof(void*)*8, x_19);
+x_22 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GoalM_run___rarg___lambda__1___boxed), 9, 1);
+lean_closure_set(x_22, 0, x_21);
+x_23 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_mkGoal___lambda__1___boxed), 11, 2);
+lean_closure_set(x_23, 0, x_14);
+lean_closure_set(x_23, 1, x_11);
+x_24 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
+lean_closure_set(x_24, 0, x_22);
+lean_closure_set(x_24, 1, x_23);
+x_25 = l_Lean_Meta_Grind_GoalM_run_x27___closed__1;
+x_26 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
+lean_closure_set(x_26, 0, x_24);
+lean_closure_set(x_26, 1, x_25);
+x_27 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(x_1, x_26, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_15);
+return x_27;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkGoal___lambda__1___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, lean_object* x_10, lean_object* x_11) {
+_start:
+{
+lean_object* x_12; 
+x_12 = l_Lean_Meta_Grind_mkGoal___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_12;
+}
+}
+lean_object* initialize_Init_Grind_Lemmas(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind_Types(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind_PropagatorAttr(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_Meta_Tactic_Grind_Proj(uint8_t builtin, lean_object*);
+static bool _G_initialized = false;
+LEAN_EXPORT lean_object* initialize_Lean_Meta_Tactic_Grind_Run(uint8_t builtin, lean_object* w) {
+lean_object * res;
+if (_G_initialized) return lean_io_result_mk_ok(lean_box(0));
+_G_initialized = true;
+res = initialize_Init_Grind_Lemmas(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+res = initialize_Lean_Meta_Tactic_Grind_Types(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+res = initialize_Lean_Meta_Tactic_Grind_PropagatorAttr(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+res = initialize_Lean_Meta_Tactic_Grind_Proj(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
+l_Lean_Meta_Grind_mkMethods___rarg___closed__1 = _init_l_Lean_Meta_Grind_mkMethods___rarg___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_mkMethods___rarg___closed__1);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__1 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__1);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__2 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__2);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__3 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__3);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__4 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__4);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__5 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__5);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__6 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__6();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__6);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__7 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__7();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__7);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__8 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__8();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__8);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__9 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__9();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__9);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__10 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__10();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__10);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__11 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__11();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__11);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__12 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__12();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__12);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__13 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__13();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__13);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__14 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__14();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__14);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__15 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__15();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__15);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__16 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__16();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__16);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__17 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__17();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__17);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__18 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__18();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__18);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__19 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__19();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__19);
+l_Lean_Meta_Grind_GrindM_run___rarg___closed__20 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__20();
+lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__20);
+l_Lean_Meta_Grind_GoalM_run_x27___closed__1 = _init_l_Lean_Meta_Grind_GoalM_run_x27___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_GoalM_run_x27___closed__1);
+l_Lean_PersistentHashMap_empty___at_Lean_Meta_Grind_mkGoal___spec__1 = _init_l_Lean_PersistentHashMap_empty___at_Lean_Meta_Grind_mkGoal___spec__1();
+lean_mark_persistent(l_Lean_PersistentHashMap_empty___at_Lean_Meta_Grind_mkGoal___spec__1);
+l_Lean_Meta_Grind_mkGoal___closed__1 = _init_l_Lean_Meta_Grind_mkGoal___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_mkGoal___closed__1);
+return lean_io_result_mk_ok(lean_box(0));
+}
+#ifdef __cplusplus
+}
+#endif
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Grind/Types.c b/stage0/stdlib/Lean/Meta/Tactic/Grind/Types.c
index a8adc07c8104..b303c03e7ddf 100644
--- a/stage0/stdlib/Lean/Meta/Tactic/Grind/Types.c
+++ b/stage0/stdlib/Lean/Meta/Tactic/Grind/Types.c
@@ -1,6 +1,6 @@
 // Lean compiler output
 // Module: Lean.Meta.Tactic.Grind.Types
-// Imports: Lean.Util.ShareCommon Lean.Meta.Basic Lean.Meta.CongrTheorems Lean.Meta.AbstractNestedProofs Lean.Meta.Tactic.Simp.Types Lean.Meta.Tactic.Util Lean.Meta.Tactic.Grind.Canon Lean.Meta.Tactic.Grind.Attr
+// Imports: Lean.Util.ShareCommon Lean.HeadIndex Lean.Meta.Basic Lean.Meta.CongrTheorems Lean.Meta.AbstractNestedProofs Lean.Meta.Tactic.Simp.Types Lean.Meta.Tactic.Util Lean.Meta.Tactic.Grind.Canon Lean.Meta.Tactic.Grind.Attr
 #include <lean/lean.h>
 #if defined(__clang__)
 #pragma clang diagnostic ignored "-Wunused-parameter"
@@ -13,499 +13,365 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethods___rarg(lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__8;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__19;
 lean_object* l_Lean_Expr_const___override(lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_Grind_instInhabitedMethods___closed__2;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run___rarg___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* lean_format_pretty(lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__53;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instInhabitedMethods;
-static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__14;
 static lean_object* l_Lean_Meta_Grind_instInhabitedENode___closed__1;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__39;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc_go___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_EXPORT lean_object* l_Lean_Meta_Grind_pushEq(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_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_setENode___spec__1(lean_object*, size_t, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__19;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instReprENode;
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachENode___spec__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_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isEqv___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___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__13;
 LEAN_EXPORT lean_object* l_Lean_throwError___at_Lean_Meta_Grind_getENode___spec__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_mk_empty_array_with_capacity(lean_object*);
-lean_object* l_Lean_mkAppN(lean_object*, lean_object*);
 size_t lean_usize_shift_right(size_t, size_t);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_pushEqHEq___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*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__38;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__41;
 lean_object* l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_abstractNestedProofs(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__3;
-LEAN_EXPORT lean_object* l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg(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_Grind_getTrueExpr___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_registerParent___spec__6___boxed(lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__15;
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__8;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__22;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__45;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__4;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_canon___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__54;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_setENode_unsafe__2___boxed(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getTarget_x3f___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_Meta_Grind_abstractNestedProofs___closed__2;
-LEAN_EXPORT lean_object* l___private_Lean_ResolveName_0__Lean_resolveGlobalConstCore___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__1(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__9___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__11;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__15;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__35;
 uint8_t lean_usize_dec_le(size_t, size_t);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethodsRef(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_erase___at_Lean_Meta_Grind_getParentsAndReset___spec__1(lean_object*, size_t);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__47;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_filterENodes___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_object*);
 uint64_t lean_uint64_of_nat(lean_object*);
-LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__13___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint64_t lean_uint64_mix_hash(uint64_t, uint64_t);
-lean_object* l_Lean_Syntax_formatStxAux(lean_object*, uint8_t, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run(lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__1;
 lean_object* l_Lean_Meta_isExprDefEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1;
 LEAN_EXPORT lean_object* l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___lambda__1___boxed(lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__2;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*);
 size_t lean_uint64_to_usize(uint64_t);
+uint64_t lean_uint64_lor(uint64_t, uint64_t);
 LEAN_EXPORT size_t l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_toENodeKey_unsafe__1(lean_object*);
-LEAN_EXPORT lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t l_Lean_Expr_isAppOfArity(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isTrueExpr___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_Grind_getENode___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkENode(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_Grind_getMainDeclName___boxed(lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__51;
 uint8_t l_Lean_Expr_isApp(lean_object*);
-lean_object* l_Lean_Name_toString(lean_object*, uint8_t, lean_object*);
-static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__5;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118_(lean_object*);
 LEAN_EXPORT uint8_t l_Lean_Meta_Grind_isCongruent(lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__3(lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t l_Lean_RBNode_isRed___rarg(lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__12;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isInterpreted(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_array_push(lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__3;
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__18;
 size_t lean_usize_mul(size_t, size_t);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_containsAtAux___at_Lean_Meta_Grind_alreadyInternalized___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__27;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__53;
 lean_object* lean_mk_array(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkHCongrWithArity___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_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_registerBuiltinUpwardPropagator(lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__12;
 uint8_t lean_usize_dec_eq(size_t, size_t);
-LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__5___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_pushEq___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*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__35;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instInhabitedBuiltinPropagators;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Meta_Grind_mkHCongrWithArity___spec__4(lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* l_Lean_replaceRef(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__2;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isSameExpr_unsafe__1___boxed(lean_object*, lean_object*);
 LEAN_EXPORT uint64_t l_Lean_Meta_Grind_congrHash(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__11;
 lean_object* l_Lean_Expr_bvar___override(lean_object*);
 lean_object* lean_array_fget(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getFalseExpr___boxed(lean_object*, lean_object*);
 lean_object* lean_array_fset(lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__11;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__17;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_grind_debug_proofs;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_registerParent___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_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_pushEqCore(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__11;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_registerBuiltinDownwardPropagator(lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__12(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__7;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_forEachENode(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__31;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateDown(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_PersistentHashMap_findAux___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_hashRoot___spec__2(lean_object*, size_t, size_t);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__2___boxed(lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__19;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__8;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_forEachEqc(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__37;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__30;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_containsAux___at_Lean_Meta_Grind_alreadyInternalized___spec__2___boxed(lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__5;
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___closed__1;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__38;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqcs(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT uint64_t l_Lean_Meta_Grind_instHashableCongrTheoremCacheKey(lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4343_(lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__10;
 LEAN_EXPORT size_t l_Lean_Meta_Grind_alreadyInternalized_unsafe__1(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___lambda__1___boxed(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_setENode(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_PersistentHashMap_insertAux_traverse___at_Lean_Meta_Grind_registerParent___spec__8___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Name_mkStr5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_MethodsRef_toMethods___boxed(lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__17;
 lean_object* l_Nat_nextPowerOfTwo_go(lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethods___boxed(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethods___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_stringToMessageData(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMainDeclName___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__1;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Meta_Grind_mkHCongrWithArity___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkHCongrWithArity___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_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getFalseExpr(lean_object*, lean_object*);
 LEAN_EXPORT size_t l_Lean_Meta_Grind_getENode_x3f_unsafe__1(lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__51;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instInhabitedMethods___lambda__1(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_RBNode_forIn_visit___at_Lean_Meta_Grind_copyParentsTo___spec__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_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkENodeCore___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*);
+static uint64_t l_Lean_Meta_Grind_hasSameType___closed__1;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instBEqCongrKey___boxed(lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__11(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instBEqCongrTheoremCacheKey___boxed(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946_(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Methods_toMethodsRef___boxed(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_eraseAux___at_Lean_Meta_Grind_getParentsAndReset___spec__2___boxed(lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__8;
 LEAN_EXPORT uint8_t l_Lean_PersistentHashMap_contains___at_Lean_Meta_Grind_alreadyInternalized___spec__1(lean_object*, size_t);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__7;
-lean_object* l_Lean_Meta_getSimpCongrTheorems___rarg(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__50;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Meta_Grind_setENode___spec__4(lean_object*, lean_object*, size_t, lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__5;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc___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___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__46;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__3;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_grind_debug;
+LEAN_EXPORT lean_object* l_Lean_MVarId_assign___at_Lean_Meta_Grind_closeGoal___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*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_MethodsRef_toMethods(lean_object*);
 lean_object* l_Lean_Expr_appArg_x21(lean_object*);
 lean_object* l_Lean_Meta_AbstractNestedProofs_visit(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_Grind_propagateUp(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_PersistentHashMap_findAtAux___at_Lean_Meta_Grind_registerParent___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, size_t);
-LEAN_EXPORT lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__2;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isEqTrue___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___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__12;
-LEAN_EXPORT lean_object* l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__41;
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__1;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getRoot(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* l_Lean_initializing(lean_object*);
-lean_object* l_List_filterMapTR_go___at_Lean_preprocessSyntaxAndResolve___spec__1(lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__13;
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336_(lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__8;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProof___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t l_Lean_Expr_isLambda(lean_object*);
-static lean_object* l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__3;
 LEAN_EXPORT lean_object* l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 size_t lean_ptr_addr(lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__18;
 lean_object* l_Lean_Name_mkStr3(lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__1;
-LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__5___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_MVarId_isAssigned___at_Lean_Meta_Grind_closeGoal___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__16;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_pushEqCore___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_Lean_Meta_Grind_GoalM_run___rarg(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_Grind_getFalseExpr___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Methods_toMethodsRef_unsafe__1___boxed(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getTarget_x3f(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_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__22;
-size_t lean_usize_of_nat(lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__14;
-LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__9(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__4;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__33;
 lean_object* l_Lean_PersistentHashMap_isUnaryNode___rarg(lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GrindM_run(lean_object*);
-static lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__2;
-lean_object* l_List_mapTR_loop___at_Lean_filterFieldList___spec__2(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__1;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_setENode_unsafe__1___boxed(lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__50;
 static lean_object* l_Lean_Meta_Grind_getENode___closed__4;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__42;
-static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__10;
 LEAN_EXPORT lean_object* l_Lean_RBNode_insert___at_Lean_Meta_Grind_registerParent___spec__4(lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_closeGoal___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_Grind_getRootENode___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_st_ref_take(lean_object*, lean_object*);
 lean_object* l_Lean_Expr_getRevArg_x21(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isEqFalse___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_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2(lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getParentsAndReset___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___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__4;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__2;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAtAux___at_Lean_Meta_Grind_mkHCongrWithArity___spec__7(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__8;
 LEAN_EXPORT lean_object* l_Lean_throwError___at_Lean_Meta_Grind_getENode___spec__1(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_Grind_filterENodes___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_object*);
-lean_object* l_Lean_declareBuiltin(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT size_t l_Lean_Meta_Grind_getENode_unsafe__1(lean_object*);
 LEAN_EXPORT uint8_t l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_hasSameRoot(lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3;
-LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__13(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__4;
 uint64_t lean_uint64_shift_right(uint64_t, uint64_t);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getGeneration___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_RBNode_setBlack___rarg(lean_object*);
-lean_object* l_Lean_Meta_Simp_SimprocExtension_getSimprocs(lean_object*, lean_object*, lean_object*, lean_object*);
 uint64_t lean_usize_to_uint64(size_t);
 lean_object* lean_nat_to_int(lean_object*);
-static lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__5;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__15;
-lean_object* lean_nat_div(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_registerParent___spec__7___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__11___closed__1;
+lean_object* l_Lean_MVarId_getType(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static size_t l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_mkHCongrWithArity___spec__2___closed__1;
 static lean_object* l_Lean_Meta_Grind_abstractNestedProofs___closed__1;
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachEqc___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, size_t, size_t, 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_Grind_pushEqHEq(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___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getENodes___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__32;
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__9;
-LEAN_EXPORT lean_object* l_Lean_resolveGlobalName___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__10;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_closeGoal(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_MVarId_admit(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___closed__1;
+LEAN_EXPORT lean_object* l_Lean_MVarId_assign___at_Lean_Meta_Grind_closeGoal___spec__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_Lean_Meta_Grind_getENode_x3f___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_Grind_mkHCongrWithArity___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_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__2;
 lean_object* l_Lean_Meta_mkHCongrWithArityForConst_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_setENode___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_mkHCongrWithArity___spec__2(lean_object*, size_t, size_t, lean_object*, lean_object*);
-lean_object* l___private_Lean_CoreM_0__Lean_Core_mkFreshNameImp(lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_getMethods___spec__1___boxed(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_resolveGlobalConstNoOverload___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* l_Lean_Syntax_getKind(lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__9;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Meta_Grind_registerParent___spec__8(size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* l_Lean_MessageData_ofFormat(lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__10;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__10;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethods___rarg___lambda__2(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___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__1;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__9;
-LEAN_EXPORT uint8_t l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__2(lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78_(lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__30;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__6;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getENode___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___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__19;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getTrueExpr___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__25;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkENode___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_st_ref_get(lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__36;
 lean_object* l_Lean_PersistentHashMap_foldlMAux___at_Lean_MetavarContext_getExprAssignmentDomain___spec__2___rarg(lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethods___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*);
-static lean_object* l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__1;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__24;
-static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__13;
-static lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__4;
-uint8_t l_List_isEmpty___rarg(lean_object*);
+static lean_object* l_Lean_Meta_Grind_congrPlaceholderProof___closed__1;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__5;
 lean_object* lean_st_mk_ref(lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__48;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isCongruent___boxed(lean_object*, lean_object*, lean_object*);
-lean_object* l___private_Lean_Meta_Basic_0__Lean_Meta_withMVarContextImp___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_MVarId_isAssigned___at_Lean_Meta_Grind_closeGoal___spec__1___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_Grind_getMainDeclName(lean_object*);
-lean_object* l_Lean_Name_num___override(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__36;
 static lean_object* l_Lean_Meta_Grind_canon___closed__3;
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___closed__2;
-lean_object* l_Lean_Name_append(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_RBNode_ins___at_Lean_Meta_Grind_registerParent___spec__5(lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__47;
 LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Meta_Grind_getENodes___spec__3(size_t, size_t, lean_object*);
 LEAN_EXPORT uint64_t l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_hashRoot(lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__34;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_find_x3f___at_Lean_Meta_Grind_mkHCongrWithArity___spec__5(lean_object*, lean_object*);
 LEAN_EXPORT size_t l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_toENodeKey(lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_MethodsRef_toMethods_unsafe__1(lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__31;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isSameExpr___boxed(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__13;
 static size_t l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_mkHCongrWithArity___spec__2___closed__2;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc(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_Grind_getMethodsRef___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_congrHash___boxed(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_pushEqTrue(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_ShareCommon_mkStateImpl(lean_object*);
 LEAN_EXPORT uint8_t l_Lean_Meta_Grind_instBEqCongrTheoremCacheKey(lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__20;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__29;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_toENodeKey___boxed(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkHCongrWithArity(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_Grind_getEqcs___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_mkHCongrWithArity___spec__2___closed__3;
 LEAN_EXPORT lean_object* l_Lean_RBNode_forIn_visit___at_Lean_Meta_Grind_copyParentsTo___spec__1___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___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__52;
 static lean_object* l_Lean_Meta_Grind_canon___closed__1;
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__14;
 static lean_object* l_Lean_Meta_Grind_congrHash___closed__1;
-uint8_t lean_name_eq(lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__2;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__46;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__39;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__43;
 lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GrindM_run___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getGeneration(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_mkHCongrWithArity(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT uint8_t l_Lean_Meta_Grind_isSameExpr_unsafe__1(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkGoal___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_object* l_Lean_Meta_Simp_mkContext(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__5;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_alreadyInternalized(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_Grind_builtinPropagatorsRef;
-static lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__4;
 LEAN_EXPORT uint8_t l_Lean_PersistentHashMap_containsAux___at_Lean_Meta_Grind_alreadyInternalized___spec__2(lean_object*, size_t, size_t);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isCongruent_go___boxed(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getNext___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_Array_mapMUnsafe_map___at_Lean_Meta_Grind_getENodes___spec__3___boxed(lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethods(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethods(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMainDeclName___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* l_Lean_Syntax_getArg(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_filterENodes(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_Grind_getParents(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* l___private_Init_Util_0__mkPanicMessageWithDecl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getRoot___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_PersistentHashMap_findAux___at_Lean_Meta_Grind_registerParent___spec__2(lean_object*, size_t, size_t);
-static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__7;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__6;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isInterpreted___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__12;
 static lean_object* l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__2;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70_(lean_object*);
-LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__12___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__6;
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__5;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlM___at_Lean_Meta_Grind_getENodes___spec__2(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_find_x3f___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_hashRoot___spec__1___boxed(lean_object*, lean_object*);
 static lean_object* l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__1;
 static lean_object* l_Lean_Meta_Grind_instInhabitedGoal___closed__1;
 lean_object* l_Lean_Expr_appFn_x21(lean_object*);
-LEAN_EXPORT lean_object* l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1(lean_object*, lean_object*);
-extern lean_object* l_Lean_Meta_instMonadMetaM;
 lean_object* l_Array_eraseIdx___rarg(lean_object*, lean_object*, lean_object*);
-extern lean_object* l_Std_Format_defWidth;
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__2;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkGoal___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_Lean_Meta_Grind_hasSameType(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instHashableCongrKey___boxed(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_ResolveName_0__Lean_resolveGlobalConstCore___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Grind_Canon_canonImpl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Meta_Grind_registerParent___spec__9(lean_object*, lean_object*, size_t, lean_object*);
-LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_foldlM___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__4(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_markAsInconsistent___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint8_t l_Lean_PersistentHashMap_contains___at_Lean_MVarId_isAssigned___spec__1(lean_object*, lean_object*);
+lean_object* l_Lean_Meta_mkFalseElim(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_Grind_instInhabitedENode___closed__2;
 lean_object* lean_usize_to_nat(size_t);
 LEAN_EXPORT uint8_t l_Lean_Meta_Grind_isCongruent_go(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getParents___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_Grind_alreadyInternalized___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_MessageData_ofConstName(lean_object*, uint8_t);
 static lean_object* l_Lean_Meta_Grind_getENode___closed__3;
-LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__8___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-extern lean_object* l_Lean_Meta_Grind_grindNormSimprocExt;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_MethodsRef_toMethods_unsafe__1___boxed(lean_object*);
 LEAN_EXPORT uint64_t l_Lean_Meta_Grind_instHashableCongrKey(lean_object*, lean_object*);
-static lean_object* l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getENodes(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_Grind_copyParentsTo(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_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____boxed(lean_object*, lean_object*);
 lean_object* l_Lean_Option_register___at_Lean_Elab_initFn____x40_Lean_Elab_AutoBound___hyg_6____spec__1(lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__16;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__18;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__40;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Meta_Grind_registerParent___spec__9___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__6;
 static lean_object* l_Lean_Meta_Grind_instReprENode___closed__1;
-lean_object* l_Lean_throwError___at_Lean_Meta_mkSimpCongrTheorem___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_shareCommon___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* l_Lean_Meta_SimpExtension_getTheorems(lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run___rarg___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_find_x3f___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_hashRoot___spec__1(lean_object*, size_t);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__54;
-LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__5___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__16;
-static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__3;
-static lean_object* l_Lean_Meta_Grind_GoalM_run_x27___closed__1;
+lean_object* l_Lean_Name_mkStr6(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__3;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__21;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Goal_admit(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__32;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getNext(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT size_t l_Lean_Meta_Grind_setENode_unsafe__1(lean_object*);
 static lean_object* l_Lean_Meta_Grind_abstractNestedProofs___closed__3;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getENode_unsafe__1___boxed(lean_object*);
-LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1___boxed(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAtAux___at_Lean_Meta_Grind_registerParent___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__6;
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__4;
+lean_object* lean_grind_mk_eq_proof(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t l_Lean_Expr_isFalse(lean_object*);
 LEAN_EXPORT uint64_t l_Lean_Meta_Grind_congrHash_go(lean_object*, lean_object*, uint64_t);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instInhabitedMethods___lambda__1___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___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__26;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_setENode_unsafe__2(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4(uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_mkHCongrWithArity___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__3;
-static lean_object* l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__1;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__18;
+static lean_object* l_Lean_Meta_Grind_congrPlaceholderProof___closed__3;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_contains___at_Lean_Meta_Grind_alreadyInternalized___spec__1___boxed(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_registerParent___spec__6(lean_object*, size_t, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__2;
 lean_object* lean_string_length(lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__45;
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__3;
-LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_abstractNestedProofs___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_Meta_Grind_setENode_unsafe__2___rarg(lean_object*);
 uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqFalseProof(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_Grind_shareCommon(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__4;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Meta_Grind_mkHCongrWithArity___spec__3(size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_MethodsRef_toMethods___boxed(lean_object*);
 uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__29;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Meta_Grind_setENode___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT uint8_t l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__23;
+lean_object* l_Lean_PersistentHashMap_insert___at_Lean_MVarId_assign___spec__1(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isInconsistent___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Name_mkStr2(lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_Grind_instInhabitedMethods___closed__1;
 lean_object* l_Lean_Meta_isConstructorAppCore_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc_go(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_Lean_Meta_Grind_registerParent(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_PersistentHashMap_empty___at_Lean_Meta_Grind_mkGoal___spec__1;
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__9;
 LEAN_EXPORT uint8_t l_Lean_Meta_Grind_isSameExpr(lean_object*, lean_object*);
+static lean_object* l_Lean_Meta_Grind_congrPlaceholderProof___closed__2;
 lean_object* l_Lean_indentExpr(lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__21;
 lean_object* l_Lean_PersistentHashMap_mkEmptyEntries(lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__44;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instInhabitedENode;
-LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__8(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__21;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__44;
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_markAsInconsistent(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_find_x3f___at_Lean_Meta_Grind_registerParent___spec__1___boxed(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkHCongrWithArity___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_resolveGlobalName___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT uint8_t l_Lean_Meta_Grind_instBEqCongrKey(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___boxed(lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__20;
 lean_object* lean_array_set(lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_MethodsRef_toMethods(lean_object*);
-uint64_t l_Lean_Name_hash___override(lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__3;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1(lean_object*);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-extern lean_object* l_Lean_Meta_Grind_grindNormExt;
-uint64_t lean_uint64_xor(uint64_t, uint64_t);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__14;
-lean_object* lean_panic_fn(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_eraseAux___at_Lean_Meta_Grind_getParentsAndReset___spec__2(lean_object*, size_t, size_t);
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isEqv(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_Grind_pushEqFalse___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___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__43;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__48;
 lean_object* l___private_Lean_Expr_0__Lean_reprExpr____x40_Lean_Expr___hyg_3036_(lean_object*, lean_object*);
-lean_object* l_Lean_ResolveName_resolveGlobalName(lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_nat_sub(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAux___at_Lean_Meta_Grind_registerParent___spec__2___boxed(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Methods_toMethodsRef(lean_object*);
-lean_object* l_Lean_Expr_getAppFn(lean_object*);
-lean_object* lean_nat_mul(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqTrueProof(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_indexOfAux___at_Lean_Meta_Grind_getParentsAndReset___spec__3(lean_object*, size_t, lean_object*);
 LEAN_EXPORT lean_object* l_Array_indexOfAux___at_Lean_Meta_Grind_getParentsAndReset___spec__3___boxed(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isRoot___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_Grind_setENode___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_Grind_copyParentsTo___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+uint64_t lean_uint64_shift_left(uint64_t, uint64_t);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Methods_toMethodsRef_unsafe__1(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_pushHEq(lean_object*, 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___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__11;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__20;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__4;
 lean_object* l___private_Init_Data_Array_QSort_0__Array_qpartition___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getENode_x3f(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_Grind_alreadyInternalized_unsafe__1___boxed(lean_object*);
 lean_object* l_Lean_PersistentHashMap_mkCollisionNode___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__24;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getTrueExpr___boxed(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getENode(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_Grind_getTrueExpr(lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__21;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkENodeCore(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_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAtAux___at_Lean_Meta_Grind_mkHCongrWithArity___spec__7___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static uint64_t l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__6;
 lean_object* l_Lean_PersistentHashMap_mkEmptyEntriesArray(lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__6;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__12;
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachENode___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, size_t, size_t, 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_Grind_isTrueExpr(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_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(lean_object*, uint8_t, lean_object*, lean_object*);
-lean_object* l_Lean_registerBuiltinAttribute(lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__1;
-lean_object* l_List_toString___at_Lean_ensureNoOverload___spec__2(lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__23;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAux___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_hashRoot___spec__2___boxed(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAtAux___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_hashRoot___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_hashRoot___boxed(lean_object*, lean_object*);
-lean_object* l___private_Lean_ToExpr_0__Lean_Name_toExprAux(lean_object*);
 LEAN_EXPORT uint8_t l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___lambda__1(lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__49;
 size_t lean_usize_sub(size_t, size_t);
 lean_object* lean_array_mk(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getParentsAndReset(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_Grind_GrindM_run___rarg___closed__4;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isRoot(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t l_Lean_Expr_isTrue(lean_object*);
 uint8_t l_Lean_Expr_quickComp(lean_object*, lean_object*);
@@ -515,110 +381,84 @@ LEAN_EXPORT lean_object* l_Lean_Meta_Grind_pushEqFalse(lean_object*, lean_object
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_congrHash_go___boxed(lean_object*, lean_object*, lean_object*);
 size_t lean_usize_add(size_t, size_t);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_erase___at_Lean_Meta_Grind_getParentsAndReset___spec__1___boxed(lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__13;
-lean_object* l_List_mapTR_loop___at_Lean_ensureNonAmbiguous___spec__2(lean_object*, lean_object*);
-extern lean_object* l_Lean_Meta_Simp_defaultMaxSteps;
-static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__8;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instHashableCongrTheoremCacheKey___boxed(lean_object*);
 static lean_object* l_Lean_Meta_Grind_getENode___closed__1;
-extern lean_object* l_Lean_instInhabitedName;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__9;
 lean_object* lean_array_uget(lean_object*, size_t);
 size_t lean_array_size(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_pushHEq___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* l_instInhabitedOfMonad___rarg(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachEqc___spec__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_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_st_ref_set(lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__17;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__33;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlM___at_Lean_Meta_Grind_getENodes___spec__2___boxed(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAux___at_Lean_Meta_Grind_mkHCongrWithArity___spec__6(lean_object*, size_t, lean_object*);
-LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_getMethods___spec__1(lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__22;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkENode___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_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_hasSameRoot___boxed(lean_object*, lean_object*, lean_object*);
 size_t lean_usize_shift_left(size_t, size_t);
-lean_object* l_Lean_Name_mkStr4(lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__4;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_MethodsRef_toMethods_unsafe__1___boxed(lean_object*);
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__1;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___lambda__1(lean_object*, size_t, lean_object*);
-static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__9;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__26;
 static lean_object* l_Lean_Meta_Grind_congrHash___closed__2;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__42;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__27;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkHCongrWithArity___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*);
-static lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__1;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isEqTrue(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* lean_string_append(lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__3;
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__7;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__25;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_getEqcs___spec__1(lean_object*, lean_object*, lean_object*, size_t, size_t, 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_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_pushEqTrue___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_Grind_canon(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__9;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__5;
 lean_object* lean_array_get_size(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isFalseExpr___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__7;
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkGoal(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 extern lean_object* l_Lean_ShareCommon_objectFactory;
-static lean_object* l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__2___closed__1;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__52;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isFalseExpr(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_Grind_getRootENode(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_state_sharecommon(lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__3;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_mkHCongrWithArity___spec__1(lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__28;
 lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__49;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__14;
 uint8_t lean_nat_dec_le(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__5(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__15;
 uint8_t lean_usize_dec_lt(size_t, size_t);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__17;
+static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__7;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_setENode___spec__1___boxed(lean_object*, lean_object*, lean_object*);
+uint64_t l_Lean_Meta_TransparencyMode_toUInt64(uint8_t);
 lean_object* lean_nat_add(lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_congrPlaceholderProof;
 lean_object* l_Lean_PersistentHashMap_getCollisionNodeSize___rarg(lean_object*);
-static lean_object* l_Lean_Meta_Grind_GrindM_run___rarg___closed__2;
 LEAN_EXPORT uint8_t l_Lean_PersistentHashMap_containsAtAux___at_Lean_Meta_Grind_alreadyInternalized___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, size_t);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__6;
-LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_Raw_u2080_expand_go___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__3(lean_object*, lean_object*, lean_object*);
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__1;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_registerParent___spec__7(lean_object*, size_t, size_t, size_t, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__1;
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_MethodsRefPointed;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getENode_x3f_unsafe__1___boxed(lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_find_x3f___at_Lean_Meta_Grind_registerParent___spec__1(lean_object*, size_t);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_MethodsRef_toMethods_unsafe__1(lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__2;
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__20;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__7;
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389_(lean_object*, lean_object*);
 static lean_object* l_Lean_Meta_Grind_canon___closed__2;
-lean_object* l_Lean_throwError___at_Lean_Attribute_Builtin_ensureNoArgs___spec__2(lean_object*, lean_object*, lean_object*, lean_object*);
-uint64_t l___private_Lean_Meta_Basic_0__Lean_Meta_Config_toKey(lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27___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___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____boxed(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Meta_Grind_setENode___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_setENode_unsafe__2___rarg___boxed(lean_object*);
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run___rarg___lambda__2(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_Grind_getFalseExpr___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_array_uset(lean_object*, size_t, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__40;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getRoot_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT size_t l_Lean_Meta_Grind_instHashableCongrTheoremCacheKey_unsafe__1(lean_object*);
 lean_object* lean_array_get(lean_object*, lean_object*, lean_object*);
 lean_object* l___private_Init_Data_Repr_0__Nat_reprFast(lean_object*);
 lean_object* l_Lean_Meta_isLitValue(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_empty___at_Lean_Meta_Grind_instInhabitedGoal___spec__1;
-lean_object* l_List_filterTR_loop___at_Lean_filterFieldList___spec__1(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isInterpreted___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__5;
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_getEqcs___spec__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_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAux___at_Lean_Meta_Grind_mkHCongrWithArity___spec__6___boxed(lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isInconsistent(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__28;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instInhabitedGoal;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instHashableCongrTheoremCacheKey_unsafe__1___boxed(lean_object*);
-static lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__2;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkENode___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_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Meta_Grind_setENode___spec__2(lean_object*, size_t, size_t, size_t, lean_object*);
 LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_toENodeKey_unsafe__1___boxed(lean_object*);
 size_t lean_usize_land(size_t, size_t);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAtAux___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_hashRoot___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, size_t);
-static lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__23;
-static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__16;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__37;
+static lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__34;
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Meta_Grind_setENode___spec__3(size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Option_repr___at___private_Lean_Meta_Transform_0__Lean_reprTransformStep____x40_Lean_Meta_Transform___hyg_46____spec__1(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_find_x3f___at_Lean_Meta_Grind_mkHCongrWithArity___spec__5___boxed(lean_object*, lean_object*);
@@ -662,6 +502,42 @@ x_4 = lean_box(x_3);
 return x_4;
 }
 }
+static lean_object* _init_l_Lean_Meta_Grind_congrPlaceholderProof___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("[congruence]", 12, 12);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_congrPlaceholderProof___closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_congrPlaceholderProof___closed__1;
+x_3 = l_Lean_Name_str___override(x_1, x_2);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_congrPlaceholderProof___closed__3() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; 
+x_1 = lean_box(0);
+x_2 = l_Lean_Meta_Grind_congrPlaceholderProof___closed__2;
+x_3 = l_Lean_Expr_const___override(x_2, x_1);
+return x_3;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_congrPlaceholderProof() {
+_start:
+{
+lean_object* x_1; 
+x_1 = l_Lean_Meta_Grind_congrPlaceholderProof___closed__3;
+return x_1;
+}
+}
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isInterpreted___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) {
 _start:
 {
@@ -729,7 +605,7 @@ lean_dec(x_2);
 return x_8;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__1() {
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -737,7 +613,7 @@ x_1 = lean_mk_string_unchecked("grind", 5, 5);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__2() {
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__2() {
 _start:
 {
 lean_object* x_1; 
@@ -745,17 +621,17 @@ x_1 = lean_mk_string_unchecked("debug", 5, 5);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__3() {
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__1;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__2;
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__1;
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__2;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__4() {
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__4() {
 _start:
 {
 lean_object* x_1; 
@@ -763,13 +639,13 @@ x_1 = lean_mk_string_unchecked("check invariants after updates", 30, 30);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__5() {
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__5() {
 _start:
 {
 uint8_t x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
 x_1 = 0;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__2;
-x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__4;
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__2;
+x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__4;
 x_4 = lean_box(x_1);
 x_5 = lean_alloc_ctor(0, 3, 0);
 lean_ctor_set(x_5, 0, x_4);
@@ -778,7 +654,7 @@ lean_ctor_set(x_5, 2, x_3);
 return x_5;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__6() {
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -786,7 +662,7 @@ x_1 = lean_mk_string_unchecked("Lean", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__7() {
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__7() {
 _start:
 {
 lean_object* x_1; 
@@ -794,7 +670,7 @@ x_1 = lean_mk_string_unchecked("Meta", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__8() {
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__8() {
 _start:
 {
 lean_object* x_1; 
@@ -802,26 +678,93 @@ x_1 = lean_mk_string_unchecked("Grind", 5, 5);
 return x_1;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__9() {
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__9() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__6;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__7;
-x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__8;
-x_4 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__1;
-x_5 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__2;
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__6;
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__7;
+x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__8;
+x_4 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__1;
+x_5 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__2;
 x_6 = l_Lean_Name_mkStr5(x_1, x_2, x_3, x_4, x_5);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78_(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__3;
+x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__5;
+x_4 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__9;
+x_5 = l_Lean_Option_register___at_Lean_Elab_initFn____x40_Lean_Elab_AutoBound___hyg_6____spec__1(x_2, x_3, x_4, x_1);
+return x_5;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("proofs", 6, 6);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__2() {
+_start:
+{
+lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__1;
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__2;
+x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__1;
+x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
+return x_4;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__3() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_mk_string_unchecked("check proofs between the elements of all equivalence classes", 60, 60);
+return x_1;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__4() {
+_start:
+{
+uint8_t x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
+x_1 = 0;
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__2;
+x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__3;
+x_4 = lean_box(x_1);
+x_5 = lean_alloc_ctor(0, 3, 0);
+lean_ctor_set(x_5, 0, x_4);
+lean_ctor_set(x_5, 1, x_2);
+lean_ctor_set(x_5, 2, x_3);
+return x_5;
+}
+}
+static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__5() {
+_start:
+{
+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; 
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__6;
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__7;
+x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__8;
+x_4 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__1;
+x_5 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__2;
+x_6 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__1;
+x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6);
+return x_7;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__3;
-x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__5;
-x_4 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__9;
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__2;
+x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__4;
+x_4 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__5;
 x_5 = l_Lean_Option_register___at_Lean_Elab_initFn____x40_Lean_Elab_AutoBound___hyg_6____spec__1(x_2, x_3, x_4, x_1);
 return x_5;
 }
@@ -1080,6 +1023,30 @@ lean_dec(x_1);
 return x_2;
 }
 }
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethodsRef(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) {
+_start:
+{
+lean_object* x_9; 
+x_9 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_9, 0, x_1);
+lean_ctor_set(x_9, 1, x_8);
+return x_9;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethodsRef___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) {
+_start:
+{
+lean_object* x_9; 
+x_9 = l_Lean_Meta_Grind_getMethodsRef(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_9;
+}
+}
 static lean_object* _init_l_Lean_Meta_Grind_abstractNestedProofs___closed__1() {
 _start:
 {
@@ -3116,7 +3083,7 @@ x_1 = l_Lean_Meta_Grind_instInhabitedENode___closed__2;
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__1() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -3124,29 +3091,29 @@ x_1 = lean_mk_string_unchecked("self", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__2() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__1;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__1;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__3() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__2;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__2;
 x_3 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__4() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__4() {
 _start:
 {
 lean_object* x_1; 
@@ -3154,29 +3121,29 @@ x_1 = lean_mk_string_unchecked(" := ", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__5() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__4;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__4;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__6() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__3;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__5;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__3;
+x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__5;
 x_3 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__7() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
@@ -3185,7 +3152,7 @@ x_2 = lean_nat_to_int(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__8() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__8() {
 _start:
 {
 lean_object* x_1; 
@@ -3193,17 +3160,17 @@ x_1 = lean_mk_string_unchecked(",", 1, 1);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__9() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__9() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__8;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__8;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__10() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__10() {
 _start:
 {
 lean_object* x_1; 
@@ -3211,17 +3178,17 @@ x_1 = lean_mk_string_unchecked("next", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__11() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__11() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__10;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__10;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__12() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__12() {
 _start:
 {
 lean_object* x_1; 
@@ -3229,17 +3196,17 @@ x_1 = lean_mk_string_unchecked("root", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__13() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__13() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__12;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__12;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__14() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__14() {
 _start:
 {
 lean_object* x_1; 
@@ -3247,17 +3214,17 @@ x_1 = lean_mk_string_unchecked("cgRoot", 6, 6);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__15() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__15() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__14;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__14;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__16() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__16() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
@@ -3266,7 +3233,7 @@ x_2 = lean_nat_to_int(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__17() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__17() {
 _start:
 {
 lean_object* x_1; 
@@ -3274,17 +3241,17 @@ x_1 = lean_mk_string_unchecked("target\?", 7, 7);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__18() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__18() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__17;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__17;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__19() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__19() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
@@ -3293,7 +3260,7 @@ x_2 = lean_nat_to_int(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__20() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__20() {
 _start:
 {
 lean_object* x_1; 
@@ -3301,17 +3268,17 @@ x_1 = lean_mk_string_unchecked("proof\?", 6, 6);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__21() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__21() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__20;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__20;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__22() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__22() {
 _start:
 {
 lean_object* x_1; 
@@ -3319,17 +3286,17 @@ x_1 = lean_mk_string_unchecked("flipped", 7, 7);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__23() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__23() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__22;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__22;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__24() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__24() {
 _start:
 {
 lean_object* x_1; 
@@ -3337,17 +3304,17 @@ x_1 = lean_mk_string_unchecked("size", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__25() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__25() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__24;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__24;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__26() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__26() {
 _start:
 {
 lean_object* x_1; 
@@ -3355,17 +3322,17 @@ x_1 = lean_mk_string_unchecked("interpreted", 11, 11);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__27() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__27() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__26;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__26;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__28() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__28() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
@@ -3374,7 +3341,7 @@ x_2 = lean_nat_to_int(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__29() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__29() {
 _start:
 {
 lean_object* x_1; 
@@ -3382,17 +3349,17 @@ x_1 = lean_mk_string_unchecked("ctor", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__30() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__30() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__29;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__29;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__31() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__31() {
 _start:
 {
 lean_object* x_1; 
@@ -3400,17 +3367,17 @@ x_1 = lean_mk_string_unchecked("hasLambdas", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__32() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__32() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__31;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__31;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__33() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__33() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
@@ -3419,7 +3386,7 @@ x_2 = lean_nat_to_int(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__34() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__34() {
 _start:
 {
 lean_object* x_1; 
@@ -3427,17 +3394,17 @@ x_1 = lean_mk_string_unchecked("heqProofs", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__35() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__35() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__34;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__34;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__36() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__36() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
@@ -3446,7 +3413,7 @@ x_2 = lean_nat_to_int(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__37() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__37() {
 _start:
 {
 lean_object* x_1; 
@@ -3454,17 +3421,17 @@ x_1 = lean_mk_string_unchecked("idx", 3, 3);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__38() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__38() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__37;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__37;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__39() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__39() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
@@ -3473,7 +3440,7 @@ x_2 = lean_nat_to_int(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__40() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__40() {
 _start:
 {
 lean_object* x_1; 
@@ -3481,17 +3448,17 @@ x_1 = lean_mk_string_unchecked("generation", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__41() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__41() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__40;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__40;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__42() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__42() {
 _start:
 {
 lean_object* x_1; 
@@ -3499,17 +3466,17 @@ x_1 = lean_mk_string_unchecked("mt", 2, 2);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__43() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__43() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__42;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__42;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__44() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__44() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
@@ -3518,7 +3485,7 @@ x_2 = lean_nat_to_int(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__45() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__45() {
 _start:
 {
 lean_object* x_1; 
@@ -3526,35 +3493,35 @@ x_1 = lean_mk_string_unchecked("{ ", 2, 2);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__46() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__46() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__45;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__45;
 x_2 = lean_string_length(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__47() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__47() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__46;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__46;
 x_2 = lean_nat_to_int(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__48() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__48() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__45;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__45;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__49() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__49() {
 _start:
 {
 lean_object* x_1; 
@@ -3562,17 +3529,17 @@ x_1 = lean_mk_string_unchecked(" }", 2, 2);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__50() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__50() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__49;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__49;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__51() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__51() {
 _start:
 {
 lean_object* x_1; 
@@ -3580,17 +3547,17 @@ x_1 = lean_mk_string_unchecked("false", 5, 5);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__52() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__52() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__51;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__51;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__53() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__53() {
 _start:
 {
 lean_object* x_1; 
@@ -3598,17 +3565,17 @@ x_1 = lean_mk_string_unchecked("true", 4, 4);
 return x_1;
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__54() {
+static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__54() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__53;
+x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__53;
 x_2 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336_(lean_object* x_1, lean_object* x_2) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389_(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; 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_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; uint8_t x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; uint8_t x_78; uint8_t x_79; uint8_t x_80; uint8_t x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; lean_object* x_99; lean_object* x_100; 
@@ -3616,7 +3583,7 @@ x_3 = lean_ctor_get(x_1, 0);
 lean_inc(x_3);
 x_4 = lean_unsigned_to_nat(0u);
 x_5 = l___private_Lean_Expr_0__Lean_reprExpr____x40_Lean_Expr___hyg_3036_(x_3, x_4);
-x_6 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__7;
+x_6 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__7;
 x_7 = lean_alloc_ctor(4, 2, 0);
 lean_ctor_set(x_7, 0, x_6);
 lean_ctor_set(x_7, 1, x_5);
@@ -3624,11 +3591,11 @@ x_8 = 0;
 x_9 = lean_alloc_ctor(6, 1, 1);
 lean_ctor_set(x_9, 0, x_7);
 lean_ctor_set_uint8(x_9, sizeof(void*)*1, x_8);
-x_10 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__6;
+x_10 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__6;
 x_11 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_11, 0, x_10);
 lean_ctor_set(x_11, 1, x_9);
-x_12 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__9;
+x_12 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__9;
 x_13 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_13, 0, x_11);
 lean_ctor_set(x_13, 1, x_12);
@@ -3636,11 +3603,11 @@ x_14 = lean_box(1);
 x_15 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_15, 0, x_13);
 lean_ctor_set(x_15, 1, x_14);
-x_16 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__11;
+x_16 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__11;
 x_17 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_17, 0, x_15);
 lean_ctor_set(x_17, 1, x_16);
-x_18 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__5;
+x_18 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__5;
 x_19 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_19, 0, x_17);
 lean_ctor_set(x_19, 1, x_18);
@@ -3662,7 +3629,7 @@ lean_ctor_set(x_25, 1, x_12);
 x_26 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_26, 0, x_25);
 lean_ctor_set(x_26, 1, x_14);
-x_27 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__13;
+x_27 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__13;
 x_28 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_28, 0, x_26);
 lean_ctor_set(x_28, 1, x_27);
@@ -3687,7 +3654,7 @@ lean_ctor_set(x_35, 1, x_12);
 x_36 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_36, 0, x_35);
 lean_ctor_set(x_36, 1, x_14);
-x_37 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__15;
+x_37 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__15;
 x_38 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_38, 0, x_36);
 lean_ctor_set(x_38, 1, x_37);
@@ -3697,7 +3664,7 @@ lean_ctor_set(x_39, 1, x_18);
 x_40 = lean_ctor_get(x_1, 3);
 lean_inc(x_40);
 x_41 = l___private_Lean_Expr_0__Lean_reprExpr____x40_Lean_Expr___hyg_3036_(x_40, x_4);
-x_42 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__16;
+x_42 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__16;
 x_43 = lean_alloc_ctor(4, 2, 0);
 lean_ctor_set(x_43, 0, x_42);
 lean_ctor_set(x_43, 1, x_41);
@@ -3713,7 +3680,7 @@ lean_ctor_set(x_46, 1, x_12);
 x_47 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_47, 0, x_46);
 lean_ctor_set(x_47, 1, x_14);
-x_48 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__18;
+x_48 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__18;
 x_49 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_49, 0, x_47);
 lean_ctor_set(x_49, 1, x_48);
@@ -3723,7 +3690,7 @@ lean_ctor_set(x_50, 1, x_18);
 x_51 = lean_ctor_get(x_1, 4);
 lean_inc(x_51);
 x_52 = l_Option_repr___at___private_Lean_Meta_Transform_0__Lean_reprTransformStep____x40_Lean_Meta_Transform___hyg_46____spec__1(x_51, x_4);
-x_53 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__19;
+x_53 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__19;
 x_54 = lean_alloc_ctor(4, 2, 0);
 lean_ctor_set(x_54, 0, x_53);
 lean_ctor_set(x_54, 1, x_52);
@@ -3739,7 +3706,7 @@ lean_ctor_set(x_57, 1, x_12);
 x_58 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_58, 0, x_57);
 lean_ctor_set(x_58, 1, x_14);
-x_59 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__21;
+x_59 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__21;
 x_60 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_60, 0, x_58);
 lean_ctor_set(x_60, 1, x_59);
@@ -3764,7 +3731,7 @@ lean_ctor_set(x_67, 1, x_12);
 x_68 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_68, 0, x_67);
 lean_ctor_set(x_68, 1, x_14);
-x_69 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__23;
+x_69 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__23;
 x_70 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_70, 0, x_68);
 lean_ctor_set(x_70, 1, x_69);
@@ -3792,7 +3759,7 @@ lean_inc(x_82);
 x_83 = l___private_Init_Data_Repr_0__Nat_reprFast(x_82);
 x_84 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_84, 0, x_83);
-x_85 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__39;
+x_85 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__39;
 x_86 = lean_alloc_ctor(4, 2, 0);
 lean_ctor_set(x_86, 0, x_85);
 lean_ctor_set(x_86, 1, x_84);
@@ -3804,7 +3771,7 @@ lean_inc(x_88);
 x_89 = l___private_Init_Data_Repr_0__Nat_reprFast(x_88);
 x_90 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_90, 0, x_89);
-x_91 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__33;
+x_91 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__33;
 x_92 = lean_alloc_ctor(4, 2, 0);
 lean_ctor_set(x_92, 0, x_91);
 lean_ctor_set(x_92, 1, x_90);
@@ -3817,7 +3784,7 @@ lean_dec(x_1);
 x_95 = l___private_Init_Data_Repr_0__Nat_reprFast(x_94);
 x_96 = lean_alloc_ctor(3, 1, 0);
 lean_ctor_set(x_96, 0, x_95);
-x_97 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__44;
+x_97 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__44;
 x_98 = lean_alloc_ctor(4, 2, 0);
 lean_ctor_set(x_98, 0, x_97);
 lean_ctor_set(x_98, 1, x_96);
@@ -3827,14 +3794,14 @@ lean_ctor_set_uint8(x_99, sizeof(void*)*1, x_8);
 if (x_72 == 0)
 {
 lean_object* x_186; 
-x_186 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__52;
+x_186 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__52;
 x_100 = x_186;
 goto block_185;
 }
 else
 {
 lean_object* x_187; 
-x_187 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__54;
+x_187 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__54;
 x_100 = x_187;
 goto block_185;
 }
@@ -3856,7 +3823,7 @@ lean_ctor_set(x_104, 1, x_12);
 x_105 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_105, 0, x_104);
 lean_ctor_set(x_105, 1, x_14);
-x_106 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__25;
+x_106 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__25;
 x_107 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_107, 0, x_105);
 lean_ctor_set(x_107, 1, x_106);
@@ -3872,7 +3839,7 @@ lean_ctor_set(x_110, 1, x_12);
 x_111 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_111, 0, x_110);
 lean_ctor_set(x_111, 1, x_14);
-x_112 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__27;
+x_112 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__27;
 x_113 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_113, 0, x_111);
 lean_ctor_set(x_113, 1, x_112);
@@ -3882,21 +3849,21 @@ lean_ctor_set(x_114, 1, x_18);
 if (x_78 == 0)
 {
 lean_object* x_183; 
-x_183 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__52;
+x_183 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__52;
 x_115 = x_183;
 goto block_182;
 }
 else
 {
 lean_object* x_184; 
-x_184 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__54;
+x_184 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__54;
 x_115 = x_184;
 goto block_182;
 }
 block_182:
 {
 lean_object* x_116; 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_object* x_123; lean_object* x_124; lean_object* x_125; 
-x_116 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__28;
+x_116 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__28;
 x_117 = lean_alloc_ctor(4, 2, 0);
 lean_ctor_set(x_117, 0, x_116);
 lean_ctor_set(x_117, 1, x_115);
@@ -3912,7 +3879,7 @@ lean_ctor_set(x_120, 1, x_12);
 x_121 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_121, 0, x_120);
 lean_ctor_set(x_121, 1, x_14);
-x_122 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__30;
+x_122 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__30;
 x_123 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_123, 0, x_121);
 lean_ctor_set(x_123, 1, x_122);
@@ -3922,14 +3889,14 @@ lean_ctor_set(x_124, 1, x_18);
 if (x_79 == 0)
 {
 lean_object* x_180; 
-x_180 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__52;
+x_180 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__52;
 x_125 = x_180;
 goto block_179;
 }
 else
 {
 lean_object* x_181; 
-x_181 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__54;
+x_181 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__54;
 x_125 = x_181;
 goto block_179;
 }
@@ -3951,7 +3918,7 @@ lean_ctor_set(x_129, 1, x_12);
 x_130 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_130, 0, x_129);
 lean_ctor_set(x_130, 1, x_14);
-x_131 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__32;
+x_131 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__32;
 x_132 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_132, 0, x_130);
 lean_ctor_set(x_132, 1, x_131);
@@ -3961,14 +3928,14 @@ lean_ctor_set(x_133, 1, x_18);
 if (x_80 == 0)
 {
 lean_object* x_177; 
-x_177 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__52;
+x_177 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__52;
 x_134 = x_177;
 goto block_176;
 }
 else
 {
 lean_object* x_178; 
-x_178 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__54;
+x_178 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__54;
 x_134 = x_178;
 goto block_176;
 }
@@ -3990,7 +3957,7 @@ lean_ctor_set(x_138, 1, x_12);
 x_139 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_139, 0, x_138);
 lean_ctor_set(x_139, 1, x_14);
-x_140 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__35;
+x_140 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__35;
 x_141 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_141, 0, x_139);
 lean_ctor_set(x_141, 1, x_140);
@@ -4000,21 +3967,21 @@ lean_ctor_set(x_142, 1, x_18);
 if (x_81 == 0)
 {
 lean_object* x_174; 
-x_174 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__52;
+x_174 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__52;
 x_143 = x_174;
 goto block_173;
 }
 else
 {
 lean_object* x_175; 
-x_175 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__54;
+x_175 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__54;
 x_143 = x_175;
 goto block_173;
 }
 block_173:
 {
 lean_object* x_144; 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_object* x_151; lean_object* x_152; lean_object* x_153; lean_object* x_154; lean_object* x_155; lean_object* x_156; lean_object* x_157; lean_object* x_158; lean_object* x_159; lean_object* x_160; lean_object* x_161; lean_object* x_162; lean_object* x_163; lean_object* x_164; lean_object* x_165; lean_object* x_166; lean_object* x_167; lean_object* x_168; lean_object* x_169; lean_object* x_170; lean_object* x_171; lean_object* x_172; 
-x_144 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__36;
+x_144 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__36;
 x_145 = lean_alloc_ctor(4, 2, 0);
 lean_ctor_set(x_145, 0, x_144);
 lean_ctor_set(x_145, 1, x_143);
@@ -4030,7 +3997,7 @@ lean_ctor_set(x_148, 1, x_12);
 x_149 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_149, 0, x_148);
 lean_ctor_set(x_149, 1, x_14);
-x_150 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__38;
+x_150 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__38;
 x_151 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_151, 0, x_149);
 lean_ctor_set(x_151, 1, x_150);
@@ -4046,7 +4013,7 @@ lean_ctor_set(x_154, 1, x_12);
 x_155 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_155, 0, x_154);
 lean_ctor_set(x_155, 1, x_14);
-x_156 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__41;
+x_156 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__41;
 x_157 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_157, 0, x_155);
 lean_ctor_set(x_157, 1, x_156);
@@ -4062,7 +4029,7 @@ lean_ctor_set(x_160, 1, x_12);
 x_161 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_161, 0, x_160);
 lean_ctor_set(x_161, 1, x_14);
-x_162 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__43;
+x_162 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__43;
 x_163 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_163, 0, x_161);
 lean_ctor_set(x_163, 1, x_162);
@@ -4072,15 +4039,15 @@ lean_ctor_set(x_164, 1, x_18);
 x_165 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_165, 0, x_164);
 lean_ctor_set(x_165, 1, x_99);
-x_166 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__48;
+x_166 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__48;
 x_167 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_167, 0, x_166);
 lean_ctor_set(x_167, 1, x_165);
-x_168 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__50;
+x_168 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__50;
 x_169 = lean_alloc_ctor(5, 2, 0);
 lean_ctor_set(x_169, 0, x_167);
 lean_ctor_set(x_169, 1, x_168);
-x_170 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__47;
+x_170 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__47;
 x_171 = lean_alloc_ctor(4, 2, 0);
 lean_ctor_set(x_171, 0, x_170);
 lean_ctor_set(x_171, 1, x_169);
@@ -4095,11 +4062,11 @@ return x_172;
 }
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____boxed(lean_object* x_1, lean_object* x_2) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____boxed(lean_object* x_1, lean_object* x_2) {
 _start:
 {
 lean_object* x_3; 
-x_3 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336_(x_1, x_2);
+x_3 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389_(x_1, x_2);
 lean_dec(x_2);
 return x_3;
 }
@@ -4108,7 +4075,7 @@ static lean_object* _init_l_Lean_Meta_Grind_instReprENode___closed__1() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____boxed), 2, 0);
+x_1 = lean_alloc_closure((void*)(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____boxed), 2, 0);
 return x_1;
 }
 }
@@ -4547,8 +4514,8 @@ static lean_object* _init_l_Lean_Meta_Grind_congrHash___closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__6;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__8;
+x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__6;
+x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__8;
 x_3 = l_Lean_Meta_Grind_congrHash___closed__1;
 x_4 = l_Lean_Name_mkStr3(x_1, x_2, x_3);
 return x_4;
@@ -4783,15 +4750,16 @@ x_3 = l_Lean_PersistentHashMap_empty___at_Lean_Meta_Grind_instInhabitedGoal___sp
 x_4 = l_Lean_Meta_Grind_instInhabitedGoal___closed__1;
 x_5 = 0;
 x_6 = lean_unsigned_to_nat(0u);
-x_7 = lean_alloc_ctor(0, 7, 1);
+x_7 = lean_alloc_ctor(0, 8, 1);
 lean_ctor_set(x_7, 0, x_1);
 lean_ctor_set(x_7, 1, x_2);
 lean_ctor_set(x_7, 2, x_2);
 lean_ctor_set(x_7, 3, x_3);
-lean_ctor_set(x_7, 4, x_4);
-lean_ctor_set(x_7, 5, x_6);
+lean_ctor_set(x_7, 4, x_2);
+lean_ctor_set(x_7, 5, x_4);
 lean_ctor_set(x_7, 6, x_6);
-lean_ctor_set_uint8(x_7, sizeof(void*)*7, x_5);
+lean_ctor_set(x_7, 7, x_6);
+lean_ctor_set_uint8(x_7, sizeof(void*)*8, x_5);
 return x_7;
 }
 }
@@ -4807,56 +4775,6 @@ x_9 = l_Lean_MVarId_admit(x_7, x_8, x_2, x_3, x_4, x_5, x_6);
 return x_9;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isInconsistent(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; uint8_t x_11; 
-x_10 = lean_st_ref_get(x_1, x_9);
-x_11 = !lean_is_exclusive(x_10);
-if (x_11 == 0)
-{
-lean_object* x_12; uint8_t x_13; lean_object* x_14; 
-x_12 = lean_ctor_get(x_10, 0);
-x_13 = lean_ctor_get_uint8(x_12, sizeof(void*)*7);
-lean_dec(x_12);
-x_14 = lean_box(x_13);
-lean_ctor_set(x_10, 0, x_14);
-return x_10;
-}
-else
-{
-lean_object* x_15; lean_object* x_16; uint8_t x_17; lean_object* x_18; lean_object* x_19; 
-x_15 = lean_ctor_get(x_10, 0);
-x_16 = lean_ctor_get(x_10, 1);
-lean_inc(x_16);
-lean_inc(x_15);
-lean_dec(x_10);
-x_17 = lean_ctor_get_uint8(x_15, sizeof(void*)*7);
-lean_dec(x_15);
-x_18 = lean_box(x_17);
-x_19 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_19, 0, x_18);
-lean_ctor_set(x_19, 1, x_16);
-return x_19;
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isInconsistent___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_Meta_Grind_isInconsistent(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
-lean_dec(x_8);
-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_10;
-}
-}
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isTrueExpr(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:
 {
@@ -5238,6 +5156,82 @@ lean_dec(x_2);
 return x_11;
 }
 }
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getGeneration(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:
+{
+lean_object* x_11; 
+x_11 = l_Lean_Meta_Grind_getENode(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_11) == 0)
+{
+uint8_t x_12; 
+x_12 = !lean_is_exclusive(x_11);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; 
+x_13 = lean_ctor_get(x_11, 0);
+x_14 = lean_ctor_get(x_13, 8);
+lean_inc(x_14);
+lean_dec(x_13);
+lean_ctor_set(x_11, 0, x_14);
+return x_11;
+}
+else
+{
+lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+x_15 = lean_ctor_get(x_11, 0);
+x_16 = lean_ctor_get(x_11, 1);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_dec(x_11);
+x_17 = lean_ctor_get(x_15, 8);
+lean_inc(x_17);
+lean_dec(x_15);
+x_18 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_18, 0, x_17);
+lean_ctor_set(x_18, 1, x_16);
+return x_18;
+}
+}
+else
+{
+uint8_t x_19; 
+x_19 = !lean_is_exclusive(x_11);
+if (x_19 == 0)
+{
+return x_11;
+}
+else
+{
+lean_object* x_20; lean_object* x_21; lean_object* x_22; 
+x_20 = lean_ctor_get(x_11, 0);
+x_21 = lean_ctor_get(x_11, 1);
+lean_inc(x_21);
+lean_inc(x_20);
+lean_dec(x_11);
+x_22 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_22, 0, x_20);
+lean_ctor_set(x_22, 1, x_21);
+return x_22;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getGeneration___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l_Lean_Meta_Grind_getGeneration(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_11;
+}
+}
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isEqTrue(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:
 {
@@ -5421,109 +5415,126 @@ return x_11;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isEqv(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, lean_object* x_11) {
 _start:
 {
-lean_object* x_12; 
-x_12 = l_Lean_Meta_Grind_getENode(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-if (lean_obj_tag(x_12) == 0)
+uint8_t x_12; 
+x_12 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_2);
+if (x_12 == 0)
 {
-lean_object* x_13; lean_object* x_14; lean_object* x_15; 
-x_13 = lean_ctor_get(x_12, 0);
-lean_inc(x_13);
-x_14 = lean_ctor_get(x_12, 1);
+lean_object* x_13; 
+x_13 = l_Lean_Meta_Grind_getENode(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+if (lean_obj_tag(x_13) == 0)
+{
+lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_14 = lean_ctor_get(x_13, 0);
 lean_inc(x_14);
-lean_dec(x_12);
-x_15 = l_Lean_Meta_Grind_getENode(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_14);
-if (lean_obj_tag(x_15) == 0)
+x_15 = lean_ctor_get(x_13, 1);
+lean_inc(x_15);
+lean_dec(x_13);
+x_16 = l_Lean_Meta_Grind_getENode(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_15);
+if (lean_obj_tag(x_16) == 0)
 {
-uint8_t x_16; 
-x_16 = !lean_is_exclusive(x_15);
-if (x_16 == 0)
+uint8_t x_17; 
+x_17 = !lean_is_exclusive(x_16);
+if (x_17 == 0)
 {
-lean_object* x_17; lean_object* x_18; lean_object* x_19; uint8_t x_20; lean_object* x_21; 
-x_17 = lean_ctor_get(x_15, 0);
-x_18 = lean_ctor_get(x_13, 2);
-lean_inc(x_18);
-lean_dec(x_13);
-x_19 = lean_ctor_get(x_17, 2);
+lean_object* x_18; lean_object* x_19; lean_object* x_20; uint8_t x_21; lean_object* x_22; 
+x_18 = lean_ctor_get(x_16, 0);
+x_19 = lean_ctor_get(x_14, 2);
 lean_inc(x_19);
-lean_dec(x_17);
-x_20 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_18, x_19);
-lean_dec(x_19);
+lean_dec(x_14);
+x_20 = lean_ctor_get(x_18, 2);
+lean_inc(x_20);
 lean_dec(x_18);
-x_21 = lean_box(x_20);
-lean_ctor_set(x_15, 0, x_21);
-return x_15;
+x_21 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_19, x_20);
+lean_dec(x_20);
+lean_dec(x_19);
+x_22 = lean_box(x_21);
+lean_ctor_set(x_16, 0, x_22);
+return x_16;
 }
 else
 {
-lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; uint8_t x_26; lean_object* x_27; lean_object* x_28; 
-x_22 = lean_ctor_get(x_15, 0);
-x_23 = lean_ctor_get(x_15, 1);
-lean_inc(x_23);
-lean_inc(x_22);
-lean_dec(x_15);
-x_24 = lean_ctor_get(x_13, 2);
+lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; uint8_t x_27; lean_object* x_28; lean_object* x_29; 
+x_23 = lean_ctor_get(x_16, 0);
+x_24 = lean_ctor_get(x_16, 1);
 lean_inc(x_24);
-lean_dec(x_13);
-x_25 = lean_ctor_get(x_22, 2);
+lean_inc(x_23);
+lean_dec(x_16);
+x_25 = lean_ctor_get(x_14, 2);
 lean_inc(x_25);
-lean_dec(x_22);
-x_26 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_24, x_25);
+lean_dec(x_14);
+x_26 = lean_ctor_get(x_23, 2);
+lean_inc(x_26);
+lean_dec(x_23);
+x_27 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_25, x_26);
+lean_dec(x_26);
 lean_dec(x_25);
-lean_dec(x_24);
-x_27 = lean_box(x_26);
-x_28 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_28, 0, x_27);
-lean_ctor_set(x_28, 1, x_23);
-return x_28;
+x_28 = lean_box(x_27);
+x_29 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_29, 0, x_28);
+lean_ctor_set(x_29, 1, x_24);
+return x_29;
 }
 }
 else
 {
-uint8_t x_29; 
-lean_dec(x_13);
-x_29 = !lean_is_exclusive(x_15);
-if (x_29 == 0)
+uint8_t x_30; 
+lean_dec(x_14);
+x_30 = !lean_is_exclusive(x_16);
+if (x_30 == 0)
 {
-return x_15;
+return x_16;
 }
 else
 {
-lean_object* x_30; lean_object* x_31; lean_object* x_32; 
-x_30 = lean_ctor_get(x_15, 0);
-x_31 = lean_ctor_get(x_15, 1);
+lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+x_31 = lean_ctor_get(x_16, 0);
+x_32 = lean_ctor_get(x_16, 1);
+lean_inc(x_32);
 lean_inc(x_31);
-lean_inc(x_30);
-lean_dec(x_15);
-x_32 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_32, 0, x_30);
-lean_ctor_set(x_32, 1, x_31);
-return x_32;
+lean_dec(x_16);
+x_33 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_33, 0, x_31);
+lean_ctor_set(x_33, 1, x_32);
+return x_33;
 }
 }
 }
 else
 {
-uint8_t x_33; 
+uint8_t x_34; 
 lean_dec(x_2);
-x_33 = !lean_is_exclusive(x_12);
-if (x_33 == 0)
+x_34 = !lean_is_exclusive(x_13);
+if (x_34 == 0)
 {
-return x_12;
+return x_13;
 }
 else
 {
-lean_object* x_34; lean_object* x_35; lean_object* x_36; 
-x_34 = lean_ctor_get(x_12, 0);
-x_35 = lean_ctor_get(x_12, 1);
+lean_object* x_35; lean_object* x_36; lean_object* x_37; 
+x_35 = lean_ctor_get(x_13, 0);
+x_36 = lean_ctor_get(x_13, 1);
+lean_inc(x_36);
 lean_inc(x_35);
-lean_inc(x_34);
-lean_dec(x_12);
-x_36 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_36, 0, x_34);
-lean_ctor_set(x_36, 1, x_35);
-return x_36;
+lean_dec(x_13);
+x_37 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_37, 0, x_35);
+lean_ctor_set(x_37, 1, x_36);
+return x_37;
+}
 }
 }
+else
+{
+uint8_t x_38; lean_object* x_39; lean_object* x_40; 
+lean_dec(x_2);
+lean_dec(x_1);
+x_38 = 1;
+x_39 = lean_box(x_38);
+x_40 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_40, 0, x_39);
+lean_ctor_set(x_40, 1, x_11);
+return x_40;
+}
 }
 }
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isEqv___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, lean_object* x_10, lean_object* x_11) {
@@ -5831,6 +5842,62 @@ lean_dec(x_2);
 return x_11;
 }
 }
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getRootENode(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:
+{
+lean_object* x_11; 
+x_11 = l_Lean_Meta_Grind_getRoot(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_11) == 0)
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; 
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+x_13 = lean_ctor_get(x_11, 1);
+lean_inc(x_13);
+lean_dec(x_11);
+x_14 = l_Lean_Meta_Grind_getENode(x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
+return x_14;
+}
+else
+{
+uint8_t x_15; 
+x_15 = !lean_is_exclusive(x_11);
+if (x_15 == 0)
+{
+return x_11;
+}
+else
+{
+lean_object* x_16; lean_object* x_17; lean_object* x_18; 
+x_16 = lean_ctor_get(x_11, 0);
+x_17 = lean_ctor_get(x_11, 1);
+lean_inc(x_17);
+lean_inc(x_16);
+lean_dec(x_11);
+x_18 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_18, 0, x_16);
+lean_ctor_set(x_18, 1, x_17);
+return x_18;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getRootENode___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, lean_object* x_10) {
+_start:
+{
+lean_object* x_11; 
+x_11 = l_Lean_Meta_Grind_getRootENode(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_11;
+}
+}
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getNext(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:
 {
@@ -6236,14 +6303,14 @@ x_17 = !lean_is_exclusive(x_15);
 if (x_17 == 0)
 {
 lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; uint8_t x_22; 
-x_18 = lean_ctor_get(x_15, 4);
+x_18 = lean_ctor_get(x_15, 5);
 x_19 = lean_alloc_ctor(0, 3, 1);
 lean_ctor_set(x_19, 0, x_1);
 lean_ctor_set(x_19, 1, x_2);
 lean_ctor_set(x_19, 2, x_3);
 lean_ctor_set_uint8(x_19, sizeof(void*)*3, x_4);
 x_20 = lean_array_push(x_18, x_19);
-lean_ctor_set(x_15, 4, x_20);
+lean_ctor_set(x_15, 5, x_20);
 x_21 = lean_st_ref_set(x_5, x_15, x_16);
 x_22 = !lean_is_exclusive(x_21);
 if (x_22 == 0)
@@ -6270,58 +6337,61 @@ return x_27;
 }
 else
 {
-lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; uint8_t x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; 
+lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; uint8_t x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; 
 x_28 = lean_ctor_get(x_15, 0);
 x_29 = lean_ctor_get(x_15, 1);
 x_30 = lean_ctor_get(x_15, 2);
 x_31 = lean_ctor_get(x_15, 3);
 x_32 = lean_ctor_get(x_15, 4);
-x_33 = lean_ctor_get_uint8(x_15, sizeof(void*)*7);
-x_34 = lean_ctor_get(x_15, 5);
+x_33 = lean_ctor_get(x_15, 5);
+x_34 = lean_ctor_get_uint8(x_15, sizeof(void*)*8);
 x_35 = lean_ctor_get(x_15, 6);
+x_36 = lean_ctor_get(x_15, 7);
+lean_inc(x_36);
 lean_inc(x_35);
-lean_inc(x_34);
+lean_inc(x_33);
 lean_inc(x_32);
 lean_inc(x_31);
 lean_inc(x_30);
 lean_inc(x_29);
 lean_inc(x_28);
 lean_dec(x_15);
-x_36 = lean_alloc_ctor(0, 3, 1);
-lean_ctor_set(x_36, 0, x_1);
-lean_ctor_set(x_36, 1, x_2);
-lean_ctor_set(x_36, 2, x_3);
-lean_ctor_set_uint8(x_36, sizeof(void*)*3, x_4);
-x_37 = lean_array_push(x_32, x_36);
-x_38 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_38, 0, x_28);
-lean_ctor_set(x_38, 1, x_29);
-lean_ctor_set(x_38, 2, x_30);
-lean_ctor_set(x_38, 3, x_31);
-lean_ctor_set(x_38, 4, x_37);
-lean_ctor_set(x_38, 5, x_34);
-lean_ctor_set(x_38, 6, x_35);
-lean_ctor_set_uint8(x_38, sizeof(void*)*7, x_33);
-x_39 = lean_st_ref_set(x_5, x_38, x_16);
-x_40 = lean_ctor_get(x_39, 1);
-lean_inc(x_40);
-if (lean_is_exclusive(x_39)) {
- lean_ctor_release(x_39, 0);
- lean_ctor_release(x_39, 1);
- x_41 = x_39;
+x_37 = lean_alloc_ctor(0, 3, 1);
+lean_ctor_set(x_37, 0, x_1);
+lean_ctor_set(x_37, 1, x_2);
+lean_ctor_set(x_37, 2, x_3);
+lean_ctor_set_uint8(x_37, sizeof(void*)*3, x_4);
+x_38 = lean_array_push(x_33, x_37);
+x_39 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_39, 0, x_28);
+lean_ctor_set(x_39, 1, x_29);
+lean_ctor_set(x_39, 2, x_30);
+lean_ctor_set(x_39, 3, x_31);
+lean_ctor_set(x_39, 4, x_32);
+lean_ctor_set(x_39, 5, x_38);
+lean_ctor_set(x_39, 6, x_35);
+lean_ctor_set(x_39, 7, x_36);
+lean_ctor_set_uint8(x_39, sizeof(void*)*8, x_34);
+x_40 = lean_st_ref_set(x_5, x_39, x_16);
+x_41 = lean_ctor_get(x_40, 1);
+lean_inc(x_41);
+if (lean_is_exclusive(x_40)) {
+ lean_ctor_release(x_40, 0);
+ lean_ctor_release(x_40, 1);
+ x_42 = x_40;
 } else {
- lean_dec_ref(x_39);
- x_41 = lean_box(0);
+ lean_dec_ref(x_40);
+ x_42 = lean_box(0);
 }
-x_42 = lean_box(0);
-if (lean_is_scalar(x_41)) {
- x_43 = lean_alloc_ctor(0, 2, 0);
+x_43 = lean_box(0);
+if (lean_is_scalar(x_42)) {
+ x_44 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_43 = x_41;
+ x_44 = x_42;
 }
-lean_ctor_set(x_43, 0, x_42);
-lean_ctor_set(x_43, 1, x_40);
-return x_43;
+lean_ctor_set(x_44, 0, x_43);
+lean_ctor_set(x_44, 1, x_41);
+return x_44;
 }
 }
 }
@@ -6343,143 +6413,621 @@ lean_dec(x_5);
 return x_15;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_pushEqHEq(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, lean_object* x_11, lean_object* x_12) {
+static uint64_t _init_l_Lean_Meta_Grind_hasSameType___closed__1() {
 _start:
 {
-lean_object* x_13; 
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_1);
-x_13 = lean_infer_type(x_1, x_8, x_9, x_10, x_11, x_12);
-if (lean_obj_tag(x_13) == 0)
+uint8_t x_1; uint64_t x_2; 
+x_1 = 1;
+x_2 = l_Lean_Meta_TransparencyMode_toUInt64(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_hasSameType(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) {
+_start:
 {
-lean_object* x_14; lean_object* x_15; lean_object* x_16; 
-x_14 = lean_ctor_get(x_13, 0);
-lean_inc(x_14);
-x_15 = lean_ctor_get(x_13, 1);
-lean_inc(x_15);
-lean_dec(x_13);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_2);
-x_16 = lean_infer_type(x_2, x_8, x_9, x_10, x_11, x_15);
-if (lean_obj_tag(x_16) == 0)
+uint8_t x_8; 
+x_8 = !lean_is_exclusive(x_3);
+if (x_8 == 0)
 {
-lean_object* x_17; lean_object* x_18; lean_object* x_19; 
-x_17 = lean_ctor_get(x_16, 0);
-lean_inc(x_17);
-x_18 = lean_ctor_get(x_16, 1);
-lean_inc(x_18);
-lean_dec(x_16);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-x_19 = l_Lean_Meta_isExprDefEq(x_14, x_17, x_8, x_9, x_10, x_11, x_18);
-if (lean_obj_tag(x_19) == 0)
+lean_object* x_9; uint8_t x_10; 
+x_9 = lean_ctor_get(x_3, 0);
+x_10 = !lean_is_exclusive(x_9);
+if (x_10 == 0)
 {
-lean_object* x_20; uint8_t x_21; 
-x_20 = lean_ctor_get(x_19, 0);
+uint64_t x_11; uint8_t x_12; uint64_t x_13; uint64_t x_14; uint64_t x_15; uint64_t x_16; uint64_t x_17; lean_object* x_18; 
+x_11 = lean_ctor_get_uint64(x_3, sizeof(void*)*7);
+x_12 = 1;
+lean_ctor_set_uint8(x_9, 9, x_12);
+x_13 = 2;
+x_14 = lean_uint64_shift_right(x_11, x_13);
+x_15 = lean_uint64_shift_left(x_14, x_13);
+x_16 = l_Lean_Meta_Grind_hasSameType___closed__1;
+x_17 = lean_uint64_lor(x_15, x_16);
+lean_ctor_set_uint64(x_3, sizeof(void*)*7, x_17);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_18 = lean_infer_type(x_1, x_3, x_4, x_5, x_6, x_7);
+if (lean_obj_tag(x_18) == 0)
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_19 = lean_ctor_get(x_18, 0);
+lean_inc(x_19);
+x_20 = lean_ctor_get(x_18, 1);
 lean_inc(x_20);
-x_21 = lean_unbox(x_20);
-lean_dec(x_20);
-if (x_21 == 0)
+lean_dec(x_18);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_21 = lean_infer_type(x_2, x_3, x_4, x_5, x_6, x_20);
+if (lean_obj_tag(x_21) == 0)
 {
-lean_object* x_22; uint8_t x_23; lean_object* x_24; 
-x_22 = lean_ctor_get(x_19, 1);
+lean_object* x_22; lean_object* x_23; lean_object* x_24; 
+x_22 = lean_ctor_get(x_21, 0);
 lean_inc(x_22);
-lean_dec(x_19);
-x_23 = 1;
-x_24 = l_Lean_Meta_Grind_pushEqCore(x_1, x_2, x_3, x_23, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_22);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
+x_23 = lean_ctor_get(x_21, 1);
+lean_inc(x_23);
+lean_dec(x_21);
+x_24 = l_Lean_Meta_isExprDefEq(x_19, x_22, x_3, x_4, x_5, x_6, x_23);
+if (lean_obj_tag(x_24) == 0)
+{
+uint8_t x_25; 
+x_25 = !lean_is_exclusive(x_24);
+if (x_25 == 0)
+{
 return x_24;
 }
 else
 {
-lean_object* x_25; uint8_t x_26; lean_object* x_27; 
-x_25 = lean_ctor_get(x_19, 1);
-lean_inc(x_25);
-lean_dec(x_19);
-x_26 = 0;
-x_27 = l_Lean_Meta_Grind_pushEqCore(x_1, x_2, x_3, x_26, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_25);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-return x_27;
+lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_26 = lean_ctor_get(x_24, 0);
+x_27 = lean_ctor_get(x_24, 1);
+lean_inc(x_27);
+lean_inc(x_26);
+lean_dec(x_24);
+x_28 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_28, 0, x_26);
+lean_ctor_set(x_28, 1, x_27);
+return x_28;
 }
 }
 else
 {
-uint8_t x_28; 
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_28 = !lean_is_exclusive(x_19);
-if (x_28 == 0)
+uint8_t x_29; 
+x_29 = !lean_is_exclusive(x_24);
+if (x_29 == 0)
 {
-return x_19;
+return x_24;
 }
 else
 {
-lean_object* x_29; lean_object* x_30; lean_object* x_31; 
-x_29 = lean_ctor_get(x_19, 0);
-x_30 = lean_ctor_get(x_19, 1);
+lean_object* x_30; lean_object* x_31; lean_object* x_32; 
+x_30 = lean_ctor_get(x_24, 0);
+x_31 = lean_ctor_get(x_24, 1);
+lean_inc(x_31);
 lean_inc(x_30);
-lean_inc(x_29);
-lean_dec(x_19);
-x_31 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_31, 0, x_29);
-lean_ctor_set(x_31, 1, x_30);
-return x_31;
+lean_dec(x_24);
+x_32 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_32, 0, x_30);
+lean_ctor_set(x_32, 1, x_31);
+return x_32;
 }
 }
 }
 else
 {
-uint8_t x_32; 
-lean_dec(x_14);
-lean_dec(x_11);
-lean_dec(x_10);
+uint8_t x_33; 
+lean_dec(x_19);
+lean_dec(x_3);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_33 = !lean_is_exclusive(x_21);
+if (x_33 == 0)
+{
+return x_21;
+}
+else
+{
+lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_34 = lean_ctor_get(x_21, 0);
+x_35 = lean_ctor_get(x_21, 1);
+lean_inc(x_35);
+lean_inc(x_34);
+lean_dec(x_21);
+x_36 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_36, 0, x_34);
+lean_ctor_set(x_36, 1, x_35);
+return x_36;
+}
+}
+}
+else
+{
+uint8_t x_37; 
+lean_dec(x_3);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_37 = !lean_is_exclusive(x_18);
+if (x_37 == 0)
+{
+return x_18;
+}
+else
+{
+lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+x_38 = lean_ctor_get(x_18, 0);
+x_39 = lean_ctor_get(x_18, 1);
+lean_inc(x_39);
+lean_inc(x_38);
+lean_dec(x_18);
+x_40 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_40, 0, x_38);
+lean_ctor_set(x_40, 1, x_39);
+return x_40;
+}
+}
+}
+else
+{
+uint64_t x_41; uint8_t x_42; uint8_t x_43; uint8_t x_44; uint8_t x_45; uint8_t x_46; uint8_t x_47; uint8_t x_48; uint8_t x_49; uint8_t x_50; uint8_t x_51; uint8_t x_52; uint8_t x_53; uint8_t x_54; uint8_t x_55; uint8_t x_56; uint8_t x_57; uint8_t x_58; lean_object* x_59; uint64_t x_60; uint64_t x_61; uint64_t x_62; uint64_t x_63; uint64_t x_64; lean_object* x_65; 
+x_41 = lean_ctor_get_uint64(x_3, sizeof(void*)*7);
+x_42 = lean_ctor_get_uint8(x_9, 0);
+x_43 = lean_ctor_get_uint8(x_9, 1);
+x_44 = lean_ctor_get_uint8(x_9, 2);
+x_45 = lean_ctor_get_uint8(x_9, 3);
+x_46 = lean_ctor_get_uint8(x_9, 4);
+x_47 = lean_ctor_get_uint8(x_9, 5);
+x_48 = lean_ctor_get_uint8(x_9, 6);
+x_49 = lean_ctor_get_uint8(x_9, 7);
+x_50 = lean_ctor_get_uint8(x_9, 8);
+x_51 = lean_ctor_get_uint8(x_9, 10);
+x_52 = lean_ctor_get_uint8(x_9, 11);
+x_53 = lean_ctor_get_uint8(x_9, 12);
+x_54 = lean_ctor_get_uint8(x_9, 13);
+x_55 = lean_ctor_get_uint8(x_9, 14);
+x_56 = lean_ctor_get_uint8(x_9, 15);
+x_57 = lean_ctor_get_uint8(x_9, 16);
 lean_dec(x_9);
-lean_dec(x_8);
+x_58 = 1;
+x_59 = lean_alloc_ctor(0, 0, 17);
+lean_ctor_set_uint8(x_59, 0, x_42);
+lean_ctor_set_uint8(x_59, 1, x_43);
+lean_ctor_set_uint8(x_59, 2, x_44);
+lean_ctor_set_uint8(x_59, 3, x_45);
+lean_ctor_set_uint8(x_59, 4, x_46);
+lean_ctor_set_uint8(x_59, 5, x_47);
+lean_ctor_set_uint8(x_59, 6, x_48);
+lean_ctor_set_uint8(x_59, 7, x_49);
+lean_ctor_set_uint8(x_59, 8, x_50);
+lean_ctor_set_uint8(x_59, 9, x_58);
+lean_ctor_set_uint8(x_59, 10, x_51);
+lean_ctor_set_uint8(x_59, 11, x_52);
+lean_ctor_set_uint8(x_59, 12, x_53);
+lean_ctor_set_uint8(x_59, 13, x_54);
+lean_ctor_set_uint8(x_59, 14, x_55);
+lean_ctor_set_uint8(x_59, 15, x_56);
+lean_ctor_set_uint8(x_59, 16, x_57);
+x_60 = 2;
+x_61 = lean_uint64_shift_right(x_41, x_60);
+x_62 = lean_uint64_shift_left(x_61, x_60);
+x_63 = l_Lean_Meta_Grind_hasSameType___closed__1;
+x_64 = lean_uint64_lor(x_62, x_63);
+lean_ctor_set(x_3, 0, x_59);
+lean_ctor_set_uint64(x_3, sizeof(void*)*7, x_64);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_65 = lean_infer_type(x_1, x_3, x_4, x_5, x_6, x_7);
+if (lean_obj_tag(x_65) == 0)
+{
+lean_object* x_66; lean_object* x_67; lean_object* x_68; 
+x_66 = lean_ctor_get(x_65, 0);
+lean_inc(x_66);
+x_67 = lean_ctor_get(x_65, 1);
+lean_inc(x_67);
+lean_dec(x_65);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_3);
+x_68 = lean_infer_type(x_2, x_3, x_4, x_5, x_6, x_67);
+if (lean_obj_tag(x_68) == 0)
+{
+lean_object* x_69; lean_object* x_70; lean_object* x_71; 
+x_69 = lean_ctor_get(x_68, 0);
+lean_inc(x_69);
+x_70 = lean_ctor_get(x_68, 1);
+lean_inc(x_70);
+lean_dec(x_68);
+x_71 = l_Lean_Meta_isExprDefEq(x_66, x_69, x_3, x_4, x_5, x_6, x_70);
+if (lean_obj_tag(x_71) == 0)
+{
+lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; 
+x_72 = lean_ctor_get(x_71, 0);
+lean_inc(x_72);
+x_73 = lean_ctor_get(x_71, 1);
+lean_inc(x_73);
+if (lean_is_exclusive(x_71)) {
+ lean_ctor_release(x_71, 0);
+ lean_ctor_release(x_71, 1);
+ x_74 = x_71;
+} else {
+ lean_dec_ref(x_71);
+ x_74 = lean_box(0);
+}
+if (lean_is_scalar(x_74)) {
+ x_75 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_75 = x_74;
+}
+lean_ctor_set(x_75, 0, x_72);
+lean_ctor_set(x_75, 1, x_73);
+return x_75;
+}
+else
+{
+lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; 
+x_76 = lean_ctor_get(x_71, 0);
+lean_inc(x_76);
+x_77 = lean_ctor_get(x_71, 1);
+lean_inc(x_77);
+if (lean_is_exclusive(x_71)) {
+ lean_ctor_release(x_71, 0);
+ lean_ctor_release(x_71, 1);
+ x_78 = x_71;
+} else {
+ lean_dec_ref(x_71);
+ x_78 = lean_box(0);
+}
+if (lean_is_scalar(x_78)) {
+ x_79 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_79 = x_78;
+}
+lean_ctor_set(x_79, 0, x_76);
+lean_ctor_set(x_79, 1, x_77);
+return x_79;
+}
+}
+else
+{
+lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; 
+lean_dec(x_66);
+lean_dec(x_3);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_80 = lean_ctor_get(x_68, 0);
+lean_inc(x_80);
+x_81 = lean_ctor_get(x_68, 1);
+lean_inc(x_81);
+if (lean_is_exclusive(x_68)) {
+ lean_ctor_release(x_68, 0);
+ lean_ctor_release(x_68, 1);
+ x_82 = x_68;
+} else {
+ lean_dec_ref(x_68);
+ x_82 = lean_box(0);
+}
+if (lean_is_scalar(x_82)) {
+ x_83 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_83 = x_82;
+}
+lean_ctor_set(x_83, 0, x_80);
+lean_ctor_set(x_83, 1, x_81);
+return x_83;
+}
+}
+else
+{
+lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; 
 lean_dec(x_3);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
 lean_dec(x_2);
-lean_dec(x_1);
-x_32 = !lean_is_exclusive(x_16);
-if (x_32 == 0)
+x_84 = lean_ctor_get(x_65, 0);
+lean_inc(x_84);
+x_85 = lean_ctor_get(x_65, 1);
+lean_inc(x_85);
+if (lean_is_exclusive(x_65)) {
+ lean_ctor_release(x_65, 0);
+ lean_ctor_release(x_65, 1);
+ x_86 = x_65;
+} else {
+ lean_dec_ref(x_65);
+ x_86 = lean_box(0);
+}
+if (lean_is_scalar(x_86)) {
+ x_87 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_87 = x_86;
+}
+lean_ctor_set(x_87, 0, x_84);
+lean_ctor_set(x_87, 1, x_85);
+return x_87;
+}
+}
+}
+else
 {
-return x_16;
+lean_object* x_88; uint64_t x_89; uint8_t x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; uint8_t x_97; uint8_t x_98; uint8_t x_99; uint8_t x_100; uint8_t x_101; uint8_t x_102; uint8_t x_103; uint8_t x_104; uint8_t x_105; uint8_t x_106; uint8_t x_107; uint8_t x_108; uint8_t x_109; uint8_t x_110; uint8_t x_111; uint8_t x_112; uint8_t x_113; uint8_t x_114; lean_object* x_115; uint8_t x_116; lean_object* x_117; uint64_t x_118; uint64_t x_119; uint64_t x_120; uint64_t x_121; uint64_t x_122; lean_object* x_123; lean_object* x_124; 
+x_88 = lean_ctor_get(x_3, 0);
+x_89 = lean_ctor_get_uint64(x_3, sizeof(void*)*7);
+x_90 = lean_ctor_get_uint8(x_3, sizeof(void*)*7 + 8);
+x_91 = lean_ctor_get(x_3, 1);
+x_92 = lean_ctor_get(x_3, 2);
+x_93 = lean_ctor_get(x_3, 3);
+x_94 = lean_ctor_get(x_3, 4);
+x_95 = lean_ctor_get(x_3, 5);
+x_96 = lean_ctor_get(x_3, 6);
+x_97 = lean_ctor_get_uint8(x_3, sizeof(void*)*7 + 9);
+x_98 = lean_ctor_get_uint8(x_3, sizeof(void*)*7 + 10);
+lean_inc(x_96);
+lean_inc(x_95);
+lean_inc(x_94);
+lean_inc(x_93);
+lean_inc(x_92);
+lean_inc(x_91);
+lean_inc(x_88);
+lean_dec(x_3);
+x_99 = lean_ctor_get_uint8(x_88, 0);
+x_100 = lean_ctor_get_uint8(x_88, 1);
+x_101 = lean_ctor_get_uint8(x_88, 2);
+x_102 = lean_ctor_get_uint8(x_88, 3);
+x_103 = lean_ctor_get_uint8(x_88, 4);
+x_104 = lean_ctor_get_uint8(x_88, 5);
+x_105 = lean_ctor_get_uint8(x_88, 6);
+x_106 = lean_ctor_get_uint8(x_88, 7);
+x_107 = lean_ctor_get_uint8(x_88, 8);
+x_108 = lean_ctor_get_uint8(x_88, 10);
+x_109 = lean_ctor_get_uint8(x_88, 11);
+x_110 = lean_ctor_get_uint8(x_88, 12);
+x_111 = lean_ctor_get_uint8(x_88, 13);
+x_112 = lean_ctor_get_uint8(x_88, 14);
+x_113 = lean_ctor_get_uint8(x_88, 15);
+x_114 = lean_ctor_get_uint8(x_88, 16);
+if (lean_is_exclusive(x_88)) {
+ x_115 = x_88;
+} else {
+ lean_dec_ref(x_88);
+ x_115 = lean_box(0);
+}
+x_116 = 1;
+if (lean_is_scalar(x_115)) {
+ x_117 = lean_alloc_ctor(0, 0, 17);
+} else {
+ x_117 = x_115;
+}
+lean_ctor_set_uint8(x_117, 0, x_99);
+lean_ctor_set_uint8(x_117, 1, x_100);
+lean_ctor_set_uint8(x_117, 2, x_101);
+lean_ctor_set_uint8(x_117, 3, x_102);
+lean_ctor_set_uint8(x_117, 4, x_103);
+lean_ctor_set_uint8(x_117, 5, x_104);
+lean_ctor_set_uint8(x_117, 6, x_105);
+lean_ctor_set_uint8(x_117, 7, x_106);
+lean_ctor_set_uint8(x_117, 8, x_107);
+lean_ctor_set_uint8(x_117, 9, x_116);
+lean_ctor_set_uint8(x_117, 10, x_108);
+lean_ctor_set_uint8(x_117, 11, x_109);
+lean_ctor_set_uint8(x_117, 12, x_110);
+lean_ctor_set_uint8(x_117, 13, x_111);
+lean_ctor_set_uint8(x_117, 14, x_112);
+lean_ctor_set_uint8(x_117, 15, x_113);
+lean_ctor_set_uint8(x_117, 16, x_114);
+x_118 = 2;
+x_119 = lean_uint64_shift_right(x_89, x_118);
+x_120 = lean_uint64_shift_left(x_119, x_118);
+x_121 = l_Lean_Meta_Grind_hasSameType___closed__1;
+x_122 = lean_uint64_lor(x_120, x_121);
+x_123 = lean_alloc_ctor(0, 7, 11);
+lean_ctor_set(x_123, 0, x_117);
+lean_ctor_set(x_123, 1, x_91);
+lean_ctor_set(x_123, 2, x_92);
+lean_ctor_set(x_123, 3, x_93);
+lean_ctor_set(x_123, 4, x_94);
+lean_ctor_set(x_123, 5, x_95);
+lean_ctor_set(x_123, 6, x_96);
+lean_ctor_set_uint64(x_123, sizeof(void*)*7, x_122);
+lean_ctor_set_uint8(x_123, sizeof(void*)*7 + 8, x_90);
+lean_ctor_set_uint8(x_123, sizeof(void*)*7 + 9, x_97);
+lean_ctor_set_uint8(x_123, sizeof(void*)*7 + 10, x_98);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_123);
+x_124 = lean_infer_type(x_1, x_123, x_4, x_5, x_6, x_7);
+if (lean_obj_tag(x_124) == 0)
+{
+lean_object* x_125; lean_object* x_126; lean_object* x_127; 
+x_125 = lean_ctor_get(x_124, 0);
+lean_inc(x_125);
+x_126 = lean_ctor_get(x_124, 1);
+lean_inc(x_126);
+lean_dec(x_124);
+lean_inc(x_6);
+lean_inc(x_5);
+lean_inc(x_4);
+lean_inc(x_123);
+x_127 = lean_infer_type(x_2, x_123, x_4, x_5, x_6, x_126);
+if (lean_obj_tag(x_127) == 0)
+{
+lean_object* x_128; lean_object* x_129; lean_object* x_130; 
+x_128 = lean_ctor_get(x_127, 0);
+lean_inc(x_128);
+x_129 = lean_ctor_get(x_127, 1);
+lean_inc(x_129);
+lean_dec(x_127);
+x_130 = l_Lean_Meta_isExprDefEq(x_125, x_128, x_123, x_4, x_5, x_6, x_129);
+if (lean_obj_tag(x_130) == 0)
+{
+lean_object* x_131; lean_object* x_132; lean_object* x_133; lean_object* x_134; 
+x_131 = lean_ctor_get(x_130, 0);
+lean_inc(x_131);
+x_132 = lean_ctor_get(x_130, 1);
+lean_inc(x_132);
+if (lean_is_exclusive(x_130)) {
+ lean_ctor_release(x_130, 0);
+ lean_ctor_release(x_130, 1);
+ x_133 = x_130;
+} else {
+ lean_dec_ref(x_130);
+ x_133 = lean_box(0);
+}
+if (lean_is_scalar(x_133)) {
+ x_134 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_134 = x_133;
+}
+lean_ctor_set(x_134, 0, x_131);
+lean_ctor_set(x_134, 1, x_132);
+return x_134;
 }
 else
 {
-lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_33 = lean_ctor_get(x_16, 0);
-x_34 = lean_ctor_get(x_16, 1);
-lean_inc(x_34);
-lean_inc(x_33);
-lean_dec(x_16);
-x_35 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_35, 0, x_33);
-lean_ctor_set(x_35, 1, x_34);
-return x_35;
+lean_object* x_135; lean_object* x_136; lean_object* x_137; lean_object* x_138; 
+x_135 = lean_ctor_get(x_130, 0);
+lean_inc(x_135);
+x_136 = lean_ctor_get(x_130, 1);
+lean_inc(x_136);
+if (lean_is_exclusive(x_130)) {
+ lean_ctor_release(x_130, 0);
+ lean_ctor_release(x_130, 1);
+ x_137 = x_130;
+} else {
+ lean_dec_ref(x_130);
+ x_137 = lean_box(0);
+}
+if (lean_is_scalar(x_137)) {
+ x_138 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_138 = x_137;
+}
+lean_ctor_set(x_138, 0, x_135);
+lean_ctor_set(x_138, 1, x_136);
+return x_138;
+}
+}
+else
+{
+lean_object* x_139; lean_object* x_140; lean_object* x_141; lean_object* x_142; 
+lean_dec(x_125);
+lean_dec(x_123);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_139 = lean_ctor_get(x_127, 0);
+lean_inc(x_139);
+x_140 = lean_ctor_get(x_127, 1);
+lean_inc(x_140);
+if (lean_is_exclusive(x_127)) {
+ lean_ctor_release(x_127, 0);
+ lean_ctor_release(x_127, 1);
+ x_141 = x_127;
+} else {
+ lean_dec_ref(x_127);
+ x_141 = lean_box(0);
+}
+if (lean_is_scalar(x_141)) {
+ x_142 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_142 = x_141;
+}
+lean_ctor_set(x_142, 0, x_139);
+lean_ctor_set(x_142, 1, x_140);
+return x_142;
+}
+}
+else
+{
+lean_object* x_143; lean_object* x_144; lean_object* x_145; lean_object* x_146; 
+lean_dec(x_123);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_2);
+x_143 = lean_ctor_get(x_124, 0);
+lean_inc(x_143);
+x_144 = lean_ctor_get(x_124, 1);
+lean_inc(x_144);
+if (lean_is_exclusive(x_124)) {
+ lean_ctor_release(x_124, 0);
+ lean_ctor_release(x_124, 1);
+ x_145 = x_124;
+} else {
+ lean_dec_ref(x_124);
+ x_145 = lean_box(0);
 }
+if (lean_is_scalar(x_145)) {
+ x_146 = lean_alloc_ctor(1, 2, 0);
+} else {
+ x_146 = x_145;
+}
+lean_ctor_set(x_146, 0, x_143);
+lean_ctor_set(x_146, 1, x_144);
+return x_146;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_pushEqHEq(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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_2);
+lean_inc(x_1);
+x_13 = l_Lean_Meta_Grind_hasSameType(x_1, x_2, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
+{
+lean_object* x_14; uint8_t x_15; 
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_unbox(x_14);
+lean_dec(x_14);
+if (x_15 == 0)
+{
+lean_object* x_16; uint8_t x_17; lean_object* x_18; 
+x_16 = lean_ctor_get(x_13, 1);
+lean_inc(x_16);
+lean_dec(x_13);
+x_17 = 1;
+x_18 = l_Lean_Meta_Grind_pushEqCore(x_1, x_2, x_3, x_17, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_16);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+return x_18;
+}
+else
+{
+lean_object* x_19; uint8_t x_20; lean_object* x_21; 
+x_19 = lean_ctor_get(x_13, 1);
+lean_inc(x_19);
+lean_dec(x_13);
+x_20 = 0;
+x_21 = l_Lean_Meta_Grind_pushEqCore(x_1, x_2, x_3, x_20, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_19);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+return x_21;
 }
 }
 else
 {
-uint8_t x_36; 
+uint8_t x_22; 
 lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_9);
@@ -6487,23 +7035,23 @@ lean_dec(x_8);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-x_36 = !lean_is_exclusive(x_13);
-if (x_36 == 0)
+x_22 = !lean_is_exclusive(x_13);
+if (x_22 == 0)
 {
 return x_13;
 }
 else
 {
-lean_object* x_37; lean_object* x_38; lean_object* x_39; 
-x_37 = lean_ctor_get(x_13, 0);
-x_38 = lean_ctor_get(x_13, 1);
-lean_inc(x_38);
-lean_inc(x_37);
+lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+x_23 = lean_ctor_get(x_13, 0);
+x_24 = lean_ctor_get(x_13, 1);
+lean_inc(x_24);
+lean_inc(x_23);
 lean_dec(x_13);
-x_39 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_39, 0, x_37);
-lean_ctor_set(x_39, 1, x_38);
-return x_39;
+x_25 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_25, 0, x_23);
+lean_ctor_set(x_25, 1, x_24);
+return x_25;
 }
 }
 }
@@ -9843,148 +10391,154 @@ return x_41;
 }
 else
 {
-lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; uint8_t x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; 
+lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; uint8_t x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; 
 x_42 = lean_ctor_get(x_29, 0);
 x_43 = lean_ctor_get(x_29, 1);
 x_44 = lean_ctor_get(x_29, 2);
 x_45 = lean_ctor_get(x_29, 3);
 x_46 = lean_ctor_get(x_29, 4);
-x_47 = lean_ctor_get_uint8(x_29, sizeof(void*)*7);
-x_48 = lean_ctor_get(x_29, 5);
+x_47 = lean_ctor_get(x_29, 5);
+x_48 = lean_ctor_get_uint8(x_29, sizeof(void*)*8);
 x_49 = lean_ctor_get(x_29, 6);
+x_50 = lean_ctor_get(x_29, 7);
+lean_inc(x_50);
 lean_inc(x_49);
-lean_inc(x_48);
+lean_inc(x_47);
 lean_inc(x_46);
 lean_inc(x_45);
 lean_inc(x_44);
 lean_inc(x_43);
 lean_inc(x_42);
 lean_dec(x_29);
-x_50 = lean_box(0);
-x_51 = l_Lean_RBNode_insert___at_Lean_Meta_Grind_registerParent___spec__4(x_31, x_1, x_50);
-x_52 = l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_registerParent___spec__6(x_44, x_22, x_51);
-x_53 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_53, 0, x_42);
-lean_ctor_set(x_53, 1, x_43);
-lean_ctor_set(x_53, 2, x_52);
-lean_ctor_set(x_53, 3, x_45);
-lean_ctor_set(x_53, 4, x_46);
-lean_ctor_set(x_53, 5, x_48);
-lean_ctor_set(x_53, 6, x_49);
-lean_ctor_set_uint8(x_53, sizeof(void*)*7, x_47);
-x_54 = lean_st_ref_set(x_3, x_53, x_30);
-x_55 = lean_ctor_get(x_54, 1);
-lean_inc(x_55);
-if (lean_is_exclusive(x_54)) {
- lean_ctor_release(x_54, 0);
- lean_ctor_release(x_54, 1);
- x_56 = x_54;
+x_51 = lean_box(0);
+x_52 = l_Lean_RBNode_insert___at_Lean_Meta_Grind_registerParent___spec__4(x_31, x_1, x_51);
+x_53 = l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_registerParent___spec__6(x_44, x_22, x_52);
+x_54 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_54, 0, x_42);
+lean_ctor_set(x_54, 1, x_43);
+lean_ctor_set(x_54, 2, x_53);
+lean_ctor_set(x_54, 3, x_45);
+lean_ctor_set(x_54, 4, x_46);
+lean_ctor_set(x_54, 5, x_47);
+lean_ctor_set(x_54, 6, x_49);
+lean_ctor_set(x_54, 7, x_50);
+lean_ctor_set_uint8(x_54, sizeof(void*)*8, x_48);
+x_55 = lean_st_ref_set(x_3, x_54, x_30);
+x_56 = lean_ctor_get(x_55, 1);
+lean_inc(x_56);
+if (lean_is_exclusive(x_55)) {
+ lean_ctor_release(x_55, 0);
+ lean_ctor_release(x_55, 1);
+ x_57 = x_55;
 } else {
- lean_dec_ref(x_54);
- x_56 = lean_box(0);
+ lean_dec_ref(x_55);
+ x_57 = lean_box(0);
 }
-if (lean_is_scalar(x_56)) {
- x_57 = lean_alloc_ctor(0, 2, 0);
+if (lean_is_scalar(x_57)) {
+ x_58 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_57 = x_56;
+ x_58 = x_57;
 }
-lean_ctor_set(x_57, 0, x_50);
-lean_ctor_set(x_57, 1, x_55);
-return x_57;
+lean_ctor_set(x_58, 0, x_51);
+lean_ctor_set(x_58, 1, x_56);
+return x_58;
 }
 }
 else
 {
-lean_object* x_58; lean_object* x_59; lean_object* x_60; uint8_t x_61; 
-x_58 = lean_ctor_get(x_28, 0);
-lean_inc(x_58);
-x_59 = lean_ctor_get(x_27, 0);
+lean_object* x_59; lean_object* x_60; lean_object* x_61; uint8_t x_62; 
+x_59 = lean_ctor_get(x_28, 0);
 lean_inc(x_59);
-lean_dec(x_27);
-x_60 = lean_ctor_get(x_28, 1);
+x_60 = lean_ctor_get(x_27, 0);
 lean_inc(x_60);
+lean_dec(x_27);
+x_61 = lean_ctor_get(x_28, 1);
+lean_inc(x_61);
 lean_dec(x_28);
-x_61 = !lean_is_exclusive(x_58);
-if (x_61 == 0)
-{
-lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; uint8_t x_67; 
-x_62 = lean_ctor_get(x_58, 2);
-x_63 = lean_box(0);
-x_64 = l_Lean_RBNode_insert___at_Lean_Meta_Grind_registerParent___spec__4(x_59, x_1, x_63);
-x_65 = l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_registerParent___spec__6(x_62, x_22, x_64);
-lean_ctor_set(x_58, 2, x_65);
-x_66 = lean_st_ref_set(x_3, x_58, x_60);
-x_67 = !lean_is_exclusive(x_66);
-if (x_67 == 0)
-{
-lean_object* x_68; 
-x_68 = lean_ctor_get(x_66, 0);
-lean_dec(x_68);
-lean_ctor_set(x_66, 0, x_63);
-return x_66;
+x_62 = !lean_is_exclusive(x_59);
+if (x_62 == 0)
+{
+lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; uint8_t x_68; 
+x_63 = lean_ctor_get(x_59, 2);
+x_64 = lean_box(0);
+x_65 = l_Lean_RBNode_insert___at_Lean_Meta_Grind_registerParent___spec__4(x_60, x_1, x_64);
+x_66 = l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_registerParent___spec__6(x_63, x_22, x_65);
+lean_ctor_set(x_59, 2, x_66);
+x_67 = lean_st_ref_set(x_3, x_59, x_61);
+x_68 = !lean_is_exclusive(x_67);
+if (x_68 == 0)
+{
+lean_object* x_69; 
+x_69 = lean_ctor_get(x_67, 0);
+lean_dec(x_69);
+lean_ctor_set(x_67, 0, x_64);
+return x_67;
 }
 else
 {
-lean_object* x_69; lean_object* x_70; 
-x_69 = lean_ctor_get(x_66, 1);
-lean_inc(x_69);
-lean_dec(x_66);
-x_70 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_70, 0, x_63);
-lean_ctor_set(x_70, 1, x_69);
-return x_70;
+lean_object* x_70; lean_object* x_71; 
+x_70 = lean_ctor_get(x_67, 1);
+lean_inc(x_70);
+lean_dec(x_67);
+x_71 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_71, 0, x_64);
+lean_ctor_set(x_71, 1, x_70);
+return x_71;
 }
 }
 else
 {
-lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; uint8_t x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; 
-x_71 = lean_ctor_get(x_58, 0);
-x_72 = lean_ctor_get(x_58, 1);
-x_73 = lean_ctor_get(x_58, 2);
-x_74 = lean_ctor_get(x_58, 3);
-x_75 = lean_ctor_get(x_58, 4);
-x_76 = lean_ctor_get_uint8(x_58, sizeof(void*)*7);
-x_77 = lean_ctor_get(x_58, 5);
-x_78 = lean_ctor_get(x_58, 6);
-lean_inc(x_78);
+lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; uint8_t x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; 
+x_72 = lean_ctor_get(x_59, 0);
+x_73 = lean_ctor_get(x_59, 1);
+x_74 = lean_ctor_get(x_59, 2);
+x_75 = lean_ctor_get(x_59, 3);
+x_76 = lean_ctor_get(x_59, 4);
+x_77 = lean_ctor_get(x_59, 5);
+x_78 = lean_ctor_get_uint8(x_59, sizeof(void*)*8);
+x_79 = lean_ctor_get(x_59, 6);
+x_80 = lean_ctor_get(x_59, 7);
+lean_inc(x_80);
+lean_inc(x_79);
 lean_inc(x_77);
+lean_inc(x_76);
 lean_inc(x_75);
 lean_inc(x_74);
 lean_inc(x_73);
 lean_inc(x_72);
-lean_inc(x_71);
-lean_dec(x_58);
-x_79 = lean_box(0);
-x_80 = l_Lean_RBNode_insert___at_Lean_Meta_Grind_registerParent___spec__4(x_59, x_1, x_79);
-x_81 = l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_registerParent___spec__6(x_73, x_22, x_80);
-x_82 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_82, 0, x_71);
-lean_ctor_set(x_82, 1, x_72);
-lean_ctor_set(x_82, 2, x_81);
-lean_ctor_set(x_82, 3, x_74);
-lean_ctor_set(x_82, 4, x_75);
-lean_ctor_set(x_82, 5, x_77);
-lean_ctor_set(x_82, 6, x_78);
-lean_ctor_set_uint8(x_82, sizeof(void*)*7, x_76);
-x_83 = lean_st_ref_set(x_3, x_82, x_60);
-x_84 = lean_ctor_get(x_83, 1);
-lean_inc(x_84);
-if (lean_is_exclusive(x_83)) {
- lean_ctor_release(x_83, 0);
- lean_ctor_release(x_83, 1);
- x_85 = x_83;
+lean_dec(x_59);
+x_81 = lean_box(0);
+x_82 = l_Lean_RBNode_insert___at_Lean_Meta_Grind_registerParent___spec__4(x_60, x_1, x_81);
+x_83 = l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_registerParent___spec__6(x_74, x_22, x_82);
+x_84 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_84, 0, x_72);
+lean_ctor_set(x_84, 1, x_73);
+lean_ctor_set(x_84, 2, x_83);
+lean_ctor_set(x_84, 3, x_75);
+lean_ctor_set(x_84, 4, x_76);
+lean_ctor_set(x_84, 5, x_77);
+lean_ctor_set(x_84, 6, x_79);
+lean_ctor_set(x_84, 7, x_80);
+lean_ctor_set_uint8(x_84, sizeof(void*)*8, x_78);
+x_85 = lean_st_ref_set(x_3, x_84, x_61);
+x_86 = lean_ctor_get(x_85, 1);
+lean_inc(x_86);
+if (lean_is_exclusive(x_85)) {
+ lean_ctor_release(x_85, 0);
+ lean_ctor_release(x_85, 1);
+ x_87 = x_85;
 } else {
- lean_dec_ref(x_83);
- x_85 = lean_box(0);
+ lean_dec_ref(x_85);
+ x_87 = lean_box(0);
 }
-if (lean_is_scalar(x_85)) {
- x_86 = lean_alloc_ctor(0, 2, 0);
+if (lean_is_scalar(x_87)) {
+ x_88 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_86 = x_85;
+ x_88 = x_87;
 }
-lean_ctor_set(x_86, 0, x_79);
-lean_ctor_set(x_86, 1, x_84);
-return x_86;
+lean_ctor_set(x_88, 0, x_81);
+lean_ctor_set(x_88, 1, x_86);
+return x_88;
 }
 }
 }
@@ -10574,53 +11128,56 @@ return x_25;
 }
 else
 {
-lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; uint8_t x_31; lean_object* x_32; lean_object* x_33; size_t x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; 
+lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; uint8_t x_32; lean_object* x_33; lean_object* x_34; size_t x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; 
 x_26 = lean_ctor_get(x_15, 0);
 x_27 = lean_ctor_get(x_15, 1);
 x_28 = lean_ctor_get(x_15, 2);
 x_29 = lean_ctor_get(x_15, 3);
 x_30 = lean_ctor_get(x_15, 4);
-x_31 = lean_ctor_get_uint8(x_15, sizeof(void*)*7);
-x_32 = lean_ctor_get(x_15, 5);
+x_31 = lean_ctor_get(x_15, 5);
+x_32 = lean_ctor_get_uint8(x_15, sizeof(void*)*8);
 x_33 = lean_ctor_get(x_15, 6);
+x_34 = lean_ctor_get(x_15, 7);
+lean_inc(x_34);
 lean_inc(x_33);
-lean_inc(x_32);
+lean_inc(x_31);
 lean_inc(x_30);
 lean_inc(x_29);
 lean_inc(x_28);
 lean_inc(x_27);
 lean_inc(x_26);
 lean_dec(x_15);
-x_34 = lean_ptr_addr(x_1);
-x_35 = l_Lean_PersistentHashMap_erase___at_Lean_Meta_Grind_getParentsAndReset___spec__1(x_28, x_34);
-x_36 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_36, 0, x_26);
-lean_ctor_set(x_36, 1, x_27);
-lean_ctor_set(x_36, 2, x_35);
-lean_ctor_set(x_36, 3, x_29);
-lean_ctor_set(x_36, 4, x_30);
-lean_ctor_set(x_36, 5, x_32);
-lean_ctor_set(x_36, 6, x_33);
-lean_ctor_set_uint8(x_36, sizeof(void*)*7, x_31);
-x_37 = lean_st_ref_set(x_2, x_36, x_16);
-x_38 = lean_ctor_get(x_37, 1);
-lean_inc(x_38);
-if (lean_is_exclusive(x_37)) {
- lean_ctor_release(x_37, 0);
- lean_ctor_release(x_37, 1);
- x_39 = x_37;
+x_35 = lean_ptr_addr(x_1);
+x_36 = l_Lean_PersistentHashMap_erase___at_Lean_Meta_Grind_getParentsAndReset___spec__1(x_28, x_35);
+x_37 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_37, 0, x_26);
+lean_ctor_set(x_37, 1, x_27);
+lean_ctor_set(x_37, 2, x_36);
+lean_ctor_set(x_37, 3, x_29);
+lean_ctor_set(x_37, 4, x_30);
+lean_ctor_set(x_37, 5, x_31);
+lean_ctor_set(x_37, 6, x_33);
+lean_ctor_set(x_37, 7, x_34);
+lean_ctor_set_uint8(x_37, sizeof(void*)*8, x_32);
+x_38 = lean_st_ref_set(x_2, x_37, x_16);
+x_39 = lean_ctor_get(x_38, 1);
+lean_inc(x_39);
+if (lean_is_exclusive(x_38)) {
+ lean_ctor_release(x_38, 0);
+ lean_ctor_release(x_38, 1);
+ x_40 = x_38;
 } else {
- lean_dec_ref(x_37);
- x_39 = lean_box(0);
+ lean_dec_ref(x_38);
+ x_40 = lean_box(0);
 }
-if (lean_is_scalar(x_39)) {
- x_40 = lean_alloc_ctor(0, 2, 0);
+if (lean_is_scalar(x_40)) {
+ x_41 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_40 = x_39;
+ x_41 = x_40;
 }
-lean_ctor_set(x_40, 0, x_12);
-lean_ctor_set(x_40, 1, x_38);
-return x_40;
+lean_ctor_set(x_41, 0, x_12);
+lean_ctor_set(x_41, 1, x_39);
+return x_41;
 }
 }
 }
@@ -10718,7 +11275,7 @@ goto _start;
 LEAN_EXPORT lean_object* l_Lean_Meta_Grind_copyParentsTo(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, lean_object* x_11) {
 _start:
 {
-size_t x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_47; lean_object* x_48; 
+size_t x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_48; lean_object* x_49; 
 x_12 = lean_ptr_addr(x_2);
 x_13 = lean_st_ref_get(x_3, x_11);
 x_14 = lean_ctor_get(x_13, 0);
@@ -10726,47 +11283,47 @@ lean_inc(x_14);
 x_15 = lean_ctor_get(x_13, 1);
 lean_inc(x_15);
 lean_dec(x_13);
-x_47 = lean_ctor_get(x_14, 2);
-lean_inc(x_47);
+x_48 = lean_ctor_get(x_14, 2);
+lean_inc(x_48);
 lean_dec(x_14);
-x_48 = l_Lean_PersistentHashMap_find_x3f___at_Lean_Meta_Grind_registerParent___spec__1(x_47, x_12);
-if (lean_obj_tag(x_48) == 0)
+x_49 = l_Lean_PersistentHashMap_find_x3f___at_Lean_Meta_Grind_registerParent___spec__1(x_48, x_12);
+if (lean_obj_tag(x_49) == 0)
 {
-lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; 
-x_49 = lean_box(0);
-x_50 = l_Lean_RBNode_forIn_visit___at_Lean_Meta_Grind_copyParentsTo___spec__1(x_1, x_49, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_15);
-x_51 = lean_ctor_get(x_50, 0);
-lean_inc(x_51);
-x_52 = lean_ctor_get(x_50, 1);
+lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; 
+x_50 = lean_box(0);
+x_51 = l_Lean_RBNode_forIn_visit___at_Lean_Meta_Grind_copyParentsTo___spec__1(x_1, x_50, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_15);
+x_52 = lean_ctor_get(x_51, 0);
 lean_inc(x_52);
-lean_dec(x_50);
-x_53 = lean_ctor_get(x_51, 0);
+x_53 = lean_ctor_get(x_51, 1);
 lean_inc(x_53);
 lean_dec(x_51);
-x_16 = x_53;
-x_17 = x_52;
-goto block_46;
+x_54 = lean_ctor_get(x_52, 0);
+lean_inc(x_54);
+lean_dec(x_52);
+x_16 = x_54;
+x_17 = x_53;
+goto block_47;
 }
 else
 {
-lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; 
-x_54 = lean_ctor_get(x_48, 0);
-lean_inc(x_54);
-lean_dec(x_48);
-x_55 = l_Lean_RBNode_forIn_visit___at_Lean_Meta_Grind_copyParentsTo___spec__1(x_1, x_54, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_15);
-x_56 = lean_ctor_get(x_55, 0);
-lean_inc(x_56);
-x_57 = lean_ctor_get(x_55, 1);
+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_49, 0);
+lean_inc(x_55);
+lean_dec(x_49);
+x_56 = l_Lean_RBNode_forIn_visit___at_Lean_Meta_Grind_copyParentsTo___spec__1(x_1, x_55, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_15);
+x_57 = lean_ctor_get(x_56, 0);
 lean_inc(x_57);
-lean_dec(x_55);
-x_58 = lean_ctor_get(x_56, 0);
+x_58 = lean_ctor_get(x_56, 1);
 lean_inc(x_58);
 lean_dec(x_56);
-x_16 = x_58;
-x_17 = x_57;
-goto block_46;
+x_59 = lean_ctor_get(x_57, 0);
+lean_inc(x_59);
+lean_dec(x_57);
+x_16 = x_59;
+x_17 = x_58;
+goto block_47;
 }
-block_46:
+block_47:
 {
 lean_object* x_18; lean_object* x_19; lean_object* x_20; uint8_t x_21; 
 x_18 = lean_st_ref_take(x_3, x_17);
@@ -10808,53 +11365,56 @@ return x_30;
 }
 else
 {
-lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; uint8_t x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; 
+lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; uint8_t x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; 
 x_31 = lean_ctor_get(x_19, 0);
 x_32 = lean_ctor_get(x_19, 1);
 x_33 = lean_ctor_get(x_19, 2);
 x_34 = lean_ctor_get(x_19, 3);
 x_35 = lean_ctor_get(x_19, 4);
-x_36 = lean_ctor_get_uint8(x_19, sizeof(void*)*7);
-x_37 = lean_ctor_get(x_19, 5);
+x_36 = lean_ctor_get(x_19, 5);
+x_37 = lean_ctor_get_uint8(x_19, sizeof(void*)*8);
 x_38 = lean_ctor_get(x_19, 6);
+x_39 = lean_ctor_get(x_19, 7);
+lean_inc(x_39);
 lean_inc(x_38);
-lean_inc(x_37);
+lean_inc(x_36);
 lean_inc(x_35);
 lean_inc(x_34);
 lean_inc(x_33);
 lean_inc(x_32);
 lean_inc(x_31);
 lean_dec(x_19);
-x_39 = l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_registerParent___spec__6(x_33, x_12, x_16);
-x_40 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_40, 0, x_31);
-lean_ctor_set(x_40, 1, x_32);
-lean_ctor_set(x_40, 2, x_39);
-lean_ctor_set(x_40, 3, x_34);
-lean_ctor_set(x_40, 4, x_35);
-lean_ctor_set(x_40, 5, x_37);
-lean_ctor_set(x_40, 6, x_38);
-lean_ctor_set_uint8(x_40, sizeof(void*)*7, x_36);
-x_41 = lean_st_ref_set(x_3, x_40, x_20);
-x_42 = lean_ctor_get(x_41, 1);
-lean_inc(x_42);
-if (lean_is_exclusive(x_41)) {
- lean_ctor_release(x_41, 0);
- lean_ctor_release(x_41, 1);
- x_43 = x_41;
+x_40 = l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_registerParent___spec__6(x_33, x_12, x_16);
+x_41 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_41, 0, x_31);
+lean_ctor_set(x_41, 1, x_32);
+lean_ctor_set(x_41, 2, x_40);
+lean_ctor_set(x_41, 3, x_34);
+lean_ctor_set(x_41, 4, x_35);
+lean_ctor_set(x_41, 5, x_36);
+lean_ctor_set(x_41, 6, x_38);
+lean_ctor_set(x_41, 7, x_39);
+lean_ctor_set_uint8(x_41, sizeof(void*)*8, x_37);
+x_42 = lean_st_ref_set(x_3, x_41, x_20);
+x_43 = lean_ctor_get(x_42, 1);
+lean_inc(x_43);
+if (lean_is_exclusive(x_42)) {
+ lean_ctor_release(x_42, 0);
+ lean_ctor_release(x_42, 1);
+ x_44 = x_42;
 } else {
- lean_dec_ref(x_41);
- x_43 = lean_box(0);
+ lean_dec_ref(x_42);
+ x_44 = lean_box(0);
 }
-x_44 = lean_box(0);
-if (lean_is_scalar(x_43)) {
- x_45 = lean_alloc_ctor(0, 2, 0);
+x_45 = lean_box(0);
+if (lean_is_scalar(x_44)) {
+ x_46 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_45 = x_43;
+ x_46 = x_44;
 }
-lean_ctor_set(x_45, 0, x_44);
-lean_ctor_set(x_45, 1, x_42);
-return x_45;
+lean_ctor_set(x_46, 0, x_45);
+lean_ctor_set(x_46, 1, x_43);
+return x_46;
 }
 }
 }
@@ -11508,54 +12068,57 @@ return x_25;
 }
 else
 {
-lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; uint8_t x_31; lean_object* x_32; lean_object* x_33; size_t x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; 
+lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; uint8_t x_32; lean_object* x_33; lean_object* x_34; size_t x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; 
 x_26 = lean_ctor_get(x_13, 0);
 x_27 = lean_ctor_get(x_13, 1);
 x_28 = lean_ctor_get(x_13, 2);
 x_29 = lean_ctor_get(x_13, 3);
 x_30 = lean_ctor_get(x_13, 4);
-x_31 = lean_ctor_get_uint8(x_13, sizeof(void*)*7);
-x_32 = lean_ctor_get(x_13, 5);
+x_31 = lean_ctor_get(x_13, 5);
+x_32 = lean_ctor_get_uint8(x_13, sizeof(void*)*8);
 x_33 = lean_ctor_get(x_13, 6);
+x_34 = lean_ctor_get(x_13, 7);
+lean_inc(x_34);
 lean_inc(x_33);
-lean_inc(x_32);
+lean_inc(x_31);
 lean_inc(x_30);
 lean_inc(x_29);
 lean_inc(x_28);
 lean_inc(x_27);
 lean_inc(x_26);
 lean_dec(x_13);
-x_34 = lean_ptr_addr(x_1);
-x_35 = l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_setENode___spec__1(x_27, x_34, x_2);
-x_36 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_36, 0, x_26);
-lean_ctor_set(x_36, 1, x_35);
-lean_ctor_set(x_36, 2, x_28);
-lean_ctor_set(x_36, 3, x_29);
-lean_ctor_set(x_36, 4, x_30);
-lean_ctor_set(x_36, 5, x_32);
-lean_ctor_set(x_36, 6, x_33);
-lean_ctor_set_uint8(x_36, sizeof(void*)*7, x_31);
-x_37 = lean_st_ref_set(x_3, x_36, x_14);
-x_38 = lean_ctor_get(x_37, 1);
-lean_inc(x_38);
-if (lean_is_exclusive(x_37)) {
- lean_ctor_release(x_37, 0);
- lean_ctor_release(x_37, 1);
- x_39 = x_37;
+x_35 = lean_ptr_addr(x_1);
+x_36 = l_Lean_PersistentHashMap_insert___at_Lean_Meta_Grind_setENode___spec__1(x_27, x_35, x_2);
+x_37 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_37, 0, x_26);
+lean_ctor_set(x_37, 1, x_36);
+lean_ctor_set(x_37, 2, x_28);
+lean_ctor_set(x_37, 3, x_29);
+lean_ctor_set(x_37, 4, x_30);
+lean_ctor_set(x_37, 5, x_31);
+lean_ctor_set(x_37, 6, x_33);
+lean_ctor_set(x_37, 7, x_34);
+lean_ctor_set_uint8(x_37, sizeof(void*)*8, x_32);
+x_38 = lean_st_ref_set(x_3, x_37, x_14);
+x_39 = lean_ctor_get(x_38, 1);
+lean_inc(x_39);
+if (lean_is_exclusive(x_38)) {
+ lean_ctor_release(x_38, 0);
+ lean_ctor_release(x_38, 1);
+ x_40 = x_38;
 } else {
- lean_dec_ref(x_37);
- x_39 = lean_box(0);
+ lean_dec_ref(x_38);
+ x_40 = lean_box(0);
 }
-x_40 = lean_box(0);
-if (lean_is_scalar(x_39)) {
- x_41 = lean_alloc_ctor(0, 2, 0);
+x_41 = lean_box(0);
+if (lean_is_scalar(x_40)) {
+ x_42 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_41 = x_39;
+ x_42 = x_40;
 }
-lean_ctor_set(x_41, 0, x_40);
-lean_ctor_set(x_41, 1, x_38);
-return x_41;
+lean_ctor_set(x_42, 0, x_41);
+lean_ctor_set(x_42, 1, x_39);
+return x_42;
 }
 }
 }
@@ -11640,10 +12203,10 @@ lean_inc(x_19);
 lean_dec(x_17);
 x_20 = lean_box(0);
 x_21 = l_Lean_Expr_isLambda(x_1);
-x_22 = lean_ctor_get(x_18, 6);
+x_22 = lean_ctor_get(x_18, 7);
 lean_inc(x_22);
 lean_dec(x_18);
-x_23 = lean_ctor_get(x_15, 5);
+x_23 = lean_ctor_get(x_15, 6);
 lean_inc(x_23);
 lean_dec(x_15);
 x_24 = 0;
@@ -11680,10 +12243,10 @@ x_32 = !lean_is_exclusive(x_30);
 if (x_32 == 0)
 {
 lean_object* x_33; lean_object* x_34; lean_object* x_35; uint8_t x_36; 
-x_33 = lean_ctor_get(x_30, 6);
+x_33 = lean_ctor_get(x_30, 7);
 x_34 = lean_nat_add(x_33, x_25);
 lean_dec(x_33);
-lean_ctor_set(x_30, 6, x_34);
+lean_ctor_set(x_30, 7, x_34);
 x_35 = lean_st_ref_set(x_5, x_30, x_31);
 x_36 = !lean_is_exclusive(x_35);
 if (x_36 == 0)
@@ -11710,54 +12273,57 @@ return x_41;
 }
 else
 {
-lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; uint8_t x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; 
+lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; uint8_t x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; 
 x_42 = lean_ctor_get(x_30, 0);
 x_43 = lean_ctor_get(x_30, 1);
 x_44 = lean_ctor_get(x_30, 2);
 x_45 = lean_ctor_get(x_30, 3);
 x_46 = lean_ctor_get(x_30, 4);
-x_47 = lean_ctor_get_uint8(x_30, sizeof(void*)*7);
-x_48 = lean_ctor_get(x_30, 5);
+x_47 = lean_ctor_get(x_30, 5);
+x_48 = lean_ctor_get_uint8(x_30, sizeof(void*)*8);
 x_49 = lean_ctor_get(x_30, 6);
+x_50 = lean_ctor_get(x_30, 7);
+lean_inc(x_50);
 lean_inc(x_49);
-lean_inc(x_48);
+lean_inc(x_47);
 lean_inc(x_46);
 lean_inc(x_45);
 lean_inc(x_44);
 lean_inc(x_43);
 lean_inc(x_42);
 lean_dec(x_30);
-x_50 = lean_nat_add(x_49, x_25);
-lean_dec(x_49);
-x_51 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_51, 0, x_42);
-lean_ctor_set(x_51, 1, x_43);
-lean_ctor_set(x_51, 2, x_44);
-lean_ctor_set(x_51, 3, x_45);
-lean_ctor_set(x_51, 4, x_46);
-lean_ctor_set(x_51, 5, x_48);
-lean_ctor_set(x_51, 6, x_50);
-lean_ctor_set_uint8(x_51, sizeof(void*)*7, x_47);
-x_52 = lean_st_ref_set(x_5, x_51, x_31);
-x_53 = lean_ctor_get(x_52, 1);
-lean_inc(x_53);
-if (lean_is_exclusive(x_52)) {
- lean_ctor_release(x_52, 0);
- lean_ctor_release(x_52, 1);
- x_54 = x_52;
+x_51 = lean_nat_add(x_50, x_25);
+lean_dec(x_50);
+x_52 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_52, 0, x_42);
+lean_ctor_set(x_52, 1, x_43);
+lean_ctor_set(x_52, 2, x_44);
+lean_ctor_set(x_52, 3, x_45);
+lean_ctor_set(x_52, 4, x_46);
+lean_ctor_set(x_52, 5, x_47);
+lean_ctor_set(x_52, 6, x_49);
+lean_ctor_set(x_52, 7, x_51);
+lean_ctor_set_uint8(x_52, sizeof(void*)*8, x_48);
+x_53 = lean_st_ref_set(x_5, x_52, x_31);
+x_54 = lean_ctor_get(x_53, 1);
+lean_inc(x_54);
+if (lean_is_exclusive(x_53)) {
+ lean_ctor_release(x_53, 0);
+ lean_ctor_release(x_53, 1);
+ x_55 = x_53;
 } else {
- lean_dec_ref(x_52);
- x_54 = lean_box(0);
+ lean_dec_ref(x_53);
+ x_55 = lean_box(0);
 }
-x_55 = lean_box(0);
-if (lean_is_scalar(x_54)) {
- x_56 = lean_alloc_ctor(0, 2, 0);
+x_56 = lean_box(0);
+if (lean_is_scalar(x_55)) {
+ x_57 = lean_alloc_ctor(0, 2, 0);
 } else {
- x_56 = x_54;
+ x_57 = x_55;
 }
-lean_ctor_set(x_56, 0, x_55);
-lean_ctor_set(x_56, 1, x_53);
-return x_56;
+lean_ctor_set(x_57, 0, x_56);
+lean_ctor_set(x_57, 1, x_54);
+return x_57;
 }
 }
 }
@@ -11976,325 +12542,612 @@ lean_dec(x_3);
 return x_12;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlM___at_Lean_Meta_Grind_getENodes___spec__2(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isInconsistent(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_4; 
-x_4 = l_Lean_PersistentHashMap_foldlMAux___at_Lean_MetavarContext_getExprAssignmentDomain___spec__2___rarg(x_2, x_1, x_3);
-return x_4;
+lean_object* x_10; uint8_t x_11; 
+x_10 = lean_st_ref_get(x_1, x_9);
+x_11 = !lean_is_exclusive(x_10);
+if (x_11 == 0)
+{
+lean_object* x_12; uint8_t x_13; lean_object* x_14; 
+x_12 = lean_ctor_get(x_10, 0);
+x_13 = lean_ctor_get_uint8(x_12, sizeof(void*)*8);
+lean_dec(x_12);
+x_14 = lean_box(x_13);
+lean_ctor_set(x_10, 0, x_14);
+return x_10;
+}
+else
+{
+lean_object* x_15; lean_object* x_16; uint8_t x_17; lean_object* x_18; lean_object* x_19; 
+x_15 = lean_ctor_get(x_10, 0);
+x_16 = lean_ctor_get(x_10, 1);
+lean_inc(x_16);
+lean_inc(x_15);
+lean_dec(x_10);
+x_17 = lean_ctor_get_uint8(x_15, sizeof(void*)*8);
+lean_dec(x_15);
+x_18 = lean_box(x_17);
+x_19 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_19, 0, x_18);
+lean_ctor_set(x_19, 1, x_16);
+return x_19;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___lambda__1(lean_object* x_1, size_t x_2, lean_object* x_3) {
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_isInconsistent___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_4; lean_object* x_5; lean_object* x_6; 
-x_4 = lean_box_usize(x_2);
-x_5 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_5, 0, x_4);
-lean_ctor_set(x_5, 1, x_3);
-x_6 = lean_array_push(x_1, x_5);
-return x_6;
+lean_object* x_10; 
+x_10 = l_Lean_Meta_Grind_isInconsistent(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+lean_dec(x_8);
+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_10;
 }
 }
-static lean_object* _init_l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__1() {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqProof___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, lean_object* x_10, lean_object* x_11) {
 _start:
 {
-lean_object* x_1; lean_object* x_2; 
-x_1 = lean_box(0);
-x_2 = lean_array_mk(x_1);
-return x_2;
+lean_object* x_12; 
+x_12 = lean_grind_mk_eq_proof(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+return x_12;
 }
 }
-static lean_object* _init_l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__2() {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqTrueProof(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:
 {
-lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___lambda__1___boxed), 3, 0);
-return x_1;
+lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; 
+x_11 = l_Lean_Meta_Grind_getTrueExpr___rarg(x_5, x_6, x_7, x_8, x_9, x_10);
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+x_13 = lean_ctor_get(x_11, 1);
+lean_inc(x_13);
+lean_dec(x_11);
+x_14 = lean_grind_mk_eq_proof(x_1, x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
+return x_14;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1(lean_object* x_1) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkEqFalseProof(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:
 {
-lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_2 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__2;
-x_3 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__1;
-x_4 = l_Lean_PersistentHashMap_foldlMAux___at_Lean_MetavarContext_getExprAssignmentDomain___spec__2___rarg(x_2, x_1, x_3);
-return x_4;
+lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; 
+x_11 = l_Lean_Meta_Grind_getFalseExpr___rarg(x_5, x_6, x_7, x_8, x_9, x_10);
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+x_13 = lean_ctor_get(x_11, 1);
+lean_inc(x_13);
+lean_dec(x_11);
+x_14 = lean_grind_mk_eq_proof(x_1, x_12, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
+return x_14;
 }
 }
-LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Meta_Grind_getENodes___spec__3(size_t x_1, size_t x_2, lean_object* x_3) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_markAsInconsistent(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:
 {
-uint8_t x_4; 
-x_4 = lean_usize_dec_lt(x_2, x_1);
-if (x_4 == 0)
+lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13; 
+x_10 = lean_st_ref_take(x_1, x_9);
+x_11 = lean_ctor_get(x_10, 0);
+lean_inc(x_11);
+x_12 = lean_ctor_get(x_10, 1);
+lean_inc(x_12);
+lean_dec(x_10);
+x_13 = !lean_is_exclusive(x_11);
+if (x_13 == 0)
 {
-return x_3;
+uint8_t x_14; lean_object* x_15; uint8_t x_16; 
+x_14 = 1;
+lean_ctor_set_uint8(x_11, sizeof(void*)*8, x_14);
+x_15 = lean_st_ref_set(x_1, x_11, x_12);
+x_16 = !lean_is_exclusive(x_15);
+if (x_16 == 0)
+{
+lean_object* x_17; lean_object* x_18; 
+x_17 = lean_ctor_get(x_15, 0);
+lean_dec(x_17);
+x_18 = lean_box(0);
+lean_ctor_set(x_15, 0, x_18);
+return x_15;
 }
 else
 {
-lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; size_t x_9; size_t x_10; lean_object* x_11; 
-x_5 = lean_array_uget(x_3, x_2);
-x_6 = lean_unsigned_to_nat(0u);
-x_7 = lean_array_uset(x_3, x_2, x_6);
-x_8 = lean_ctor_get(x_5, 1);
-lean_inc(x_8);
-lean_dec(x_5);
-x_9 = 1;
-x_10 = lean_usize_add(x_2, x_9);
-x_11 = lean_array_uset(x_7, x_2, x_8);
-x_2 = x_10;
-x_3 = x_11;
-goto _start;
-}
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_19 = lean_ctor_get(x_15, 1);
+lean_inc(x_19);
+lean_dec(x_15);
+x_20 = lean_box(0);
+x_21 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_21, 0, x_20);
+lean_ctor_set(x_21, 1, x_19);
+return x_21;
 }
 }
-LEAN_EXPORT uint8_t l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___lambda__1(lean_object* x_1, lean_object* x_2) {
-_start:
+else
 {
-lean_object* x_3; lean_object* x_4; uint8_t x_5; 
-x_3 = lean_ctor_get(x_1, 7);
-x_4 = lean_ctor_get(x_2, 7);
-x_5 = lean_nat_dec_lt(x_3, x_4);
-return x_5;
+lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; uint8_t x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_22 = lean_ctor_get(x_11, 0);
+x_23 = lean_ctor_get(x_11, 1);
+x_24 = lean_ctor_get(x_11, 2);
+x_25 = lean_ctor_get(x_11, 3);
+x_26 = lean_ctor_get(x_11, 4);
+x_27 = lean_ctor_get(x_11, 5);
+x_28 = lean_ctor_get(x_11, 6);
+x_29 = lean_ctor_get(x_11, 7);
+lean_inc(x_29);
+lean_inc(x_28);
+lean_inc(x_27);
+lean_inc(x_26);
+lean_inc(x_25);
+lean_inc(x_24);
+lean_inc(x_23);
+lean_inc(x_22);
+lean_dec(x_11);
+x_30 = 1;
+x_31 = lean_alloc_ctor(0, 8, 1);
+lean_ctor_set(x_31, 0, x_22);
+lean_ctor_set(x_31, 1, x_23);
+lean_ctor_set(x_31, 2, x_24);
+lean_ctor_set(x_31, 3, x_25);
+lean_ctor_set(x_31, 4, x_26);
+lean_ctor_set(x_31, 5, x_27);
+lean_ctor_set(x_31, 6, x_28);
+lean_ctor_set(x_31, 7, x_29);
+lean_ctor_set_uint8(x_31, sizeof(void*)*8, x_30);
+x_32 = lean_st_ref_set(x_1, x_31, x_12);
+x_33 = lean_ctor_get(x_32, 1);
+lean_inc(x_33);
+if (lean_is_exclusive(x_32)) {
+ lean_ctor_release(x_32, 0);
+ lean_ctor_release(x_32, 1);
+ x_34 = x_32;
+} else {
+ lean_dec_ref(x_32);
+ x_34 = lean_box(0);
 }
+x_35 = lean_box(0);
+if (lean_is_scalar(x_34)) {
+ x_36 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_36 = x_34;
 }
-static lean_object* _init_l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___lambda__1___boxed), 2, 0);
-return x_1;
+lean_ctor_set(x_36, 0, x_35);
+lean_ctor_set(x_36, 1, x_33);
+return x_36;
 }
 }
-LEAN_EXPORT lean_object* l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(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_EXPORT lean_object* l_Lean_Meta_Grind_markAsInconsistent___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:
 {
-uint8_t x_7; 
-x_7 = lean_nat_dec_lt(x_3, x_4);
-if (x_7 == 0)
-{
+lean_object* x_10; 
+x_10 = l_Lean_Meta_Grind_markAsInconsistent(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
 lean_dec(x_3);
-return x_2;
+lean_dec(x_2);
+lean_dec(x_1);
+return x_10;
 }
-else
+}
+LEAN_EXPORT lean_object* l_Lean_MVarId_isAssigned___at_Lean_Meta_Grind_closeGoal___spec__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:
 {
-lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; uint8_t x_12; 
-x_8 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___closed__1;
-lean_inc(x_3);
-x_9 = l___private_Init_Data_Array_QSort_0__Array_qpartition___rarg(x_1, x_2, x_8, x_3, x_4, lean_box(0), lean_box(0));
-x_10 = lean_ctor_get(x_9, 0);
-lean_inc(x_10);
-x_11 = lean_ctor_get(x_9, 1);
-lean_inc(x_11);
-lean_dec(x_9);
-x_12 = lean_nat_dec_le(x_4, x_10);
+lean_object* x_11; uint8_t x_12; 
+x_11 = lean_st_ref_get(x_7, x_10);
+x_12 = !lean_is_exclusive(x_11);
 if (x_12 == 0)
 {
-lean_object* x_13; lean_object* x_14; lean_object* x_15; 
-x_13 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(x_1, x_11, x_3, x_10, lean_box(0), lean_box(0));
-x_14 = lean_unsigned_to_nat(1u);
-x_15 = lean_nat_add(x_10, x_14);
-lean_dec(x_10);
-x_2 = x_13;
-x_3 = x_15;
-x_5 = lean_box(0);
-x_6 = lean_box(0);
-goto _start;
+lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; lean_object* x_17; 
+x_13 = lean_ctor_get(x_11, 0);
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+lean_dec(x_13);
+x_15 = lean_ctor_get(x_14, 7);
+lean_inc(x_15);
+lean_dec(x_14);
+x_16 = l_Lean_PersistentHashMap_contains___at_Lean_MVarId_isAssigned___spec__1(x_15, x_1);
+x_17 = lean_box(x_16);
+lean_ctor_set(x_11, 0, x_17);
+return x_11;
 }
 else
 {
-lean_dec(x_10);
-lean_dec(x_3);
-return x_11;
-}
+lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; uint8_t x_22; lean_object* x_23; lean_object* x_24; 
+x_18 = lean_ctor_get(x_11, 0);
+x_19 = lean_ctor_get(x_11, 1);
+lean_inc(x_19);
+lean_inc(x_18);
+lean_dec(x_11);
+x_20 = lean_ctor_get(x_18, 0);
+lean_inc(x_20);
+lean_dec(x_18);
+x_21 = lean_ctor_get(x_20, 7);
+lean_inc(x_21);
+lean_dec(x_20);
+x_22 = l_Lean_PersistentHashMap_contains___at_Lean_MVarId_isAssigned___spec__1(x_21, x_1);
+x_23 = lean_box(x_22);
+x_24 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_24, 0, x_23);
+lean_ctor_set(x_24, 1, x_19);
+return x_24;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getENodes(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_EXPORT lean_object* l_Lean_MVarId_assign___at_Lean_Meta_Grind_closeGoal___spec__2(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, lean_object* x_11) {
 _start:
 {
-lean_object* x_10; uint8_t x_11; 
-x_10 = lean_st_ref_get(x_1, x_9);
-x_11 = !lean_is_exclusive(x_10);
-if (x_11 == 0)
-{
-lean_object* x_12; lean_object* x_13; lean_object* x_14; size_t x_15; size_t x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; uint8_t x_22; 
-x_12 = lean_ctor_get(x_10, 0);
-x_13 = lean_ctor_get(x_12, 1);
+lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; 
+x_12 = lean_st_ref_take(x_8, x_11);
+x_13 = lean_ctor_get(x_12, 0);
 lean_inc(x_13);
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_ctor_get(x_12, 1);
+lean_inc(x_15);
 lean_dec(x_12);
-x_14 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1(x_13);
-lean_dec(x_13);
-x_15 = lean_array_size(x_14);
-x_16 = 0;
-x_17 = l_Array_mapMUnsafe_map___at_Lean_Meta_Grind_getENodes___spec__3(x_15, x_16, x_14);
-x_18 = lean_array_get_size(x_17);
-x_19 = lean_unsigned_to_nat(1u);
-x_20 = lean_nat_sub(x_18, x_19);
-x_21 = lean_unsigned_to_nat(0u);
-x_22 = lean_nat_dec_eq(x_18, x_21);
-if (x_22 == 0)
+x_16 = !lean_is_exclusive(x_13);
+if (x_16 == 0)
 {
-uint8_t x_23; 
-x_23 = lean_nat_dec_le(x_21, x_20);
-if (x_23 == 0)
+lean_object* x_17; uint8_t x_18; 
+x_17 = lean_ctor_get(x_13, 0);
+lean_dec(x_17);
+x_18 = !lean_is_exclusive(x_14);
+if (x_18 == 0)
 {
-lean_object* x_24; 
-lean_inc(x_20);
-x_24 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(x_18, x_17, x_20, x_20, lean_box(0), lean_box(0));
-lean_dec(x_20);
-lean_dec(x_18);
-lean_ctor_set(x_10, 0, x_24);
-return x_10;
-}
-else
+lean_object* x_19; lean_object* x_20; lean_object* x_21; uint8_t x_22; 
+x_19 = lean_ctor_get(x_14, 7);
+x_20 = l_Lean_PersistentHashMap_insert___at_Lean_MVarId_assign___spec__1(x_19, x_1, x_2);
+lean_ctor_set(x_14, 7, x_20);
+x_21 = lean_st_ref_set(x_8, x_13, x_15);
+x_22 = !lean_is_exclusive(x_21);
+if (x_22 == 0)
 {
-lean_object* x_25; 
-x_25 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(x_18, x_17, x_21, x_20, lean_box(0), lean_box(0));
-lean_dec(x_20);
-lean_dec(x_18);
-lean_ctor_set(x_10, 0, x_25);
-return x_10;
-}
+lean_object* x_23; lean_object* x_24; 
+x_23 = lean_ctor_get(x_21, 0);
+lean_dec(x_23);
+x_24 = lean_box(0);
+lean_ctor_set(x_21, 0, x_24);
+return x_21;
 }
 else
 {
-lean_dec(x_20);
-lean_dec(x_18);
-lean_ctor_set(x_10, 0, x_17);
-return x_10;
+lean_object* x_25; lean_object* x_26; lean_object* x_27; 
+x_25 = lean_ctor_get(x_21, 1);
+lean_inc(x_25);
+lean_dec(x_21);
+x_26 = lean_box(0);
+x_27 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_27, 0, x_26);
+lean_ctor_set(x_27, 1, x_25);
+return x_27;
 }
 }
 else
 {
-lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; size_t x_30; size_t x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; uint8_t x_37; 
-x_26 = lean_ctor_get(x_10, 0);
-x_27 = lean_ctor_get(x_10, 1);
-lean_inc(x_27);
-lean_inc(x_26);
-lean_dec(x_10);
-x_28 = lean_ctor_get(x_26, 1);
-lean_inc(x_28);
-lean_dec(x_26);
-x_29 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1(x_28);
-lean_dec(x_28);
-x_30 = lean_array_size(x_29);
-x_31 = 0;
-x_32 = l_Array_mapMUnsafe_map___at_Lean_Meta_Grind_getENodes___spec__3(x_30, x_31, x_29);
-x_33 = lean_array_get_size(x_32);
-x_34 = lean_unsigned_to_nat(1u);
-x_35 = lean_nat_sub(x_33, x_34);
-x_36 = lean_unsigned_to_nat(0u);
-x_37 = lean_nat_dec_eq(x_33, x_36);
-if (x_37 == 0)
-{
-uint8_t x_38; 
-x_38 = lean_nat_dec_le(x_36, x_35);
-if (x_38 == 0)
-{
-lean_object* x_39; lean_object* x_40; 
+lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; 
+x_28 = lean_ctor_get(x_14, 0);
+x_29 = lean_ctor_get(x_14, 1);
+x_30 = lean_ctor_get(x_14, 2);
+x_31 = lean_ctor_get(x_14, 3);
+x_32 = lean_ctor_get(x_14, 4);
+x_33 = lean_ctor_get(x_14, 5);
+x_34 = lean_ctor_get(x_14, 6);
+x_35 = lean_ctor_get(x_14, 7);
+x_36 = lean_ctor_get(x_14, 8);
+lean_inc(x_36);
 lean_inc(x_35);
-x_39 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(x_33, x_32, x_35, x_35, lean_box(0), lean_box(0));
-lean_dec(x_35);
-lean_dec(x_33);
-x_40 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_40, 0, x_39);
-lean_ctor_set(x_40, 1, x_27);
-return x_40;
+lean_inc(x_34);
+lean_inc(x_33);
+lean_inc(x_32);
+lean_inc(x_31);
+lean_inc(x_30);
+lean_inc(x_29);
+lean_inc(x_28);
+lean_dec(x_14);
+x_37 = l_Lean_PersistentHashMap_insert___at_Lean_MVarId_assign___spec__1(x_35, x_1, x_2);
+x_38 = lean_alloc_ctor(0, 9, 0);
+lean_ctor_set(x_38, 0, x_28);
+lean_ctor_set(x_38, 1, x_29);
+lean_ctor_set(x_38, 2, x_30);
+lean_ctor_set(x_38, 3, x_31);
+lean_ctor_set(x_38, 4, x_32);
+lean_ctor_set(x_38, 5, x_33);
+lean_ctor_set(x_38, 6, x_34);
+lean_ctor_set(x_38, 7, x_37);
+lean_ctor_set(x_38, 8, x_36);
+lean_ctor_set(x_13, 0, x_38);
+x_39 = lean_st_ref_set(x_8, x_13, x_15);
+x_40 = lean_ctor_get(x_39, 1);
+lean_inc(x_40);
+if (lean_is_exclusive(x_39)) {
+ lean_ctor_release(x_39, 0);
+ lean_ctor_release(x_39, 1);
+ x_41 = x_39;
+} else {
+ lean_dec_ref(x_39);
+ x_41 = lean_box(0);
 }
-else
-{
-lean_object* x_41; lean_object* x_42; 
-x_41 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(x_33, x_32, x_36, x_35, lean_box(0), lean_box(0));
-lean_dec(x_35);
-lean_dec(x_33);
-x_42 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_42, 0, x_41);
-lean_ctor_set(x_42, 1, x_27);
-return x_42;
+x_42 = lean_box(0);
+if (lean_is_scalar(x_41)) {
+ x_43 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_43 = x_41;
+}
+lean_ctor_set(x_43, 0, x_42);
+lean_ctor_set(x_43, 1, x_40);
+return x_43;
 }
 }
 else
 {
-lean_object* x_43; 
-lean_dec(x_35);
-lean_dec(x_33);
-x_43 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_43, 0, x_32);
-lean_ctor_set(x_43, 1, x_27);
-return x_43;
-}
+lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; 
+x_44 = lean_ctor_get(x_13, 1);
+x_45 = lean_ctor_get(x_13, 2);
+x_46 = lean_ctor_get(x_13, 3);
+x_47 = lean_ctor_get(x_13, 4);
+lean_inc(x_47);
+lean_inc(x_46);
+lean_inc(x_45);
+lean_inc(x_44);
+lean_dec(x_13);
+x_48 = lean_ctor_get(x_14, 0);
+lean_inc(x_48);
+x_49 = lean_ctor_get(x_14, 1);
+lean_inc(x_49);
+x_50 = lean_ctor_get(x_14, 2);
+lean_inc(x_50);
+x_51 = lean_ctor_get(x_14, 3);
+lean_inc(x_51);
+x_52 = lean_ctor_get(x_14, 4);
+lean_inc(x_52);
+x_53 = lean_ctor_get(x_14, 5);
+lean_inc(x_53);
+x_54 = lean_ctor_get(x_14, 6);
+lean_inc(x_54);
+x_55 = lean_ctor_get(x_14, 7);
+lean_inc(x_55);
+x_56 = lean_ctor_get(x_14, 8);
+lean_inc(x_56);
+if (lean_is_exclusive(x_14)) {
+ lean_ctor_release(x_14, 0);
+ lean_ctor_release(x_14, 1);
+ lean_ctor_release(x_14, 2);
+ lean_ctor_release(x_14, 3);
+ lean_ctor_release(x_14, 4);
+ lean_ctor_release(x_14, 5);
+ lean_ctor_release(x_14, 6);
+ lean_ctor_release(x_14, 7);
+ lean_ctor_release(x_14, 8);
+ x_57 = x_14;
+} else {
+ lean_dec_ref(x_14);
+ x_57 = lean_box(0);
+}
+x_58 = l_Lean_PersistentHashMap_insert___at_Lean_MVarId_assign___spec__1(x_55, x_1, x_2);
+if (lean_is_scalar(x_57)) {
+ x_59 = lean_alloc_ctor(0, 9, 0);
+} else {
+ x_59 = x_57;
+}
+lean_ctor_set(x_59, 0, x_48);
+lean_ctor_set(x_59, 1, x_49);
+lean_ctor_set(x_59, 2, x_50);
+lean_ctor_set(x_59, 3, x_51);
+lean_ctor_set(x_59, 4, x_52);
+lean_ctor_set(x_59, 5, x_53);
+lean_ctor_set(x_59, 6, x_54);
+lean_ctor_set(x_59, 7, x_58);
+lean_ctor_set(x_59, 8, x_56);
+x_60 = lean_alloc_ctor(0, 5, 0);
+lean_ctor_set(x_60, 0, x_59);
+lean_ctor_set(x_60, 1, x_44);
+lean_ctor_set(x_60, 2, x_45);
+lean_ctor_set(x_60, 3, x_46);
+lean_ctor_set(x_60, 4, x_47);
+x_61 = lean_st_ref_set(x_8, x_60, x_15);
+x_62 = lean_ctor_get(x_61, 1);
+lean_inc(x_62);
+if (lean_is_exclusive(x_61)) {
+ lean_ctor_release(x_61, 0);
+ lean_ctor_release(x_61, 1);
+ x_63 = x_61;
+} else {
+ lean_dec_ref(x_61);
+ x_63 = lean_box(0);
 }
+x_64 = lean_box(0);
+if (lean_is_scalar(x_63)) {
+ x_65 = lean_alloc_ctor(0, 2, 0);
+} else {
+ x_65 = x_63;
 }
+lean_ctor_set(x_65, 0, x_64);
+lean_ctor_set(x_65, 1, x_62);
+return x_65;
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlM___at_Lean_Meta_Grind_getENodes___spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
-_start:
-{
-lean_object* x_4; 
-x_4 = l_Lean_PersistentHashMap_foldlM___at_Lean_Meta_Grind_getENodes___spec__2(x_1, x_2, x_3);
-lean_dec(x_1);
-return x_4;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_closeGoal(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:
 {
-size_t x_4; lean_object* x_5; 
-x_4 = lean_unbox_usize(x_2);
-lean_dec(x_2);
-x_5 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___lambda__1(x_1, x_4, x_3);
-return x_5;
+lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; 
+x_11 = l_Lean_Meta_Grind_markAsInconsistent(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+x_12 = lean_ctor_get(x_11, 1);
+lean_inc(x_12);
+lean_dec(x_11);
+x_13 = lean_st_ref_get(x_2, x_12);
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_ctor_get(x_13, 1);
+lean_inc(x_15);
+lean_dec(x_13);
+x_16 = lean_ctor_get(x_14, 0);
+lean_inc(x_16);
+lean_dec(x_14);
+x_17 = l_Lean_MVarId_isAssigned___at_Lean_Meta_Grind_closeGoal___spec__1(x_16, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_15);
+x_18 = lean_ctor_get(x_17, 0);
+lean_inc(x_18);
+x_19 = lean_unbox(x_18);
+lean_dec(x_18);
+if (x_19 == 0)
+{
+lean_object* x_20; lean_object* x_21; 
+x_20 = lean_ctor_get(x_17, 1);
+lean_inc(x_20);
+lean_dec(x_17);
+lean_inc(x_16);
+x_21 = l_Lean_MVarId_getType(x_16, x_6, x_7, x_8, x_9, x_20);
+if (lean_obj_tag(x_21) == 0)
+{
+lean_object* x_22; lean_object* x_23; uint8_t x_24; 
+x_22 = lean_ctor_get(x_21, 0);
+lean_inc(x_22);
+x_23 = lean_ctor_get(x_21, 1);
+lean_inc(x_23);
+lean_dec(x_21);
+lean_inc(x_22);
+x_24 = l_Lean_Expr_isFalse(x_22);
+if (x_24 == 0)
+{
+lean_object* x_25; 
+lean_inc(x_9);
+lean_inc(x_8);
+lean_inc(x_7);
+lean_inc(x_6);
+x_25 = l_Lean_Meta_mkFalseElim(x_22, x_1, x_6, x_7, x_8, x_9, x_23);
+if (lean_obj_tag(x_25) == 0)
+{
+lean_object* x_26; lean_object* x_27; lean_object* x_28; 
+x_26 = lean_ctor_get(x_25, 0);
+lean_inc(x_26);
+x_27 = lean_ctor_get(x_25, 1);
+lean_inc(x_27);
+lean_dec(x_25);
+x_28 = l_Lean_MVarId_assign___at_Lean_Meta_Grind_closeGoal___spec__2(x_16, x_26, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_27);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+return x_28;
 }
+else
+{
+uint8_t x_29; 
+lean_dec(x_16);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+x_29 = !lean_is_exclusive(x_25);
+if (x_29 == 0)
+{
+return x_25;
 }
-LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___boxed(lean_object* x_1) {
-_start:
+else
 {
-lean_object* x_2; 
-x_2 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1(x_1);
-lean_dec(x_1);
-return x_2;
+lean_object* x_30; lean_object* x_31; lean_object* x_32; 
+x_30 = lean_ctor_get(x_25, 0);
+x_31 = lean_ctor_get(x_25, 1);
+lean_inc(x_31);
+lean_inc(x_30);
+lean_dec(x_25);
+x_32 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_32, 0, x_30);
+lean_ctor_set(x_32, 1, x_31);
+return x_32;
 }
 }
-LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Meta_Grind_getENodes___spec__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
-_start:
+}
+else
 {
-size_t x_4; size_t x_5; lean_object* x_6; 
-x_4 = lean_unbox_usize(x_1);
-lean_dec(x_1);
-x_5 = lean_unbox_usize(x_2);
-lean_dec(x_2);
-x_6 = l_Array_mapMUnsafe_map___at_Lean_Meta_Grind_getENodes___spec__3(x_4, x_5, x_3);
-return x_6;
+lean_object* x_33; 
+lean_dec(x_22);
+x_33 = l_Lean_MVarId_assign___at_Lean_Meta_Grind_closeGoal___spec__2(x_16, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_23);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+return x_33;
 }
 }
-LEAN_EXPORT lean_object* l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___lambda__1___boxed(lean_object* x_1, lean_object* x_2) {
-_start:
+else
 {
-uint8_t x_3; lean_object* x_4; 
-x_3 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___lambda__1(x_1, x_2);
-lean_dec(x_2);
+uint8_t x_34; 
+lean_dec(x_16);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
 lean_dec(x_1);
-x_4 = lean_box(x_3);
-return x_4;
+x_34 = !lean_is_exclusive(x_21);
+if (x_34 == 0)
+{
+return x_21;
+}
+else
+{
+lean_object* x_35; lean_object* x_36; lean_object* x_37; 
+x_35 = lean_ctor_get(x_21, 0);
+x_36 = lean_ctor_get(x_21, 1);
+lean_inc(x_36);
+lean_inc(x_35);
+lean_dec(x_21);
+x_37 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_37, 0, x_35);
+lean_ctor_set(x_37, 1, x_36);
+return x_37;
 }
 }
-LEAN_EXPORT lean_object* l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___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) {
-_start:
+}
+else
 {
-lean_object* x_7; 
-x_7 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(x_1, x_2, x_3, x_4, x_5, x_6);
-lean_dec(x_4);
+uint8_t x_38; 
+lean_dec(x_16);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
 lean_dec(x_1);
-return x_7;
+x_38 = !lean_is_exclusive(x_17);
+if (x_38 == 0)
+{
+lean_object* x_39; lean_object* x_40; 
+x_39 = lean_ctor_get(x_17, 0);
+lean_dec(x_39);
+x_40 = lean_box(0);
+lean_ctor_set(x_17, 0, x_40);
+return x_17;
+}
+else
+{
+lean_object* x_41; lean_object* x_42; lean_object* x_43; 
+x_41 = lean_ctor_get(x_17, 1);
+lean_inc(x_41);
+lean_dec(x_17);
+x_42 = lean_box(0);
+x_43 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_43, 0, x_42);
+lean_ctor_set(x_43, 1, x_41);
+return x_43;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getENodes___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) {
+}
+}
+LEAN_EXPORT lean_object* l_Lean_MVarId_isAssigned___at_Lean_Meta_Grind_closeGoal___spec__1___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, lean_object* x_10) {
 _start:
 {
-lean_object* x_10; 
-x_10 = l_Lean_Meta_Grind_getENodes(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+lean_object* x_11; 
+x_11 = l_Lean_MVarId_isAssigned___at_Lean_Meta_Grind_closeGoal___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
@@ -12303,350 +13156,368 @@ lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
 lean_dec(x_1);
-return x_10;
+return x_11;
 }
 }
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachENode___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, size_t x_5, size_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+LEAN_EXPORT lean_object* l_Lean_MVarId_assign___at_Lean_Meta_Grind_closeGoal___spec__2___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, lean_object* x_10, lean_object* x_11) {
 _start:
 {
-uint8_t x_17; 
-x_17 = lean_usize_dec_lt(x_6, x_5);
-if (x_17 == 0)
-{
-lean_object* x_18; 
-lean_dec(x_15);
-lean_dec(x_14);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
+lean_object* x_12; 
+x_12 = l_Lean_MVarId_assign___at_Lean_Meta_Grind_closeGoal___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
-lean_dec(x_1);
-x_18 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_18, 0, x_7);
-lean_ctor_set(x_18, 1, x_16);
-return x_18;
-}
-else
-{
-lean_object* x_19; lean_object* x_20; 
 lean_dec(x_7);
-x_19 = lean_array_uget(x_4, x_6);
-lean_inc(x_1);
-lean_inc(x_15);
-lean_inc(x_14);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_inc(x_8);
-x_20 = lean_apply_10(x_1, x_19, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
-if (lean_obj_tag(x_20) == 0)
-{
-lean_object* x_21; size_t x_22; size_t x_23; lean_object* x_24; 
-x_21 = lean_ctor_get(x_20, 1);
-lean_inc(x_21);
-lean_dec(x_20);
-x_22 = 1;
-x_23 = lean_usize_add(x_6, x_22);
-x_24 = lean_box(0);
-x_6 = x_23;
-x_7 = x_24;
-x_16 = x_21;
-goto _start;
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+return x_12;
 }
-else
-{
-uint8_t x_26; 
-lean_dec(x_15);
-lean_dec(x_14);
-lean_dec(x_13);
-lean_dec(x_12);
-lean_dec(x_11);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_1);
-x_26 = !lean_is_exclusive(x_20);
-if (x_26 == 0)
-{
-return x_20;
 }
-else
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_closeGoal___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, lean_object* x_10) {
+_start:
 {
-lean_object* x_27; lean_object* x_28; lean_object* x_29; 
-x_27 = lean_ctor_get(x_20, 0);
-x_28 = lean_ctor_get(x_20, 1);
-lean_inc(x_28);
-lean_inc(x_27);
-lean_dec(x_20);
-x_29 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_29, 0, x_27);
-lean_ctor_set(x_29, 1, x_28);
-return x_29;
-}
+lean_object* x_11; 
+x_11 = l_Lean_Meta_Grind_closeGoal(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_11;
 }
 }
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlM___at_Lean_Meta_Grind_getENodes___spec__2(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
+_start:
+{
+lean_object* x_4; 
+x_4 = l_Lean_PersistentHashMap_foldlMAux___at_Lean_MetavarContext_getExprAssignmentDomain___spec__2___rarg(x_2, x_1, x_3);
+return x_4;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_forEachENode(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) {
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___lambda__1(lean_object* x_1, size_t x_2, lean_object* x_3) {
 _start:
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; size_t x_15; size_t x_16; lean_object* x_17; lean_object* x_18; 
-x_11 = l_Lean_Meta_Grind_getENodes(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-x_12 = lean_ctor_get(x_11, 0);
-lean_inc(x_12);
-x_13 = lean_ctor_get(x_11, 1);
-lean_inc(x_13);
-lean_dec(x_11);
-x_14 = lean_box(0);
-x_15 = lean_array_size(x_12);
-x_16 = 0;
-x_17 = lean_box(0);
-x_18 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachENode___spec__1(x_1, x_12, x_14, x_12, x_15, x_16, x_17, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
-lean_dec(x_12);
-if (lean_obj_tag(x_18) == 0)
+lean_object* x_4; lean_object* x_5; lean_object* x_6; 
+x_4 = lean_box_usize(x_2);
+x_5 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_5, 0, x_4);
+lean_ctor_set(x_5, 1, x_3);
+x_6 = lean_array_push(x_1, x_5);
+return x_6;
+}
+}
+static lean_object* _init_l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__1() {
+_start:
 {
-uint8_t x_19; 
-x_19 = !lean_is_exclusive(x_18);
-if (x_19 == 0)
+lean_object* x_1; lean_object* x_2; 
+x_1 = lean_box(0);
+x_2 = lean_array_mk(x_1);
+return x_2;
+}
+}
+static lean_object* _init_l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__2() {
+_start:
 {
-lean_object* x_20; 
-x_20 = lean_ctor_get(x_18, 0);
-lean_dec(x_20);
-lean_ctor_set(x_18, 0, x_17);
-return x_18;
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___lambda__1___boxed), 3, 0);
+return x_1;
 }
-else
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1(lean_object* x_1) {
+_start:
 {
-lean_object* x_21; lean_object* x_22; 
-x_21 = lean_ctor_get(x_18, 1);
-lean_inc(x_21);
-lean_dec(x_18);
-x_22 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_22, 0, x_17);
-lean_ctor_set(x_22, 1, x_21);
-return x_22;
+lean_object* x_2; lean_object* x_3; lean_object* x_4; 
+x_2 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__2;
+x_3 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__1;
+x_4 = l_Lean_PersistentHashMap_foldlMAux___at_Lean_MetavarContext_getExprAssignmentDomain___spec__2___rarg(x_2, x_1, x_3);
+return x_4;
 }
 }
-else
+LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Meta_Grind_getENodes___spec__3(size_t x_1, size_t x_2, lean_object* x_3) {
+_start:
 {
-uint8_t x_23; 
-x_23 = !lean_is_exclusive(x_18);
-if (x_23 == 0)
+uint8_t x_4; 
+x_4 = lean_usize_dec_lt(x_2, x_1);
+if (x_4 == 0)
 {
-return x_18;
+return x_3;
 }
 else
 {
-lean_object* x_24; lean_object* x_25; lean_object* x_26; 
-x_24 = lean_ctor_get(x_18, 0);
-x_25 = lean_ctor_get(x_18, 1);
-lean_inc(x_25);
-lean_inc(x_24);
-lean_dec(x_18);
-x_26 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_26, 0, x_24);
-lean_ctor_set(x_26, 1, x_25);
-return x_26;
-}
+lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; size_t x_9; size_t x_10; lean_object* x_11; 
+x_5 = lean_array_uget(x_3, x_2);
+x_6 = lean_unsigned_to_nat(0u);
+x_7 = lean_array_uset(x_3, x_2, x_6);
+x_8 = lean_ctor_get(x_5, 1);
+lean_inc(x_8);
+lean_dec(x_5);
+x_9 = 1;
+x_10 = lean_usize_add(x_2, x_9);
+x_11 = lean_array_uset(x_7, x_2, x_8);
+x_2 = x_10;
+x_3 = x_11;
+goto _start;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachENode___spec__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+LEAN_EXPORT uint8_t l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___lambda__1(lean_object* x_1, lean_object* x_2) {
 _start:
 {
-size_t x_17; size_t x_18; lean_object* x_19; 
-x_17 = lean_unbox_usize(x_5);
-lean_dec(x_5);
-x_18 = lean_unbox_usize(x_6);
-lean_dec(x_6);
-x_19 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachENode___spec__1(x_1, x_2, x_3, x_4, x_17, x_18, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_19;
+lean_object* x_3; lean_object* x_4; uint8_t x_5; 
+x_3 = lean_ctor_get(x_1, 7);
+x_4 = lean_ctor_get(x_2, 7);
+x_5 = lean_nat_dec_lt(x_3, x_4);
+return x_5;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_filterENodes___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, lean_object* x_11, lean_object* x_12) {
+static lean_object* _init_l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___closed__1() {
 _start:
 {
-lean_object* x_13; 
-lean_inc(x_3);
-x_13 = lean_apply_10(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
-if (lean_obj_tag(x_13) == 0)
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___lambda__1___boxed), 2, 0);
+return x_1;
+}
+}
+LEAN_EXPORT lean_object* l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(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:
 {
-lean_object* x_14; uint8_t x_15; 
-x_14 = lean_ctor_get(x_13, 0);
-lean_inc(x_14);
-x_15 = lean_unbox(x_14);
-lean_dec(x_14);
-if (x_15 == 0)
+uint8_t x_7; 
+x_7 = lean_nat_dec_lt(x_3, x_4);
+if (x_7 == 0)
 {
-uint8_t x_16; 
 lean_dec(x_3);
-x_16 = !lean_is_exclusive(x_13);
-if (x_16 == 0)
+return x_2;
+}
+else
 {
-lean_object* x_17; lean_object* x_18; 
-x_17 = lean_ctor_get(x_13, 0);
-lean_dec(x_17);
-x_18 = lean_box(0);
-lean_ctor_set(x_13, 0, x_18);
-return x_13;
+lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; uint8_t x_12; 
+x_8 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___closed__1;
+lean_inc(x_3);
+x_9 = l___private_Init_Data_Array_QSort_0__Array_qpartition___rarg(x_1, x_2, x_8, x_3, x_4, lean_box(0), lean_box(0));
+x_10 = lean_ctor_get(x_9, 0);
+lean_inc(x_10);
+x_11 = lean_ctor_get(x_9, 1);
+lean_inc(x_11);
+lean_dec(x_9);
+x_12 = lean_nat_dec_le(x_4, x_10);
+if (x_12 == 0)
+{
+lean_object* x_13; lean_object* x_14; lean_object* x_15; 
+x_13 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(x_1, x_11, x_3, x_10, lean_box(0), lean_box(0));
+x_14 = lean_unsigned_to_nat(1u);
+x_15 = lean_nat_add(x_10, x_14);
+lean_dec(x_10);
+x_2 = x_13;
+x_3 = x_15;
+x_5 = lean_box(0);
+x_6 = lean_box(0);
+goto _start;
 }
 else
 {
-lean_object* x_19; lean_object* x_20; lean_object* x_21; 
-x_19 = lean_ctor_get(x_13, 1);
-lean_inc(x_19);
-lean_dec(x_13);
-x_20 = lean_box(0);
-x_21 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_21, 0, x_20);
-lean_ctor_set(x_21, 1, x_19);
-return x_21;
+lean_dec(x_10);
+lean_dec(x_3);
+return x_11;
 }
 }
-else
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getENodes(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_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; uint8_t x_28; 
-x_22 = lean_ctor_get(x_13, 1);
-lean_inc(x_22);
+lean_object* x_10; uint8_t x_11; 
+x_10 = lean_st_ref_get(x_1, x_9);
+x_11 = !lean_is_exclusive(x_10);
+if (x_11 == 0)
+{
+lean_object* x_12; lean_object* x_13; lean_object* x_14; size_t x_15; size_t x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; uint8_t x_22; 
+x_12 = lean_ctor_get(x_10, 0);
+x_13 = lean_ctor_get(x_12, 1);
+lean_inc(x_13);
+lean_dec(x_12);
+x_14 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1(x_13);
 lean_dec(x_13);
-x_23 = lean_st_ref_take(x_2, x_22);
-x_24 = lean_ctor_get(x_23, 0);
-lean_inc(x_24);
-x_25 = lean_ctor_get(x_23, 1);
-lean_inc(x_25);
-lean_dec(x_23);
-x_26 = lean_array_push(x_24, x_3);
-x_27 = lean_st_ref_set(x_2, x_26, x_25);
-x_28 = !lean_is_exclusive(x_27);
-if (x_28 == 0)
+x_15 = lean_array_size(x_14);
+x_16 = 0;
+x_17 = l_Array_mapMUnsafe_map___at_Lean_Meta_Grind_getENodes___spec__3(x_15, x_16, x_14);
+x_18 = lean_array_get_size(x_17);
+x_19 = lean_unsigned_to_nat(1u);
+x_20 = lean_nat_sub(x_18, x_19);
+x_21 = lean_unsigned_to_nat(0u);
+x_22 = lean_nat_dec_eq(x_18, x_21);
+if (x_22 == 0)
 {
-return x_27;
+uint8_t x_23; 
+x_23 = lean_nat_dec_le(x_21, x_20);
+if (x_23 == 0)
+{
+lean_object* x_24; 
+lean_inc(x_20);
+x_24 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(x_18, x_17, x_20, x_20, lean_box(0), lean_box(0));
+lean_dec(x_20);
+lean_dec(x_18);
+lean_ctor_set(x_10, 0, x_24);
+return x_10;
 }
 else
 {
-lean_object* x_29; lean_object* x_30; lean_object* x_31; 
-x_29 = lean_ctor_get(x_27, 0);
-x_30 = lean_ctor_get(x_27, 1);
-lean_inc(x_30);
-lean_inc(x_29);
-lean_dec(x_27);
-x_31 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_31, 0, x_29);
-lean_ctor_set(x_31, 1, x_30);
-return x_31;
-}
+lean_object* x_25; 
+x_25 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(x_18, x_17, x_21, x_20, lean_box(0), lean_box(0));
+lean_dec(x_20);
+lean_dec(x_18);
+lean_ctor_set(x_10, 0, x_25);
+return x_10;
 }
 }
 else
 {
-uint8_t x_32; 
-lean_dec(x_3);
-x_32 = !lean_is_exclusive(x_13);
-if (x_32 == 0)
-{
-return x_13;
+lean_dec(x_20);
+lean_dec(x_18);
+lean_ctor_set(x_10, 0, x_17);
+return x_10;
+}
 }
 else
 {
-lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_33 = lean_ctor_get(x_13, 0);
-x_34 = lean_ctor_get(x_13, 1);
-lean_inc(x_34);
-lean_inc(x_33);
-lean_dec(x_13);
-x_35 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_35, 0, x_33);
-lean_ctor_set(x_35, 1, x_34);
-return x_35;
+lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; size_t x_30; size_t x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; uint8_t x_37; 
+x_26 = lean_ctor_get(x_10, 0);
+x_27 = lean_ctor_get(x_10, 1);
+lean_inc(x_27);
+lean_inc(x_26);
+lean_dec(x_10);
+x_28 = lean_ctor_get(x_26, 1);
+lean_inc(x_28);
+lean_dec(x_26);
+x_29 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1(x_28);
+lean_dec(x_28);
+x_30 = lean_array_size(x_29);
+x_31 = 0;
+x_32 = l_Array_mapMUnsafe_map___at_Lean_Meta_Grind_getENodes___spec__3(x_30, x_31, x_29);
+x_33 = lean_array_get_size(x_32);
+x_34 = lean_unsigned_to_nat(1u);
+x_35 = lean_nat_sub(x_33, x_34);
+x_36 = lean_unsigned_to_nat(0u);
+x_37 = lean_nat_dec_eq(x_33, x_36);
+if (x_37 == 0)
+{
+uint8_t x_38; 
+x_38 = lean_nat_dec_le(x_36, x_35);
+if (x_38 == 0)
+{
+lean_object* x_39; lean_object* x_40; 
+lean_inc(x_35);
+x_39 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(x_33, x_32, x_35, x_35, lean_box(0), lean_box(0));
+lean_dec(x_35);
+lean_dec(x_33);
+x_40 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_40, 0, x_39);
+lean_ctor_set(x_40, 1, x_27);
+return x_40;
+}
+else
+{
+lean_object* x_41; lean_object* x_42; 
+x_41 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(x_33, x_32, x_36, x_35, lean_box(0), lean_box(0));
+lean_dec(x_35);
+lean_dec(x_33);
+x_42 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_42, 0, x_41);
+lean_ctor_set(x_42, 1, x_27);
+return x_42;
+}
 }
+else
+{
+lean_object* x_43; 
+lean_dec(x_35);
+lean_dec(x_33);
+x_43 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_43, 0, x_32);
+lean_ctor_set(x_43, 1, x_27);
+return x_43;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_filterENodes(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) {
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlM___at_Lean_Meta_Grind_getENodes___spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
 _start:
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; 
-x_11 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__1;
-x_12 = lean_st_mk_ref(x_11, x_10);
-x_13 = lean_ctor_get(x_12, 0);
-lean_inc(x_13);
-x_14 = lean_ctor_get(x_12, 1);
-lean_inc(x_14);
-lean_dec(x_12);
-lean_inc(x_13);
-x_15 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_filterENodes___lambda__1___boxed), 12, 2);
-lean_closure_set(x_15, 0, x_1);
-lean_closure_set(x_15, 1, x_13);
-x_16 = l_Lean_Meta_Grind_forEachENode(x_15, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_14);
-if (lean_obj_tag(x_16) == 0)
-{
-lean_object* x_17; lean_object* x_18; uint8_t x_19; 
-x_17 = lean_ctor_get(x_16, 1);
-lean_inc(x_17);
-lean_dec(x_16);
-x_18 = lean_st_ref_get(x_13, x_17);
-lean_dec(x_13);
-x_19 = !lean_is_exclusive(x_18);
-if (x_19 == 0)
-{
-return x_18;
+lean_object* x_4; 
+x_4 = l_Lean_PersistentHashMap_foldlM___at_Lean_Meta_Grind_getENodes___spec__2(x_1, x_2, x_3);
+lean_dec(x_1);
+return x_4;
 }
-else
+}
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
+_start:
 {
-lean_object* x_20; lean_object* x_21; lean_object* x_22; 
-x_20 = lean_ctor_get(x_18, 0);
-x_21 = lean_ctor_get(x_18, 1);
-lean_inc(x_21);
-lean_inc(x_20);
-lean_dec(x_18);
-x_22 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_22, 0, x_20);
-lean_ctor_set(x_22, 1, x_21);
-return x_22;
+size_t x_4; lean_object* x_5; 
+x_4 = lean_unbox_usize(x_2);
+lean_dec(x_2);
+x_5 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___lambda__1(x_1, x_4, x_3);
+return x_5;
 }
 }
-else
+LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___boxed(lean_object* x_1) {
+_start:
 {
-uint8_t x_23; 
-lean_dec(x_13);
-x_23 = !lean_is_exclusive(x_16);
-if (x_23 == 0)
+lean_object* x_2; 
+x_2 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1(x_1);
+lean_dec(x_1);
+return x_2;
+}
+}
+LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Meta_Grind_getENodes___spec__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
+_start:
 {
-return x_16;
+size_t x_4; size_t x_5; lean_object* x_6; 
+x_4 = lean_unbox_usize(x_1);
+lean_dec(x_1);
+x_5 = lean_unbox_usize(x_2);
+lean_dec(x_2);
+x_6 = l_Array_mapMUnsafe_map___at_Lean_Meta_Grind_getENodes___spec__3(x_4, x_5, x_3);
+return x_6;
 }
-else
+}
+LEAN_EXPORT lean_object* l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___lambda__1___boxed(lean_object* x_1, lean_object* x_2) {
+_start:
 {
-lean_object* x_24; lean_object* x_25; lean_object* x_26; 
-x_24 = lean_ctor_get(x_16, 0);
-x_25 = lean_ctor_get(x_16, 1);
-lean_inc(x_25);
-lean_inc(x_24);
-lean_dec(x_16);
-x_26 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_26, 0, x_24);
-lean_ctor_set(x_26, 1, x_25);
-return x_26;
+uint8_t x_3; lean_object* x_4; 
+x_3 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___lambda__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_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4___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) {
+_start:
+{
+lean_object* x_7; 
+x_7 = l_Array_qsort_sort___at_Lean_Meta_Grind_getENodes___spec__4(x_1, x_2, x_3, x_4, x_5, x_6);
+lean_dec(x_4);
+lean_dec(x_1);
+return x_7;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_filterENodes___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getENodes___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_13; 
-x_13 = l_Lean_Meta_Grind_filterENodes___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_object* x_10; 
+x_10 = l_Lean_Meta_Grind_getENodes(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
 lean_dec(x_2);
-return x_13;
+lean_dec(x_1);
+return x_10;
 }
 }
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachEqc___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, size_t x_5, size_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachENode___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, size_t x_5, size_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
 _start:
 {
 uint8_t x_17; 
@@ -12670,30 +13541,9 @@ return x_18;
 }
 else
 {
-lean_object* x_19; lean_object* x_20; lean_object* x_21; uint8_t x_22; 
+lean_object* x_19; lean_object* x_20; 
 lean_dec(x_7);
 x_19 = lean_array_uget(x_4, x_6);
-x_20 = lean_ctor_get(x_19, 0);
-lean_inc(x_20);
-x_21 = lean_ctor_get(x_19, 2);
-lean_inc(x_21);
-x_22 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_20, x_21);
-lean_dec(x_21);
-lean_dec(x_20);
-if (x_22 == 0)
-{
-size_t x_23; size_t x_24; lean_object* x_25; 
-lean_dec(x_19);
-x_23 = 1;
-x_24 = lean_usize_add(x_6, x_23);
-x_25 = lean_box(0);
-x_6 = x_24;
-x_7 = x_25;
-goto _start;
-}
-else
-{
-lean_object* x_27; 
 lean_inc(x_1);
 lean_inc(x_15);
 lean_inc(x_14);
@@ -12703,24 +13553,24 @@ lean_inc(x_11);
 lean_inc(x_10);
 lean_inc(x_9);
 lean_inc(x_8);
-x_27 = lean_apply_10(x_1, x_19, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
-if (lean_obj_tag(x_27) == 0)
+x_20 = lean_apply_10(x_1, x_19, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+if (lean_obj_tag(x_20) == 0)
 {
-lean_object* x_28; size_t x_29; size_t x_30; lean_object* x_31; 
-x_28 = lean_ctor_get(x_27, 1);
-lean_inc(x_28);
-lean_dec(x_27);
-x_29 = 1;
-x_30 = lean_usize_add(x_6, x_29);
-x_31 = lean_box(0);
-x_6 = x_30;
-x_7 = x_31;
-x_16 = x_28;
+lean_object* x_21; size_t x_22; size_t x_23; lean_object* x_24; 
+x_21 = lean_ctor_get(x_20, 1);
+lean_inc(x_21);
+lean_dec(x_20);
+x_22 = 1;
+x_23 = lean_usize_add(x_6, x_22);
+x_24 = lean_box(0);
+x_6 = x_23;
+x_7 = x_24;
+x_16 = x_21;
 goto _start;
 }
 else
 {
-uint8_t x_33; 
+uint8_t x_26; 
 lean_dec(x_15);
 lean_dec(x_14);
 lean_dec(x_13);
@@ -12730,32 +13580,31 @@ lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_1);
-x_33 = !lean_is_exclusive(x_27);
-if (x_33 == 0)
+x_26 = !lean_is_exclusive(x_20);
+if (x_26 == 0)
 {
-return x_27;
+return x_20;
 }
 else
 {
-lean_object* x_34; lean_object* x_35; lean_object* x_36; 
-x_34 = lean_ctor_get(x_27, 0);
-x_35 = lean_ctor_get(x_27, 1);
-lean_inc(x_35);
-lean_inc(x_34);
-lean_dec(x_27);
-x_36 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_36, 0, x_34);
-lean_ctor_set(x_36, 1, x_35);
-return x_36;
-}
-}
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_forEachEqc(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:
-{
+lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_27 = lean_ctor_get(x_20, 0);
+x_28 = lean_ctor_get(x_20, 1);
+lean_inc(x_28);
+lean_inc(x_27);
+lean_dec(x_20);
+x_29 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_29, 0, x_27);
+lean_ctor_set(x_29, 1, x_28);
+return x_29;
+}
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_forEachENode(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:
+{
 lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; size_t x_15; size_t x_16; lean_object* x_17; lean_object* x_18; 
 x_11 = l_Lean_Meta_Grind_getENodes(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 x_12 = lean_ctor_get(x_11, 0);
@@ -12767,7 +13616,7 @@ x_14 = lean_box(0);
 x_15 = lean_array_size(x_12);
 x_16 = 0;
 x_17 = lean_box(0);
-x_18 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachEqc___spec__1(x_1, x_12, x_14, x_12, x_15, x_16, x_17, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
+x_18 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachENode___spec__1(x_1, x_12, x_14, x_12, x_15, x_16, x_17, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
 lean_dec(x_12);
 if (lean_obj_tag(x_18) == 0)
 {
@@ -12817,7 +13666,7 @@ return x_26;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachEqc___spec__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachENode___spec__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
 _start:
 {
 size_t x_17; size_t x_18; lean_object* x_19; 
@@ -12825,4287 +13674,418 @@ x_17 = lean_unbox_usize(x_5);
 lean_dec(x_5);
 x_18 = lean_unbox_usize(x_6);
 lean_dec(x_6);
-x_19 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachEqc___spec__1(x_1, x_2, x_3, x_4, x_17, x_18, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+x_19 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachENode___spec__1(x_1, x_2, x_3, x_4, x_17, x_18, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
 return x_19;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instInhabitedMethods___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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_filterENodes___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, lean_object* x_11, lean_object* x_12) {
 _start:
 {
-lean_object* x_11; lean_object* x_12; 
-x_11 = lean_box(0);
-x_12 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_12, 0, x_11);
-lean_ctor_set(x_12, 1, x_10);
-return x_12;
-}
+lean_object* x_13; 
+lean_inc(x_3);
+x_13 = lean_apply_10(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
+{
+lean_object* x_14; uint8_t x_15; 
+x_14 = lean_ctor_get(x_13, 0);
+lean_inc(x_14);
+x_15 = lean_unbox(x_14);
+lean_dec(x_14);
+if (x_15 == 0)
+{
+uint8_t x_16; 
+lean_dec(x_3);
+x_16 = !lean_is_exclusive(x_13);
+if (x_16 == 0)
+{
+lean_object* x_17; lean_object* x_18; 
+x_17 = lean_ctor_get(x_13, 0);
+lean_dec(x_17);
+x_18 = lean_box(0);
+lean_ctor_set(x_13, 0, x_18);
+return x_13;
 }
-static lean_object* _init_l_Lean_Meta_Grind_instInhabitedMethods___closed__1() {
-_start:
+else
 {
-lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_instInhabitedMethods___lambda__1___boxed), 10, 0);
-return x_1;
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_19 = lean_ctor_get(x_13, 1);
+lean_inc(x_19);
+lean_dec(x_13);
+x_20 = lean_box(0);
+x_21 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_21, 0, x_20);
+lean_ctor_set(x_21, 1, x_19);
+return x_21;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_instInhabitedMethods___closed__2() {
-_start:
+else
 {
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_Meta_Grind_instInhabitedMethods___closed__1;
-x_2 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_2, 0, x_1);
-lean_ctor_set(x_2, 1, x_1);
-return x_2;
-}
+lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; uint8_t x_28; 
+x_22 = lean_ctor_get(x_13, 1);
+lean_inc(x_22);
+lean_dec(x_13);
+x_23 = lean_st_ref_take(x_2, x_22);
+x_24 = lean_ctor_get(x_23, 0);
+lean_inc(x_24);
+x_25 = lean_ctor_get(x_23, 1);
+lean_inc(x_25);
+lean_dec(x_23);
+x_26 = lean_array_push(x_24, x_3);
+x_27 = lean_st_ref_set(x_2, x_26, x_25);
+x_28 = !lean_is_exclusive(x_27);
+if (x_28 == 0)
+{
+return x_27;
 }
-static lean_object* _init_l_Lean_Meta_Grind_instInhabitedMethods() {
-_start:
+else
 {
-lean_object* x_1; 
-x_1 = l_Lean_Meta_Grind_instInhabitedMethods___closed__2;
-return x_1;
+lean_object* x_29; lean_object* x_30; lean_object* x_31; 
+x_29 = lean_ctor_get(x_27, 0);
+x_30 = lean_ctor_get(x_27, 1);
+lean_inc(x_30);
+lean_inc(x_29);
+lean_dec(x_27);
+x_31 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_31, 0, x_29);
+lean_ctor_set(x_31, 1, x_30);
+return x_31;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instInhabitedMethods___lambda__1___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, lean_object* x_10) {
-_start:
+}
+else
 {
-lean_object* x_11; 
-x_11 = l_Lean_Meta_Grind_instInhabitedMethods___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
+uint8_t x_32; 
 lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-return x_11;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Methods_toMethodsRef_unsafe__1(lean_object* x_1) {
-_start:
+x_32 = !lean_is_exclusive(x_13);
+if (x_32 == 0)
 {
-lean_inc(x_1);
-return x_1;
-}
+return x_13;
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Methods_toMethodsRef_unsafe__1___boxed(lean_object* x_1) {
-_start:
+else
 {
-lean_object* x_2; 
-x_2 = l_Lean_Meta_Grind_Methods_toMethodsRef_unsafe__1(x_1);
-lean_dec(x_1);
-return x_2;
+lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_33 = lean_ctor_get(x_13, 0);
+x_34 = lean_ctor_get(x_13, 1);
+lean_inc(x_34);
+lean_inc(x_33);
+lean_dec(x_13);
+x_35 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_35, 0, x_33);
+lean_ctor_set(x_35, 1, x_34);
+return x_35;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Methods_toMethodsRef(lean_object* x_1) {
-_start:
-{
-lean_inc(x_1);
-return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Methods_toMethodsRef___boxed(lean_object* x_1) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_filterENodes(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:
 {
-lean_object* x_2; 
-x_2 = l_Lean_Meta_Grind_Methods_toMethodsRef(x_1);
-lean_dec(x_1);
-return x_2;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_MethodsRef_toMethods_unsafe__1(lean_object* x_1) {
-_start:
+lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; 
+x_11 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__1;
+x_12 = lean_st_mk_ref(x_11, x_10);
+x_13 = lean_ctor_get(x_12, 0);
+lean_inc(x_13);
+x_14 = lean_ctor_get(x_12, 1);
+lean_inc(x_14);
+lean_dec(x_12);
+lean_inc(x_13);
+x_15 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_filterENodes___lambda__1___boxed), 12, 2);
+lean_closure_set(x_15, 0, x_1);
+lean_closure_set(x_15, 1, x_13);
+x_16 = l_Lean_Meta_Grind_forEachENode(x_15, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_14);
+if (lean_obj_tag(x_16) == 0)
 {
-lean_inc(x_1);
-return x_1;
-}
+lean_object* x_17; lean_object* x_18; uint8_t x_19; 
+x_17 = lean_ctor_get(x_16, 1);
+lean_inc(x_17);
+lean_dec(x_16);
+x_18 = lean_st_ref_get(x_13, x_17);
+lean_dec(x_13);
+x_19 = !lean_is_exclusive(x_18);
+if (x_19 == 0)
+{
+return x_18;
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_MethodsRef_toMethods_unsafe__1___boxed(lean_object* x_1) {
-_start:
+else
 {
-lean_object* x_2; 
-x_2 = l_Lean_Meta_Grind_MethodsRef_toMethods_unsafe__1(x_1);
-lean_dec(x_1);
-return x_2;
+lean_object* x_20; lean_object* x_21; lean_object* x_22; 
+x_20 = lean_ctor_get(x_18, 0);
+x_21 = lean_ctor_get(x_18, 1);
+lean_inc(x_21);
+lean_inc(x_20);
+lean_dec(x_18);
+x_22 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_22, 0, x_20);
+lean_ctor_set(x_22, 1, x_21);
+return x_22;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_MethodsRef_toMethods(lean_object* x_1) {
-_start:
+else
 {
-lean_inc(x_1);
-return x_1;
-}
+uint8_t x_23; 
+lean_dec(x_13);
+x_23 = !lean_is_exclusive(x_16);
+if (x_23 == 0)
+{
+return x_16;
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_MethodsRef_toMethods___boxed(lean_object* x_1) {
-_start:
+else
 {
-lean_object* x_2; 
-x_2 = l_Lean_Meta_Grind_MethodsRef_toMethods(x_1);
-lean_dec(x_1);
-return x_2;
+lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+x_24 = lean_ctor_get(x_16, 0);
+x_25 = lean_ctor_get(x_16, 1);
+lean_inc(x_25);
+lean_inc(x_24);
+lean_dec(x_16);
+x_26 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_26, 0, x_24);
+lean_ctor_set(x_26, 1, x_25);
+return x_26;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__1() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_Meta_Grind_abstractNestedProofs___closed__3;
-x_2 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_2, 0, x_1);
-lean_ctor_set(x_2, 1, x_1);
-return x_2;
 }
 }
-static lean_object* _init_l_Lean_Meta_Grind_instInhabitedBuiltinPropagators() {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_filterENodes___lambda__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
 _start:
 {
-lean_object* x_1; 
-x_1 = l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__1;
-return x_1;
+lean_object* x_13; 
+x_13 = l_Lean_Meta_Grind_filterENodes___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+lean_dec(x_2);
+return x_13;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4343_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachEqc___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, size_t x_5, size_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
 _start:
 {
-lean_object* x_2; lean_object* x_3; uint8_t x_4; 
-x_2 = l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__1;
-x_3 = lean_st_mk_ref(x_2, x_1);
-x_4 = !lean_is_exclusive(x_3);
-if (x_4 == 0)
-{
-return x_3;
-}
-else
-{
-lean_object* x_5; lean_object* x_6; lean_object* x_7; 
-x_5 = lean_ctor_get(x_3, 0);
-x_6 = lean_ctor_get(x_3, 1);
-lean_inc(x_6);
-lean_inc(x_5);
-lean_dec(x_3);
-x_7 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_7, 0, x_5);
-lean_ctor_set(x_7, 1, x_6);
-return x_7;
-}
-}
-}
-LEAN_EXPORT uint8_t l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(lean_object* x_1, lean_object* x_2) {
-_start:
-{
-if (lean_obj_tag(x_2) == 0)
+uint8_t x_17; 
+x_17 = lean_usize_dec_lt(x_6, x_5);
+if (x_17 == 0)
 {
-uint8_t x_3; 
-x_3 = 0;
-return x_3;
+lean_object* x_18; 
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_1);
+x_18 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_18, 0, x_7);
+lean_ctor_set(x_18, 1, x_16);
+return x_18;
 }
 else
 {
-lean_object* x_4; lean_object* x_5; uint8_t x_6; 
-x_4 = lean_ctor_get(x_2, 0);
-x_5 = lean_ctor_get(x_2, 2);
-x_6 = lean_name_eq(x_4, x_1);
-if (x_6 == 0)
+lean_object* x_19; lean_object* x_20; lean_object* x_21; uint8_t x_22; 
+lean_dec(x_7);
+x_19 = lean_array_uget(x_4, x_6);
+x_20 = lean_ctor_get(x_19, 0);
+lean_inc(x_20);
+x_21 = lean_ctor_get(x_19, 2);
+lean_inc(x_21);
+x_22 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_20, x_21);
+lean_dec(x_21);
+lean_dec(x_20);
+if (x_22 == 0)
 {
-x_2 = x_5;
+size_t x_23; size_t x_24; lean_object* x_25; 
+lean_dec(x_19);
+x_23 = 1;
+x_24 = lean_usize_add(x_6, x_23);
+x_25 = lean_box(0);
+x_6 = x_24;
+x_7 = x_25;
 goto _start;
 }
 else
 {
-uint8_t x_8; 
-x_8 = 1;
-return x_8;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_foldlM___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__4(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_27; 
+lean_inc(x_1);
+lean_inc(x_15);
+lean_inc(x_14);
+lean_inc(x_13);
+lean_inc(x_12);
+lean_inc(x_11);
+lean_inc(x_10);
+lean_inc(x_9);
+lean_inc(x_8);
+x_27 = lean_apply_10(x_1, x_19, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+if (lean_obj_tag(x_27) == 0)
 {
-lean_object* x_4; lean_object* x_5; lean_object* x_6; uint64_t x_7; uint64_t x_8; uint64_t x_9; uint64_t x_10; uint64_t x_11; uint64_t x_12; uint64_t x_13; size_t x_14; size_t x_15; size_t x_16; size_t x_17; size_t x_18; lean_object* x_19; lean_object* x_20; 
-x_4 = lean_ctor_get(x_2, 0);
-x_5 = lean_ctor_get(x_2, 2);
-x_6 = lean_array_get_size(x_1);
-x_7 = l_Lean_Name_hash___override(x_4);
-x_8 = 32;
-x_9 = lean_uint64_shift_right(x_7, x_8);
-x_10 = lean_uint64_xor(x_7, x_9);
-x_11 = 16;
-x_12 = lean_uint64_shift_right(x_10, x_11);
-x_13 = lean_uint64_xor(x_10, x_12);
-x_14 = lean_uint64_to_usize(x_13);
-x_15 = lean_usize_of_nat(x_6);
-lean_dec(x_6);
-x_16 = 1;
-x_17 = lean_usize_sub(x_15, x_16);
-x_18 = lean_usize_land(x_14, x_17);
-x_19 = lean_array_uget(x_1, x_18);
-lean_ctor_set(x_2, 2, x_19);
-x_20 = lean_array_uset(x_1, x_18, x_2);
-x_1 = x_20;
-x_2 = x_5;
+lean_object* x_28; size_t x_29; size_t x_30; lean_object* x_31; 
+x_28 = lean_ctor_get(x_27, 1);
+lean_inc(x_28);
+lean_dec(x_27);
+x_29 = 1;
+x_30 = lean_usize_add(x_6, x_29);
+x_31 = lean_box(0);
+x_6 = x_30;
+x_7 = x_31;
+x_16 = x_28;
 goto _start;
 }
 else
 {
-lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; uint64_t x_26; uint64_t x_27; uint64_t x_28; uint64_t x_29; uint64_t x_30; uint64_t x_31; uint64_t x_32; size_t x_33; size_t x_34; size_t x_35; size_t x_36; size_t x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; 
-x_22 = lean_ctor_get(x_2, 0);
-x_23 = lean_ctor_get(x_2, 1);
-x_24 = lean_ctor_get(x_2, 2);
-lean_inc(x_24);
-lean_inc(x_23);
-lean_inc(x_22);
-lean_dec(x_2);
-x_25 = lean_array_get_size(x_1);
-x_26 = l_Lean_Name_hash___override(x_22);
-x_27 = 32;
-x_28 = lean_uint64_shift_right(x_26, x_27);
-x_29 = lean_uint64_xor(x_26, x_28);
-x_30 = 16;
-x_31 = lean_uint64_shift_right(x_29, x_30);
-x_32 = lean_uint64_xor(x_29, x_31);
-x_33 = lean_uint64_to_usize(x_32);
-x_34 = lean_usize_of_nat(x_25);
-lean_dec(x_25);
-x_35 = 1;
-x_36 = lean_usize_sub(x_34, x_35);
-x_37 = lean_usize_land(x_33, x_36);
-x_38 = lean_array_uget(x_1, x_37);
-x_39 = lean_alloc_ctor(1, 3, 0);
-lean_ctor_set(x_39, 0, x_22);
-lean_ctor_set(x_39, 1, x_23);
-lean_ctor_set(x_39, 2, x_38);
-x_40 = lean_array_uset(x_1, x_37, x_39);
-x_1 = x_40;
-x_2 = x_24;
-goto _start;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_Raw_u2080_expand_go___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__3(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);
+uint8_t x_33; 
+lean_dec(x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
 lean_dec(x_1);
-return x_3;
+x_33 = !lean_is_exclusive(x_27);
+if (x_33 == 0)
+{
+return x_27;
 }
 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_Std_DHashMap_Internal_AssocList_foldlM___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__4(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_object* x_34; lean_object* x_35; lean_object* x_36; 
+x_34 = lean_ctor_get(x_27, 0);
+x_35 = lean_ctor_get(x_27, 1);
+lean_inc(x_35);
+lean_inc(x_34);
+lean_dec(x_27);
+x_36 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_36, 0, x_34);
+lean_ctor_set(x_36, 1, x_35);
+return x_36;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(lean_object* x_1) {
-_start:
-{
-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; 
-x_2 = lean_array_get_size(x_1);
-x_3 = lean_unsigned_to_nat(2u);
-x_4 = lean_nat_mul(x_2, x_3);
-lean_dec(x_2);
-x_5 = lean_box(0);
-x_6 = lean_mk_array(x_4, x_5);
-x_7 = lean_unsigned_to_nat(0u);
-x_8 = l_Std_DHashMap_Internal_Raw_u2080_expand_go___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__3(x_7, x_1, x_6);
-return x_8;
 }
 }
-LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
-_start:
-{
-if (lean_obj_tag(x_3) == 0)
-{
-lean_object* x_4; 
-lean_dec(x_2);
-lean_dec(x_1);
-x_4 = lean_box(0);
-return x_4;
 }
-else
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_forEachEqc(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:
 {
-uint8_t x_5; 
-x_5 = !lean_is_exclusive(x_3);
-if (x_5 == 0)
+lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; size_t x_15; size_t x_16; lean_object* x_17; lean_object* x_18; 
+x_11 = l_Lean_Meta_Grind_getENodes(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+x_12 = lean_ctor_get(x_11, 0);
+lean_inc(x_12);
+x_13 = lean_ctor_get(x_11, 1);
+lean_inc(x_13);
+lean_dec(x_11);
+x_14 = lean_box(0);
+x_15 = lean_array_size(x_12);
+x_16 = 0;
+x_17 = lean_box(0);
+x_18 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachEqc___spec__1(x_1, x_12, x_14, x_12, x_15, x_16, x_17, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
+lean_dec(x_12);
+if (lean_obj_tag(x_18) == 0)
 {
-lean_object* x_6; lean_object* x_7; lean_object* x_8; uint8_t x_9; 
-x_6 = lean_ctor_get(x_3, 0);
-x_7 = lean_ctor_get(x_3, 1);
-x_8 = lean_ctor_get(x_3, 2);
-x_9 = lean_name_eq(x_6, x_1);
-if (x_9 == 0)
+uint8_t x_19; 
+x_19 = !lean_is_exclusive(x_18);
+if (x_19 == 0)
 {
-lean_object* x_10; 
-x_10 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_8);
-lean_ctor_set(x_3, 2, x_10);
-return x_3;
+lean_object* x_20; 
+x_20 = lean_ctor_get(x_18, 0);
+lean_dec(x_20);
+lean_ctor_set(x_18, 0, x_17);
+return x_18;
 }
 else
 {
-lean_dec(x_7);
-lean_dec(x_6);
-lean_ctor_set(x_3, 1, x_2);
-lean_ctor_set(x_3, 0, x_1);
-return x_3;
+lean_object* x_21; lean_object* x_22; 
+x_21 = lean_ctor_get(x_18, 1);
+lean_inc(x_21);
+lean_dec(x_18);
+x_22 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_22, 0, x_17);
+lean_ctor_set(x_22, 1, x_21);
+return x_22;
 }
 }
 else
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; uint8_t x_14; 
-x_11 = lean_ctor_get(x_3, 0);
-x_12 = lean_ctor_get(x_3, 1);
-x_13 = lean_ctor_get(x_3, 2);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_inc(x_11);
-lean_dec(x_3);
-x_14 = lean_name_eq(x_11, x_1);
-if (x_14 == 0)
+uint8_t x_23; 
+x_23 = !lean_is_exclusive(x_18);
+if (x_23 == 0)
 {
-lean_object* x_15; lean_object* x_16; 
-x_15 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_13);
-x_16 = lean_alloc_ctor(1, 3, 0);
-lean_ctor_set(x_16, 0, x_11);
-lean_ctor_set(x_16, 1, x_12);
-lean_ctor_set(x_16, 2, x_15);
-return x_16;
+return x_18;
 }
 else
 {
-lean_object* x_17; 
-lean_dec(x_12);
-lean_dec(x_11);
-x_17 = lean_alloc_ctor(1, 3, 0);
-lean_ctor_set(x_17, 0, x_1);
-lean_ctor_set(x_17, 1, x_2);
-lean_ctor_set(x_17, 2, x_13);
-return x_17;
-}
+lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+x_24 = lean_ctor_get(x_18, 0);
+x_25 = lean_ctor_get(x_18, 1);
+lean_inc(x_25);
+lean_inc(x_24);
+lean_dec(x_18);
+x_26 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_26, 0, x_24);
+lean_ctor_set(x_26, 1, x_25);
+return x_26;
 }
 }
 }
 }
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1() {
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachEqc___spec__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) {
 _start:
 {
-lean_object* x_1; 
-x_1 = l_Lean_Meta_Grind_builtinPropagatorsRef;
-return x_1;
+size_t x_17; size_t x_18; lean_object* x_19; 
+x_17 = lean_unbox_usize(x_5);
+lean_dec(x_5);
+x_18 = lean_unbox_usize(x_6);
+lean_dec(x_6);
+x_19 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_forEachEqc___spec__1(x_1, x_2, x_3, x_4, x_17, x_18, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_19;
 }
 }
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instInhabitedMethods___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:
 {
-lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; uint8_t x_10; 
-x_5 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1;
-x_6 = lean_st_ref_take(x_5, x_4);
-x_7 = lean_ctor_get(x_6, 0);
-lean_inc(x_7);
-x_8 = lean_ctor_get(x_7, 1);
-lean_inc(x_8);
-x_9 = lean_ctor_get(x_6, 1);
-lean_inc(x_9);
-lean_dec(x_6);
-x_10 = !lean_is_exclusive(x_7);
-if (x_10 == 0)
-{
-lean_object* x_11; uint8_t x_12; 
-x_11 = lean_ctor_get(x_7, 1);
-lean_dec(x_11);
-x_12 = !lean_is_exclusive(x_8);
-if (x_12 == 0)
-{
-lean_object* x_13; lean_object* x_14; lean_object* x_15; uint64_t x_16; uint64_t x_17; uint64_t x_18; uint64_t x_19; uint64_t x_20; uint64_t x_21; uint64_t x_22; size_t x_23; size_t x_24; size_t x_25; size_t x_26; size_t x_27; lean_object* x_28; uint8_t x_29; 
-x_13 = lean_ctor_get(x_8, 0);
-x_14 = lean_ctor_get(x_8, 1);
-x_15 = lean_array_get_size(x_14);
-x_16 = l_Lean_Name_hash___override(x_1);
-x_17 = 32;
-x_18 = lean_uint64_shift_right(x_16, x_17);
-x_19 = lean_uint64_xor(x_16, x_18);
-x_20 = 16;
-x_21 = lean_uint64_shift_right(x_19, x_20);
-x_22 = lean_uint64_xor(x_19, x_21);
-x_23 = lean_uint64_to_usize(x_22);
-x_24 = lean_usize_of_nat(x_15);
-lean_dec(x_15);
-x_25 = 1;
-x_26 = lean_usize_sub(x_24, x_25);
-x_27 = lean_usize_land(x_23, x_26);
-x_28 = lean_array_uget(x_14, x_27);
-x_29 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_1, x_28);
-if (x_29 == 0)
-{
-lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; uint8_t x_39; 
-x_30 = lean_unsigned_to_nat(1u);
-x_31 = lean_nat_add(x_13, x_30);
-lean_dec(x_13);
-x_32 = lean_alloc_ctor(1, 3, 0);
-lean_ctor_set(x_32, 0, x_1);
-lean_ctor_set(x_32, 1, x_2);
-lean_ctor_set(x_32, 2, x_28);
-x_33 = lean_array_uset(x_14, x_27, x_32);
-x_34 = lean_unsigned_to_nat(4u);
-x_35 = lean_nat_mul(x_31, x_34);
-x_36 = lean_unsigned_to_nat(3u);
-x_37 = lean_nat_div(x_35, x_36);
-lean_dec(x_35);
-x_38 = lean_array_get_size(x_33);
-x_39 = lean_nat_dec_le(x_37, x_38);
-lean_dec(x_38);
-lean_dec(x_37);
-if (x_39 == 0)
-{
-lean_object* x_40; lean_object* x_41; uint8_t x_42; 
-x_40 = l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(x_33);
-lean_ctor_set(x_8, 1, x_40);
-lean_ctor_set(x_8, 0, x_31);
-x_41 = lean_st_ref_set(x_5, x_7, x_9);
-x_42 = !lean_is_exclusive(x_41);
-if (x_42 == 0)
-{
-return x_41;
-}
-else
-{
-lean_object* x_43; lean_object* x_44; lean_object* x_45; 
-x_43 = lean_ctor_get(x_41, 0);
-x_44 = lean_ctor_get(x_41, 1);
-lean_inc(x_44);
-lean_inc(x_43);
-lean_dec(x_41);
-x_45 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_45, 0, x_43);
-lean_ctor_set(x_45, 1, x_44);
-return x_45;
-}
-}
-else
-{
-lean_object* x_46; uint8_t x_47; 
-lean_ctor_set(x_8, 1, x_33);
-lean_ctor_set(x_8, 0, x_31);
-x_46 = lean_st_ref_set(x_5, x_7, x_9);
-x_47 = !lean_is_exclusive(x_46);
-if (x_47 == 0)
-{
-return x_46;
-}
-else
-{
-lean_object* x_48; lean_object* x_49; lean_object* x_50; 
-x_48 = lean_ctor_get(x_46, 0);
-x_49 = lean_ctor_get(x_46, 1);
-lean_inc(x_49);
-lean_inc(x_48);
-lean_dec(x_46);
-x_50 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_50, 0, x_48);
-lean_ctor_set(x_50, 1, x_49);
-return x_50;
-}
-}
-}
-else
-{
-lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; uint8_t x_56; 
-x_51 = lean_box(0);
-x_52 = lean_array_uset(x_14, x_27, x_51);
-x_53 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_28);
-x_54 = lean_array_uset(x_52, x_27, x_53);
-lean_ctor_set(x_8, 1, x_54);
-x_55 = lean_st_ref_set(x_5, x_7, x_9);
-x_56 = !lean_is_exclusive(x_55);
-if (x_56 == 0)
-{
-return x_55;
-}
-else
-{
-lean_object* x_57; lean_object* x_58; lean_object* x_59; 
-x_57 = lean_ctor_get(x_55, 0);
-x_58 = lean_ctor_get(x_55, 1);
-lean_inc(x_58);
-lean_inc(x_57);
-lean_dec(x_55);
-x_59 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_59, 0, x_57);
-lean_ctor_set(x_59, 1, x_58);
-return x_59;
-}
-}
-}
-else
-{
-lean_object* x_60; lean_object* x_61; lean_object* x_62; uint64_t x_63; uint64_t x_64; uint64_t x_65; uint64_t x_66; uint64_t x_67; uint64_t x_68; uint64_t x_69; size_t x_70; size_t x_71; size_t x_72; size_t x_73; size_t x_74; lean_object* x_75; uint8_t x_76; 
-x_60 = lean_ctor_get(x_8, 0);
-x_61 = lean_ctor_get(x_8, 1);
-lean_inc(x_61);
-lean_inc(x_60);
-lean_dec(x_8);
-x_62 = lean_array_get_size(x_61);
-x_63 = l_Lean_Name_hash___override(x_1);
-x_64 = 32;
-x_65 = lean_uint64_shift_right(x_63, x_64);
-x_66 = lean_uint64_xor(x_63, x_65);
-x_67 = 16;
-x_68 = lean_uint64_shift_right(x_66, x_67);
-x_69 = lean_uint64_xor(x_66, x_68);
-x_70 = lean_uint64_to_usize(x_69);
-x_71 = lean_usize_of_nat(x_62);
-lean_dec(x_62);
-x_72 = 1;
-x_73 = lean_usize_sub(x_71, x_72);
-x_74 = lean_usize_land(x_70, x_73);
-x_75 = lean_array_uget(x_61, x_74);
-x_76 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_1, x_75);
-if (x_76 == 0)
-{
-lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; uint8_t x_86; 
-x_77 = lean_unsigned_to_nat(1u);
-x_78 = lean_nat_add(x_60, x_77);
-lean_dec(x_60);
-x_79 = lean_alloc_ctor(1, 3, 0);
-lean_ctor_set(x_79, 0, x_1);
-lean_ctor_set(x_79, 1, x_2);
-lean_ctor_set(x_79, 2, x_75);
-x_80 = lean_array_uset(x_61, x_74, x_79);
-x_81 = lean_unsigned_to_nat(4u);
-x_82 = lean_nat_mul(x_78, x_81);
-x_83 = lean_unsigned_to_nat(3u);
-x_84 = lean_nat_div(x_82, x_83);
-lean_dec(x_82);
-x_85 = lean_array_get_size(x_80);
-x_86 = lean_nat_dec_le(x_84, x_85);
-lean_dec(x_85);
-lean_dec(x_84);
-if (x_86 == 0)
-{
-lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; 
-x_87 = l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(x_80);
-x_88 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_88, 0, x_78);
-lean_ctor_set(x_88, 1, x_87);
-lean_ctor_set(x_7, 1, x_88);
-x_89 = lean_st_ref_set(x_5, x_7, x_9);
-x_90 = lean_ctor_get(x_89, 0);
-lean_inc(x_90);
-x_91 = lean_ctor_get(x_89, 1);
-lean_inc(x_91);
-if (lean_is_exclusive(x_89)) {
- lean_ctor_release(x_89, 0);
- lean_ctor_release(x_89, 1);
- x_92 = x_89;
-} else {
- lean_dec_ref(x_89);
- x_92 = lean_box(0);
-}
-if (lean_is_scalar(x_92)) {
- x_93 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_93 = x_92;
-}
-lean_ctor_set(x_93, 0, x_90);
-lean_ctor_set(x_93, 1, x_91);
-return x_93;
-}
-else
-{
-lean_object* x_94; lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; lean_object* x_99; 
-x_94 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_94, 0, x_78);
-lean_ctor_set(x_94, 1, x_80);
-lean_ctor_set(x_7, 1, x_94);
-x_95 = lean_st_ref_set(x_5, x_7, x_9);
-x_96 = lean_ctor_get(x_95, 0);
-lean_inc(x_96);
-x_97 = lean_ctor_get(x_95, 1);
-lean_inc(x_97);
-if (lean_is_exclusive(x_95)) {
- lean_ctor_release(x_95, 0);
- lean_ctor_release(x_95, 1);
- x_98 = x_95;
-} else {
- lean_dec_ref(x_95);
- x_98 = lean_box(0);
-}
-if (lean_is_scalar(x_98)) {
- x_99 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_99 = x_98;
-}
-lean_ctor_set(x_99, 0, x_96);
-lean_ctor_set(x_99, 1, x_97);
-return x_99;
-}
-}
-else
-{
-lean_object* x_100; lean_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; lean_object* x_106; lean_object* x_107; lean_object* x_108; lean_object* x_109; 
-x_100 = lean_box(0);
-x_101 = lean_array_uset(x_61, x_74, x_100);
-x_102 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_75);
-x_103 = lean_array_uset(x_101, x_74, x_102);
-x_104 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_104, 0, x_60);
-lean_ctor_set(x_104, 1, x_103);
-lean_ctor_set(x_7, 1, x_104);
-x_105 = lean_st_ref_set(x_5, x_7, x_9);
-x_106 = lean_ctor_get(x_105, 0);
-lean_inc(x_106);
-x_107 = lean_ctor_get(x_105, 1);
-lean_inc(x_107);
-if (lean_is_exclusive(x_105)) {
- lean_ctor_release(x_105, 0);
- lean_ctor_release(x_105, 1);
- x_108 = x_105;
-} else {
- lean_dec_ref(x_105);
- x_108 = lean_box(0);
-}
-if (lean_is_scalar(x_108)) {
- x_109 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_109 = x_108;
-}
-lean_ctor_set(x_109, 0, x_106);
-lean_ctor_set(x_109, 1, x_107);
-return x_109;
-}
-}
-}
-else
-{
-lean_object* x_110; lean_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; uint64_t x_115; uint64_t x_116; uint64_t x_117; uint64_t x_118; uint64_t x_119; uint64_t x_120; uint64_t x_121; size_t x_122; size_t x_123; size_t x_124; size_t x_125; size_t x_126; lean_object* x_127; uint8_t x_128; 
-x_110 = lean_ctor_get(x_7, 0);
-lean_inc(x_110);
-lean_dec(x_7);
-x_111 = lean_ctor_get(x_8, 0);
-lean_inc(x_111);
-x_112 = lean_ctor_get(x_8, 1);
-lean_inc(x_112);
-if (lean_is_exclusive(x_8)) {
- lean_ctor_release(x_8, 0);
- lean_ctor_release(x_8, 1);
- x_113 = x_8;
-} else {
- lean_dec_ref(x_8);
- x_113 = lean_box(0);
-}
-x_114 = lean_array_get_size(x_112);
-x_115 = l_Lean_Name_hash___override(x_1);
-x_116 = 32;
-x_117 = lean_uint64_shift_right(x_115, x_116);
-x_118 = lean_uint64_xor(x_115, x_117);
-x_119 = 16;
-x_120 = lean_uint64_shift_right(x_118, x_119);
-x_121 = lean_uint64_xor(x_118, x_120);
-x_122 = lean_uint64_to_usize(x_121);
-x_123 = lean_usize_of_nat(x_114);
-lean_dec(x_114);
-x_124 = 1;
-x_125 = lean_usize_sub(x_123, x_124);
-x_126 = lean_usize_land(x_122, x_125);
-x_127 = lean_array_uget(x_112, x_126);
-x_128 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_1, x_127);
-if (x_128 == 0)
-{
-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_object* x_135; lean_object* x_136; lean_object* x_137; uint8_t x_138; 
-x_129 = lean_unsigned_to_nat(1u);
-x_130 = lean_nat_add(x_111, x_129);
-lean_dec(x_111);
-x_131 = lean_alloc_ctor(1, 3, 0);
-lean_ctor_set(x_131, 0, x_1);
-lean_ctor_set(x_131, 1, x_2);
-lean_ctor_set(x_131, 2, x_127);
-x_132 = lean_array_uset(x_112, x_126, x_131);
-x_133 = lean_unsigned_to_nat(4u);
-x_134 = lean_nat_mul(x_130, x_133);
-x_135 = lean_unsigned_to_nat(3u);
-x_136 = lean_nat_div(x_134, x_135);
-lean_dec(x_134);
-x_137 = lean_array_get_size(x_132);
-x_138 = lean_nat_dec_le(x_136, x_137);
-lean_dec(x_137);
-lean_dec(x_136);
-if (x_138 == 0)
-{
-lean_object* x_139; lean_object* x_140; lean_object* x_141; lean_object* x_142; lean_object* x_143; lean_object* x_144; lean_object* x_145; lean_object* x_146; 
-x_139 = l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(x_132);
-if (lean_is_scalar(x_113)) {
- x_140 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_140 = x_113;
-}
-lean_ctor_set(x_140, 0, x_130);
-lean_ctor_set(x_140, 1, x_139);
-x_141 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_141, 0, x_110);
-lean_ctor_set(x_141, 1, x_140);
-x_142 = lean_st_ref_set(x_5, x_141, x_9);
-x_143 = lean_ctor_get(x_142, 0);
-lean_inc(x_143);
-x_144 = lean_ctor_get(x_142, 1);
-lean_inc(x_144);
-if (lean_is_exclusive(x_142)) {
- lean_ctor_release(x_142, 0);
- lean_ctor_release(x_142, 1);
- x_145 = x_142;
-} else {
- lean_dec_ref(x_142);
- x_145 = lean_box(0);
-}
-if (lean_is_scalar(x_145)) {
- x_146 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_146 = x_145;
-}
-lean_ctor_set(x_146, 0, x_143);
-lean_ctor_set(x_146, 1, x_144);
-return x_146;
-}
-else
-{
-lean_object* x_147; lean_object* x_148; lean_object* x_149; lean_object* x_150; lean_object* x_151; lean_object* x_152; lean_object* x_153; 
-if (lean_is_scalar(x_113)) {
- x_147 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_147 = x_113;
-}
-lean_ctor_set(x_147, 0, x_130);
-lean_ctor_set(x_147, 1, x_132);
-x_148 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_148, 0, x_110);
-lean_ctor_set(x_148, 1, x_147);
-x_149 = lean_st_ref_set(x_5, x_148, x_9);
-x_150 = lean_ctor_get(x_149, 0);
-lean_inc(x_150);
-x_151 = lean_ctor_get(x_149, 1);
-lean_inc(x_151);
-if (lean_is_exclusive(x_149)) {
- lean_ctor_release(x_149, 0);
- lean_ctor_release(x_149, 1);
- x_152 = x_149;
-} else {
- lean_dec_ref(x_149);
- x_152 = lean_box(0);
-}
-if (lean_is_scalar(x_152)) {
- x_153 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_153 = x_152;
-}
-lean_ctor_set(x_153, 0, x_150);
-lean_ctor_set(x_153, 1, x_151);
-return x_153;
-}
-}
-else
-{
-lean_object* x_154; lean_object* x_155; lean_object* x_156; lean_object* x_157; lean_object* x_158; lean_object* x_159; lean_object* x_160; lean_object* x_161; lean_object* x_162; lean_object* x_163; lean_object* x_164; 
-x_154 = lean_box(0);
-x_155 = lean_array_uset(x_112, x_126, x_154);
-x_156 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_127);
-x_157 = lean_array_uset(x_155, x_126, x_156);
-if (lean_is_scalar(x_113)) {
- x_158 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_158 = x_113;
-}
-lean_ctor_set(x_158, 0, x_111);
-lean_ctor_set(x_158, 1, x_157);
-x_159 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_159, 0, x_110);
-lean_ctor_set(x_159, 1, x_158);
-x_160 = lean_st_ref_set(x_5, x_159, x_9);
-x_161 = lean_ctor_get(x_160, 0);
-lean_inc(x_161);
-x_162 = lean_ctor_get(x_160, 1);
-lean_inc(x_162);
-if (lean_is_exclusive(x_160)) {
- lean_ctor_release(x_160, 0);
- lean_ctor_release(x_160, 1);
- x_163 = x_160;
-} else {
- lean_dec_ref(x_160);
- x_163 = lean_box(0);
-}
-if (lean_is_scalar(x_163)) {
- x_164 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_164 = x_163;
-}
-lean_ctor_set(x_164, 0, x_161);
-lean_ctor_set(x_164, 1, x_162);
-return x_164;
-}
-}
-}
-}
-LEAN_EXPORT uint8_t l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__2(lean_object* x_1) {
-_start:
-{
-uint8_t x_2; 
-x_2 = 0;
-return x_2;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__3(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
-_start:
-{
-lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; uint8_t x_10; 
-x_5 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1;
-x_6 = lean_st_ref_take(x_5, x_4);
-x_7 = lean_ctor_get(x_6, 0);
-lean_inc(x_7);
-x_8 = lean_ctor_get(x_7, 0);
-lean_inc(x_8);
-x_9 = lean_ctor_get(x_6, 1);
-lean_inc(x_9);
-lean_dec(x_6);
-x_10 = !lean_is_exclusive(x_7);
-if (x_10 == 0)
-{
-lean_object* x_11; uint8_t x_12; 
-x_11 = lean_ctor_get(x_7, 0);
-lean_dec(x_11);
-x_12 = !lean_is_exclusive(x_8);
-if (x_12 == 0)
-{
-lean_object* x_13; lean_object* x_14; lean_object* x_15; uint64_t x_16; uint64_t x_17; uint64_t x_18; uint64_t x_19; uint64_t x_20; uint64_t x_21; uint64_t x_22; size_t x_23; size_t x_24; size_t x_25; size_t x_26; size_t x_27; lean_object* x_28; uint8_t x_29; 
-x_13 = lean_ctor_get(x_8, 0);
-x_14 = lean_ctor_get(x_8, 1);
-x_15 = lean_array_get_size(x_14);
-x_16 = l_Lean_Name_hash___override(x_1);
-x_17 = 32;
-x_18 = lean_uint64_shift_right(x_16, x_17);
-x_19 = lean_uint64_xor(x_16, x_18);
-x_20 = 16;
-x_21 = lean_uint64_shift_right(x_19, x_20);
-x_22 = lean_uint64_xor(x_19, x_21);
-x_23 = lean_uint64_to_usize(x_22);
-x_24 = lean_usize_of_nat(x_15);
-lean_dec(x_15);
-x_25 = 1;
-x_26 = lean_usize_sub(x_24, x_25);
-x_27 = lean_usize_land(x_23, x_26);
-x_28 = lean_array_uget(x_14, x_27);
-x_29 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_1, x_28);
-if (x_29 == 0)
-{
-lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; uint8_t x_39; 
-x_30 = lean_unsigned_to_nat(1u);
-x_31 = lean_nat_add(x_13, x_30);
-lean_dec(x_13);
-x_32 = lean_alloc_ctor(1, 3, 0);
-lean_ctor_set(x_32, 0, x_1);
-lean_ctor_set(x_32, 1, x_2);
-lean_ctor_set(x_32, 2, x_28);
-x_33 = lean_array_uset(x_14, x_27, x_32);
-x_34 = lean_unsigned_to_nat(4u);
-x_35 = lean_nat_mul(x_31, x_34);
-x_36 = lean_unsigned_to_nat(3u);
-x_37 = lean_nat_div(x_35, x_36);
-lean_dec(x_35);
-x_38 = lean_array_get_size(x_33);
-x_39 = lean_nat_dec_le(x_37, x_38);
-lean_dec(x_38);
-lean_dec(x_37);
-if (x_39 == 0)
-{
-lean_object* x_40; lean_object* x_41; uint8_t x_42; 
-x_40 = l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(x_33);
-lean_ctor_set(x_8, 1, x_40);
-lean_ctor_set(x_8, 0, x_31);
-x_41 = lean_st_ref_set(x_5, x_7, x_9);
-x_42 = !lean_is_exclusive(x_41);
-if (x_42 == 0)
-{
-return x_41;
-}
-else
-{
-lean_object* x_43; lean_object* x_44; lean_object* x_45; 
-x_43 = lean_ctor_get(x_41, 0);
-x_44 = lean_ctor_get(x_41, 1);
-lean_inc(x_44);
-lean_inc(x_43);
-lean_dec(x_41);
-x_45 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_45, 0, x_43);
-lean_ctor_set(x_45, 1, x_44);
-return x_45;
-}
-}
-else
-{
-lean_object* x_46; uint8_t x_47; 
-lean_ctor_set(x_8, 1, x_33);
-lean_ctor_set(x_8, 0, x_31);
-x_46 = lean_st_ref_set(x_5, x_7, x_9);
-x_47 = !lean_is_exclusive(x_46);
-if (x_47 == 0)
-{
-return x_46;
-}
-else
-{
-lean_object* x_48; lean_object* x_49; lean_object* x_50; 
-x_48 = lean_ctor_get(x_46, 0);
-x_49 = lean_ctor_get(x_46, 1);
-lean_inc(x_49);
-lean_inc(x_48);
-lean_dec(x_46);
-x_50 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_50, 0, x_48);
-lean_ctor_set(x_50, 1, x_49);
-return x_50;
-}
-}
-}
-else
-{
-lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; uint8_t x_56; 
-x_51 = lean_box(0);
-x_52 = lean_array_uset(x_14, x_27, x_51);
-x_53 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_28);
-x_54 = lean_array_uset(x_52, x_27, x_53);
-lean_ctor_set(x_8, 1, x_54);
-x_55 = lean_st_ref_set(x_5, x_7, x_9);
-x_56 = !lean_is_exclusive(x_55);
-if (x_56 == 0)
-{
-return x_55;
-}
-else
-{
-lean_object* x_57; lean_object* x_58; lean_object* x_59; 
-x_57 = lean_ctor_get(x_55, 0);
-x_58 = lean_ctor_get(x_55, 1);
-lean_inc(x_58);
-lean_inc(x_57);
-lean_dec(x_55);
-x_59 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_59, 0, x_57);
-lean_ctor_set(x_59, 1, x_58);
-return x_59;
-}
-}
-}
-else
-{
-lean_object* x_60; lean_object* x_61; lean_object* x_62; uint64_t x_63; uint64_t x_64; uint64_t x_65; uint64_t x_66; uint64_t x_67; uint64_t x_68; uint64_t x_69; size_t x_70; size_t x_71; size_t x_72; size_t x_73; size_t x_74; lean_object* x_75; uint8_t x_76; 
-x_60 = lean_ctor_get(x_8, 0);
-x_61 = lean_ctor_get(x_8, 1);
-lean_inc(x_61);
-lean_inc(x_60);
-lean_dec(x_8);
-x_62 = lean_array_get_size(x_61);
-x_63 = l_Lean_Name_hash___override(x_1);
-x_64 = 32;
-x_65 = lean_uint64_shift_right(x_63, x_64);
-x_66 = lean_uint64_xor(x_63, x_65);
-x_67 = 16;
-x_68 = lean_uint64_shift_right(x_66, x_67);
-x_69 = lean_uint64_xor(x_66, x_68);
-x_70 = lean_uint64_to_usize(x_69);
-x_71 = lean_usize_of_nat(x_62);
-lean_dec(x_62);
-x_72 = 1;
-x_73 = lean_usize_sub(x_71, x_72);
-x_74 = lean_usize_land(x_70, x_73);
-x_75 = lean_array_uget(x_61, x_74);
-x_76 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_1, x_75);
-if (x_76 == 0)
-{
-lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; uint8_t x_86; 
-x_77 = lean_unsigned_to_nat(1u);
-x_78 = lean_nat_add(x_60, x_77);
-lean_dec(x_60);
-x_79 = lean_alloc_ctor(1, 3, 0);
-lean_ctor_set(x_79, 0, x_1);
-lean_ctor_set(x_79, 1, x_2);
-lean_ctor_set(x_79, 2, x_75);
-x_80 = lean_array_uset(x_61, x_74, x_79);
-x_81 = lean_unsigned_to_nat(4u);
-x_82 = lean_nat_mul(x_78, x_81);
-x_83 = lean_unsigned_to_nat(3u);
-x_84 = lean_nat_div(x_82, x_83);
-lean_dec(x_82);
-x_85 = lean_array_get_size(x_80);
-x_86 = lean_nat_dec_le(x_84, x_85);
-lean_dec(x_85);
-lean_dec(x_84);
-if (x_86 == 0)
-{
-lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; 
-x_87 = l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(x_80);
-x_88 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_88, 0, x_78);
-lean_ctor_set(x_88, 1, x_87);
-lean_ctor_set(x_7, 0, x_88);
-x_89 = lean_st_ref_set(x_5, x_7, x_9);
-x_90 = lean_ctor_get(x_89, 0);
-lean_inc(x_90);
-x_91 = lean_ctor_get(x_89, 1);
-lean_inc(x_91);
-if (lean_is_exclusive(x_89)) {
- lean_ctor_release(x_89, 0);
- lean_ctor_release(x_89, 1);
- x_92 = x_89;
-} else {
- lean_dec_ref(x_89);
- x_92 = lean_box(0);
-}
-if (lean_is_scalar(x_92)) {
- x_93 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_93 = x_92;
-}
-lean_ctor_set(x_93, 0, x_90);
-lean_ctor_set(x_93, 1, x_91);
-return x_93;
-}
-else
-{
-lean_object* x_94; lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; lean_object* x_99; 
-x_94 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_94, 0, x_78);
-lean_ctor_set(x_94, 1, x_80);
-lean_ctor_set(x_7, 0, x_94);
-x_95 = lean_st_ref_set(x_5, x_7, x_9);
-x_96 = lean_ctor_get(x_95, 0);
-lean_inc(x_96);
-x_97 = lean_ctor_get(x_95, 1);
-lean_inc(x_97);
-if (lean_is_exclusive(x_95)) {
- lean_ctor_release(x_95, 0);
- lean_ctor_release(x_95, 1);
- x_98 = x_95;
-} else {
- lean_dec_ref(x_95);
- x_98 = lean_box(0);
-}
-if (lean_is_scalar(x_98)) {
- x_99 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_99 = x_98;
-}
-lean_ctor_set(x_99, 0, x_96);
-lean_ctor_set(x_99, 1, x_97);
-return x_99;
-}
-}
-else
-{
-lean_object* x_100; lean_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; lean_object* x_106; lean_object* x_107; lean_object* x_108; lean_object* x_109; 
-x_100 = lean_box(0);
-x_101 = lean_array_uset(x_61, x_74, x_100);
-x_102 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_75);
-x_103 = lean_array_uset(x_101, x_74, x_102);
-x_104 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_104, 0, x_60);
-lean_ctor_set(x_104, 1, x_103);
-lean_ctor_set(x_7, 0, x_104);
-x_105 = lean_st_ref_set(x_5, x_7, x_9);
-x_106 = lean_ctor_get(x_105, 0);
-lean_inc(x_106);
-x_107 = lean_ctor_get(x_105, 1);
-lean_inc(x_107);
-if (lean_is_exclusive(x_105)) {
- lean_ctor_release(x_105, 0);
- lean_ctor_release(x_105, 1);
- x_108 = x_105;
-} else {
- lean_dec_ref(x_105);
- x_108 = lean_box(0);
-}
-if (lean_is_scalar(x_108)) {
- x_109 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_109 = x_108;
-}
-lean_ctor_set(x_109, 0, x_106);
-lean_ctor_set(x_109, 1, x_107);
-return x_109;
-}
-}
-}
-else
-{
-lean_object* x_110; lean_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; uint64_t x_115; uint64_t x_116; uint64_t x_117; uint64_t x_118; uint64_t x_119; uint64_t x_120; uint64_t x_121; size_t x_122; size_t x_123; size_t x_124; size_t x_125; size_t x_126; lean_object* x_127; uint8_t x_128; 
-x_110 = lean_ctor_get(x_7, 1);
-lean_inc(x_110);
-lean_dec(x_7);
-x_111 = lean_ctor_get(x_8, 0);
-lean_inc(x_111);
-x_112 = lean_ctor_get(x_8, 1);
-lean_inc(x_112);
-if (lean_is_exclusive(x_8)) {
- lean_ctor_release(x_8, 0);
- lean_ctor_release(x_8, 1);
- x_113 = x_8;
-} else {
- lean_dec_ref(x_8);
- x_113 = lean_box(0);
-}
-x_114 = lean_array_get_size(x_112);
-x_115 = l_Lean_Name_hash___override(x_1);
-x_116 = 32;
-x_117 = lean_uint64_shift_right(x_115, x_116);
-x_118 = lean_uint64_xor(x_115, x_117);
-x_119 = 16;
-x_120 = lean_uint64_shift_right(x_118, x_119);
-x_121 = lean_uint64_xor(x_118, x_120);
-x_122 = lean_uint64_to_usize(x_121);
-x_123 = lean_usize_of_nat(x_114);
-lean_dec(x_114);
-x_124 = 1;
-x_125 = lean_usize_sub(x_123, x_124);
-x_126 = lean_usize_land(x_122, x_125);
-x_127 = lean_array_uget(x_112, x_126);
-x_128 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_1, x_127);
-if (x_128 == 0)
-{
-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_object* x_135; lean_object* x_136; lean_object* x_137; uint8_t x_138; 
-x_129 = lean_unsigned_to_nat(1u);
-x_130 = lean_nat_add(x_111, x_129);
-lean_dec(x_111);
-x_131 = lean_alloc_ctor(1, 3, 0);
-lean_ctor_set(x_131, 0, x_1);
-lean_ctor_set(x_131, 1, x_2);
-lean_ctor_set(x_131, 2, x_127);
-x_132 = lean_array_uset(x_112, x_126, x_131);
-x_133 = lean_unsigned_to_nat(4u);
-x_134 = lean_nat_mul(x_130, x_133);
-x_135 = lean_unsigned_to_nat(3u);
-x_136 = lean_nat_div(x_134, x_135);
-lean_dec(x_134);
-x_137 = lean_array_get_size(x_132);
-x_138 = lean_nat_dec_le(x_136, x_137);
-lean_dec(x_137);
-lean_dec(x_136);
-if (x_138 == 0)
-{
-lean_object* x_139; lean_object* x_140; lean_object* x_141; lean_object* x_142; lean_object* x_143; lean_object* x_144; lean_object* x_145; lean_object* x_146; 
-x_139 = l_Std_DHashMap_Internal_Raw_u2080_expand___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__2(x_132);
-if (lean_is_scalar(x_113)) {
- x_140 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_140 = x_113;
-}
-lean_ctor_set(x_140, 0, x_130);
-lean_ctor_set(x_140, 1, x_139);
-x_141 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_141, 0, x_140);
-lean_ctor_set(x_141, 1, x_110);
-x_142 = lean_st_ref_set(x_5, x_141, x_9);
-x_143 = lean_ctor_get(x_142, 0);
-lean_inc(x_143);
-x_144 = lean_ctor_get(x_142, 1);
-lean_inc(x_144);
-if (lean_is_exclusive(x_142)) {
- lean_ctor_release(x_142, 0);
- lean_ctor_release(x_142, 1);
- x_145 = x_142;
-} else {
- lean_dec_ref(x_142);
- x_145 = lean_box(0);
-}
-if (lean_is_scalar(x_145)) {
- x_146 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_146 = x_145;
-}
-lean_ctor_set(x_146, 0, x_143);
-lean_ctor_set(x_146, 1, x_144);
-return x_146;
-}
-else
-{
-lean_object* x_147; lean_object* x_148; lean_object* x_149; lean_object* x_150; lean_object* x_151; lean_object* x_152; lean_object* x_153; 
-if (lean_is_scalar(x_113)) {
- x_147 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_147 = x_113;
-}
-lean_ctor_set(x_147, 0, x_130);
-lean_ctor_set(x_147, 1, x_132);
-x_148 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_148, 0, x_147);
-lean_ctor_set(x_148, 1, x_110);
-x_149 = lean_st_ref_set(x_5, x_148, x_9);
-x_150 = lean_ctor_get(x_149, 0);
-lean_inc(x_150);
-x_151 = lean_ctor_get(x_149, 1);
-lean_inc(x_151);
-if (lean_is_exclusive(x_149)) {
- lean_ctor_release(x_149, 0);
- lean_ctor_release(x_149, 1);
- x_152 = x_149;
-} else {
- lean_dec_ref(x_149);
- x_152 = lean_box(0);
-}
-if (lean_is_scalar(x_152)) {
- x_153 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_153 = x_152;
-}
-lean_ctor_set(x_153, 0, x_150);
-lean_ctor_set(x_153, 1, x_151);
-return x_153;
-}
-}
-else
-{
-lean_object* x_154; lean_object* x_155; lean_object* x_156; lean_object* x_157; lean_object* x_158; lean_object* x_159; lean_object* x_160; lean_object* x_161; lean_object* x_162; lean_object* x_163; lean_object* x_164; 
-x_154 = lean_box(0);
-x_155 = lean_array_uset(x_112, x_126, x_154);
-x_156 = l_Std_DHashMap_Internal_AssocList_replace___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__5(x_1, x_2, x_127);
-x_157 = lean_array_uset(x_155, x_126, x_156);
-if (lean_is_scalar(x_113)) {
- x_158 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_158 = x_113;
-}
-lean_ctor_set(x_158, 0, x_111);
-lean_ctor_set(x_158, 1, x_157);
-x_159 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_159, 0, x_158);
-lean_ctor_set(x_159, 1, x_110);
-x_160 = lean_st_ref_set(x_5, x_159, x_9);
-x_161 = lean_ctor_get(x_160, 0);
-lean_inc(x_161);
-x_162 = lean_ctor_get(x_160, 1);
-lean_inc(x_162);
-if (lean_is_exclusive(x_160)) {
- lean_ctor_release(x_160, 0);
- lean_ctor_release(x_160, 1);
- x_163 = x_160;
-} else {
- lean_dec_ref(x_160);
- x_163 = lean_box(0);
-}
-if (lean_is_scalar(x_163)) {
- x_164 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_164 = x_163;
-}
-lean_ctor_set(x_164, 0, x_161);
-lean_ctor_set(x_164, 1, x_162);
-return x_164;
-}
-}
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__2___boxed), 1, 0);
-return x_1;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__2() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("invalid builtin `grind` downward propagator `", 45, 45);
-return x_1;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("`, it has already been declared", 31, 31);
-return x_1;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__4() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("invalid builtin `grind` upward propagator `", 43, 43);
-return x_1;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4(uint8_t x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
-_start:
-{
-if (x_1 == 0)
-{
-lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; uint8_t x_10; 
-x_6 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1;
-x_7 = lean_st_ref_get(x_6, x_5);
-x_8 = lean_ctor_get(x_7, 0);
-lean_inc(x_8);
-x_9 = lean_ctor_get(x_8, 1);
-lean_inc(x_9);
-lean_dec(x_8);
-x_10 = !lean_is_exclusive(x_7);
-if (x_10 == 0)
-{
-lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; uint64_t x_15; uint64_t x_16; uint64_t x_17; uint64_t x_18; uint64_t x_19; uint64_t x_20; uint64_t x_21; size_t x_22; size_t x_23; size_t x_24; size_t x_25; size_t x_26; lean_object* x_27; uint8_t x_28; 
-x_11 = lean_ctor_get(x_7, 1);
-x_12 = lean_ctor_get(x_7, 0);
-lean_dec(x_12);
-x_13 = lean_ctor_get(x_9, 1);
-lean_inc(x_13);
-lean_dec(x_9);
-x_14 = lean_array_get_size(x_13);
-x_15 = l_Lean_Name_hash___override(x_2);
-x_16 = 32;
-x_17 = lean_uint64_shift_right(x_15, x_16);
-x_18 = lean_uint64_xor(x_15, x_17);
-x_19 = 16;
-x_20 = lean_uint64_shift_right(x_18, x_19);
-x_21 = lean_uint64_xor(x_18, x_20);
-x_22 = lean_uint64_to_usize(x_21);
-x_23 = lean_usize_of_nat(x_14);
-lean_dec(x_14);
-x_24 = 1;
-x_25 = lean_usize_sub(x_23, x_24);
-x_26 = lean_usize_land(x_22, x_25);
-x_27 = lean_array_uget(x_13, x_26);
-lean_dec(x_13);
-x_28 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_2, x_27);
-lean_dec(x_27);
-if (x_28 == 0)
-{
-lean_object* x_29; lean_object* x_30; 
-lean_free_object(x_7);
-x_29 = lean_box(0);
-x_30 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1(x_2, x_3, x_29, x_11);
-return x_30;
-}
-else
-{
-uint8_t x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; 
-lean_dec(x_3);
-x_31 = 1;
-x_32 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1;
-x_33 = l_Lean_Name_toString(x_2, x_31, x_32);
-x_34 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__2;
-x_35 = lean_string_append(x_34, x_33);
-lean_dec(x_33);
-x_36 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3;
-x_37 = lean_string_append(x_35, x_36);
-x_38 = lean_alloc_ctor(18, 1, 0);
-lean_ctor_set(x_38, 0, x_37);
-lean_ctor_set_tag(x_7, 1);
-lean_ctor_set(x_7, 0, x_38);
-return x_7;
-}
-}
-else
-{
-lean_object* x_39; lean_object* x_40; lean_object* x_41; uint64_t x_42; uint64_t x_43; uint64_t x_44; uint64_t x_45; uint64_t x_46; uint64_t x_47; uint64_t x_48; size_t x_49; size_t x_50; size_t x_51; size_t x_52; size_t x_53; lean_object* x_54; uint8_t x_55; 
-x_39 = lean_ctor_get(x_7, 1);
-lean_inc(x_39);
-lean_dec(x_7);
-x_40 = lean_ctor_get(x_9, 1);
-lean_inc(x_40);
-lean_dec(x_9);
-x_41 = lean_array_get_size(x_40);
-x_42 = l_Lean_Name_hash___override(x_2);
-x_43 = 32;
-x_44 = lean_uint64_shift_right(x_42, x_43);
-x_45 = lean_uint64_xor(x_42, x_44);
-x_46 = 16;
-x_47 = lean_uint64_shift_right(x_45, x_46);
-x_48 = lean_uint64_xor(x_45, x_47);
-x_49 = lean_uint64_to_usize(x_48);
-x_50 = lean_usize_of_nat(x_41);
-lean_dec(x_41);
-x_51 = 1;
-x_52 = lean_usize_sub(x_50, x_51);
-x_53 = lean_usize_land(x_49, x_52);
-x_54 = lean_array_uget(x_40, x_53);
-lean_dec(x_40);
-x_55 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_2, x_54);
-lean_dec(x_54);
-if (x_55 == 0)
-{
-lean_object* x_56; lean_object* x_57; 
-x_56 = lean_box(0);
-x_57 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1(x_2, x_3, x_56, x_39);
-return x_57;
-}
-else
-{
-uint8_t x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; 
-lean_dec(x_3);
-x_58 = 1;
-x_59 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1;
-x_60 = l_Lean_Name_toString(x_2, x_58, x_59);
-x_61 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__2;
-x_62 = lean_string_append(x_61, x_60);
-lean_dec(x_60);
-x_63 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3;
-x_64 = lean_string_append(x_62, x_63);
-x_65 = lean_alloc_ctor(18, 1, 0);
-lean_ctor_set(x_65, 0, x_64);
-x_66 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_66, 0, x_65);
-lean_ctor_set(x_66, 1, x_39);
-return x_66;
-}
-}
-}
-else
-{
-lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; uint8_t x_71; 
-x_67 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1;
-x_68 = lean_st_ref_get(x_67, x_5);
-x_69 = lean_ctor_get(x_68, 0);
-lean_inc(x_69);
-x_70 = lean_ctor_get(x_69, 0);
-lean_inc(x_70);
-lean_dec(x_69);
-x_71 = !lean_is_exclusive(x_68);
-if (x_71 == 0)
-{
-lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; uint64_t x_76; uint64_t x_77; uint64_t x_78; uint64_t x_79; uint64_t x_80; uint64_t x_81; uint64_t x_82; size_t x_83; size_t x_84; size_t x_85; size_t x_86; size_t x_87; lean_object* x_88; uint8_t x_89; 
-x_72 = lean_ctor_get(x_68, 1);
-x_73 = lean_ctor_get(x_68, 0);
-lean_dec(x_73);
-x_74 = lean_ctor_get(x_70, 1);
-lean_inc(x_74);
-lean_dec(x_70);
-x_75 = lean_array_get_size(x_74);
-x_76 = l_Lean_Name_hash___override(x_2);
-x_77 = 32;
-x_78 = lean_uint64_shift_right(x_76, x_77);
-x_79 = lean_uint64_xor(x_76, x_78);
-x_80 = 16;
-x_81 = lean_uint64_shift_right(x_79, x_80);
-x_82 = lean_uint64_xor(x_79, x_81);
-x_83 = lean_uint64_to_usize(x_82);
-x_84 = lean_usize_of_nat(x_75);
-lean_dec(x_75);
-x_85 = 1;
-x_86 = lean_usize_sub(x_84, x_85);
-x_87 = lean_usize_land(x_83, x_86);
-x_88 = lean_array_uget(x_74, x_87);
-lean_dec(x_74);
-x_89 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_2, x_88);
-lean_dec(x_88);
-if (x_89 == 0)
-{
-lean_object* x_90; lean_object* x_91; 
-lean_free_object(x_68);
-x_90 = lean_box(0);
-x_91 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__3(x_2, x_3, x_90, x_72);
-return x_91;
-}
-else
-{
-uint8_t x_92; lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; lean_object* x_99; 
-lean_dec(x_3);
-x_92 = 1;
-x_93 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1;
-x_94 = l_Lean_Name_toString(x_2, x_92, x_93);
-x_95 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__4;
-x_96 = lean_string_append(x_95, x_94);
-lean_dec(x_94);
-x_97 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3;
-x_98 = lean_string_append(x_96, x_97);
-x_99 = lean_alloc_ctor(18, 1, 0);
-lean_ctor_set(x_99, 0, x_98);
-lean_ctor_set_tag(x_68, 1);
-lean_ctor_set(x_68, 0, x_99);
-return x_68;
-}
-}
-else
-{
-lean_object* x_100; lean_object* x_101; lean_object* x_102; uint64_t x_103; uint64_t x_104; uint64_t x_105; uint64_t x_106; uint64_t x_107; uint64_t x_108; uint64_t x_109; size_t x_110; size_t x_111; size_t x_112; size_t x_113; size_t x_114; lean_object* x_115; uint8_t x_116; 
-x_100 = lean_ctor_get(x_68, 1);
-lean_inc(x_100);
-lean_dec(x_68);
-x_101 = lean_ctor_get(x_70, 1);
-lean_inc(x_101);
-lean_dec(x_70);
-x_102 = lean_array_get_size(x_101);
-x_103 = l_Lean_Name_hash___override(x_2);
-x_104 = 32;
-x_105 = lean_uint64_shift_right(x_103, x_104);
-x_106 = lean_uint64_xor(x_103, x_105);
-x_107 = 16;
-x_108 = lean_uint64_shift_right(x_106, x_107);
-x_109 = lean_uint64_xor(x_106, x_108);
-x_110 = lean_uint64_to_usize(x_109);
-x_111 = lean_usize_of_nat(x_102);
-lean_dec(x_102);
-x_112 = 1;
-x_113 = lean_usize_sub(x_111, x_112);
-x_114 = lean_usize_land(x_110, x_113);
-x_115 = lean_array_uget(x_101, x_114);
-lean_dec(x_101);
-x_116 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1(x_2, x_115);
-lean_dec(x_115);
-if (x_116 == 0)
-{
-lean_object* x_117; lean_object* x_118; 
-x_117 = lean_box(0);
-x_118 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__3(x_2, x_3, x_117, x_100);
-return x_118;
-}
-else
-{
-uint8_t x_119; lean_object* x_120; lean_object* x_121; lean_object* x_122; lean_object* x_123; lean_object* x_124; lean_object* x_125; lean_object* x_126; lean_object* x_127; 
-lean_dec(x_3);
-x_119 = 1;
-x_120 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1;
-x_121 = l_Lean_Name_toString(x_2, x_119, x_120);
-x_122 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__4;
-x_123 = lean_string_append(x_122, x_121);
-lean_dec(x_121);
-x_124 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3;
-x_125 = lean_string_append(x_123, x_124);
-x_126 = lean_alloc_ctor(18, 1, 0);
-lean_ctor_set(x_126, 0, x_125);
-x_127 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_127, 0, x_126);
-lean_ctor_set(x_127, 1, x_100);
-return x_127;
-}
-}
-}
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("invalid builtin `grind` propagator declaration, it can only be registered during initialization", 95, 95);
-return x_1;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__2() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__1;
-x_2 = lean_alloc_ctor(18, 1, 0);
-lean_ctor_set(x_2, 0, x_1);
-return x_2;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4) {
-_start:
-{
-lean_object* x_5; lean_object* x_6; uint8_t x_7; 
-x_5 = l_Lean_initializing(x_4);
-x_6 = lean_ctor_get(x_5, 0);
-lean_inc(x_6);
-x_7 = lean_unbox(x_6);
-lean_dec(x_6);
-if (x_7 == 0)
-{
-uint8_t x_8; 
-lean_dec(x_3);
-lean_dec(x_1);
-x_8 = !lean_is_exclusive(x_5);
-if (x_8 == 0)
-{
-lean_object* x_9; lean_object* x_10; 
-x_9 = lean_ctor_get(x_5, 0);
-lean_dec(x_9);
-x_10 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__2;
-lean_ctor_set_tag(x_5, 1);
-lean_ctor_set(x_5, 0, x_10);
-return x_5;
-}
-else
-{
-lean_object* x_11; lean_object* x_12; lean_object* x_13; 
-x_11 = lean_ctor_get(x_5, 1);
-lean_inc(x_11);
-lean_dec(x_5);
-x_12 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__2;
-x_13 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_13, 0, x_12);
-lean_ctor_set(x_13, 1, x_11);
-return x_13;
-}
-}
-else
-{
-lean_object* x_14; lean_object* x_15; lean_object* x_16; 
-x_14 = lean_ctor_get(x_5, 1);
-lean_inc(x_14);
-lean_dec(x_5);
-x_15 = lean_box(0);
-x_16 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4(x_2, x_1, x_3, x_15, x_14);
-return x_16;
-}
-}
-}
-LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___spec__1___boxed(lean_object* x_1, lean_object* x_2) {
-_start:
-{
-uint8_t x_3; lean_object* x_4; 
-x_3 = l_Std_DHashMap_Internal_AssocList_contains___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___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___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___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_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1(x_1, x_2, x_3, x_4);
-lean_dec(x_3);
-return x_5;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__2___boxed(lean_object* x_1) {
-_start:
-{
-uint8_t x_2; lean_object* x_3; 
-x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__2(x_1);
-lean_dec(x_1);
-x_3 = lean_box(x_2);
-return x_3;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__3___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_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__3(x_1, x_2, x_3, x_4);
-lean_dec(x_3);
-return x_5;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
-_start:
-{
-uint8_t x_6; lean_object* x_7; 
-x_6 = lean_unbox(x_1);
-lean_dec(x_1);
-x_7 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4(x_6, x_2, x_3, x_4, x_5);
-lean_dec(x_4);
-return x_7;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
-_start:
-{
-uint8_t x_5; lean_object* x_6; 
-x_5 = lean_unbox(x_2);
-lean_dec(x_2);
-x_6 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_1, x_5, x_3, x_4);
-return x_6;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_registerBuiltinUpwardPropagator(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
-_start:
-{
-uint8_t x_4; lean_object* x_5; 
-x_4 = 1;
-x_5 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_1, x_4, x_2, x_3);
-return x_5;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_registerBuiltinDownwardPropagator(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
-_start:
-{
-uint8_t x_4; lean_object* x_5; 
-x_4 = 0;
-x_5 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore(x_1, x_4, x_2, x_3);
-return x_5;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_resolveGlobalName___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__4(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:
-{
-lean_object* x_7; uint8_t x_8; 
-x_7 = lean_st_ref_get(x_5, x_6);
-x_8 = !lean_is_exclusive(x_7);
-if (x_8 == 0)
-{
-lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; 
-x_9 = lean_ctor_get(x_7, 0);
-x_10 = lean_ctor_get(x_9, 0);
-lean_inc(x_10);
-lean_dec(x_9);
-x_11 = lean_ctor_get(x_4, 6);
-lean_inc(x_11);
-x_12 = lean_ctor_get(x_4, 7);
-lean_inc(x_12);
-lean_dec(x_4);
-x_13 = l_Lean_ResolveName_resolveGlobalName(x_10, x_11, x_12, x_1);
-lean_ctor_set(x_7, 0, x_13);
-return x_7;
-}
-else
-{
-lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; 
-x_14 = lean_ctor_get(x_7, 0);
-x_15 = lean_ctor_get(x_7, 1);
-lean_inc(x_15);
-lean_inc(x_14);
-lean_dec(x_7);
-x_16 = lean_ctor_get(x_14, 0);
-lean_inc(x_16);
-lean_dec(x_14);
-x_17 = lean_ctor_get(x_4, 6);
-lean_inc(x_17);
-x_18 = lean_ctor_get(x_4, 7);
-lean_inc(x_18);
-lean_dec(x_4);
-x_19 = l_Lean_ResolveName_resolveGlobalName(x_16, x_17, x_18, x_1);
-x_20 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_20, 0, x_19);
-lean_ctor_set(x_20, 1, x_15);
-return x_20;
-}
-}
-}
-static lean_object* _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("unknown constant '", 18, 18);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__2() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__1;
-x_2 = l_Lean_stringToMessageData(x_1);
-return x_2;
-}
-}
-static lean_object* _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__3() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("'", 1, 1);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__4() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__3;
-x_2 = l_Lean_stringToMessageData(x_1);
-return x_2;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6(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:
-{
-uint8_t x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; 
-x_7 = 0;
-x_8 = l_Lean_MessageData_ofConstName(x_1, x_7);
-x_9 = l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__2;
-x_10 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_10, 0, x_9);
-lean_ctor_set(x_10, 1, x_8);
-x_11 = l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__4;
-x_12 = lean_alloc_ctor(7, 2, 0);
-lean_ctor_set(x_12, 0, x_10);
-lean_ctor_set(x_12, 1, x_11);
-x_13 = l_Lean_throwError___at_Lean_Meta_mkSimpCongrTheorem___spec__4(x_12, x_2, x_3, x_4, x_5, x_6);
-return x_13;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__5___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) {
-_start:
-{
-lean_object* x_9; lean_object* x_10; 
-x_9 = l_List_mapTR_loop___at_Lean_filterFieldList___spec__2(x_1, x_2);
-x_10 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_10, 0, x_9);
-lean_ctor_set(x_10, 1, x_8);
-return x_10;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__5(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) {
-_start:
-{
-lean_object* x_8; lean_object* x_9; uint8_t x_10; 
-x_8 = lean_box(0);
-x_9 = l_List_filterTR_loop___at_Lean_filterFieldList___spec__1(x_2, x_8);
-x_10 = l_List_isEmpty___rarg(x_9);
-if (x_10 == 0)
-{
-lean_object* x_11; lean_object* x_12; 
-lean_dec(x_1);
-x_11 = lean_box(0);
-x_12 = l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__5___lambda__1(x_9, x_8, x_11, x_3, x_4, x_5, x_6, x_7);
-return x_12;
-}
-else
-{
-lean_object* x_13; uint8_t x_14; 
-lean_dec(x_9);
-x_13 = l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6(x_1, x_3, x_4, x_5, x_6, x_7);
-x_14 = !lean_is_exclusive(x_13);
-if (x_14 == 0)
-{
-return x_13;
-}
-else
-{
-lean_object* x_15; lean_object* x_16; lean_object* x_17; 
-x_15 = lean_ctor_get(x_13, 0);
-x_16 = lean_ctor_get(x_13, 1);
-lean_inc(x_16);
-lean_inc(x_15);
-lean_dec(x_13);
-x_17 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_17, 0, x_15);
-lean_ctor_set(x_17, 1, x_16);
-return x_17;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_ResolveName_0__Lean_resolveGlobalConstCore___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__3(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:
-{
-lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; 
-lean_inc(x_4);
-lean_inc(x_1);
-x_7 = l_Lean_resolveGlobalName___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__4(x_1, x_2, x_3, x_4, x_5, x_6);
-x_8 = lean_ctor_get(x_7, 0);
-lean_inc(x_8);
-x_9 = lean_ctor_get(x_7, 1);
-lean_inc(x_9);
-lean_dec(x_7);
-x_10 = l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__5(x_1, x_8, x_2, x_3, x_4, x_5, x_9);
-lean_dec(x_4);
-return x_10;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__9(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:
-{
-lean_object* x_7; lean_object* x_8; uint8_t x_9; 
-x_7 = lean_ctor_get(x_4, 5);
-x_8 = l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(x_1, x_2, x_3, x_4, x_5, x_6);
-x_9 = !lean_is_exclusive(x_8);
-if (x_9 == 0)
-{
-lean_object* x_10; lean_object* x_11; 
-x_10 = lean_ctor_get(x_8, 0);
-lean_inc(x_7);
-x_11 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_11, 0, x_7);
-lean_ctor_set(x_11, 1, x_10);
-lean_ctor_set_tag(x_8, 1);
-lean_ctor_set(x_8, 0, x_11);
-return x_8;
-}
-else
-{
-lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
-x_12 = lean_ctor_get(x_8, 0);
-x_13 = lean_ctor_get(x_8, 1);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_dec(x_8);
-lean_inc(x_7);
-x_14 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_14, 0, x_7);
-lean_ctor_set(x_14, 1, x_12);
-x_15 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_15, 0, x_14);
-lean_ctor_set(x_15, 1, x_13);
-return x_15;
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__8(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) {
-_start:
-{
-uint8_t x_8; 
-x_8 = !lean_is_exclusive(x_5);
-if (x_8 == 0)
-{
-lean_object* x_9; lean_object* x_10; lean_object* x_11; 
-x_9 = lean_ctor_get(x_5, 5);
-x_10 = l_Lean_replaceRef(x_1, x_9);
-lean_dec(x_9);
-lean_ctor_set(x_5, 5, x_10);
-x_11 = l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__9(x_2, x_3, x_4, x_5, x_6, x_7);
-lean_dec(x_5);
-return x_11;
-}
-else
-{
-lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; lean_object* x_24; uint8_t x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
-x_12 = lean_ctor_get(x_5, 0);
-x_13 = lean_ctor_get(x_5, 1);
-x_14 = lean_ctor_get(x_5, 2);
-x_15 = lean_ctor_get(x_5, 3);
-x_16 = lean_ctor_get(x_5, 4);
-x_17 = lean_ctor_get(x_5, 5);
-x_18 = lean_ctor_get(x_5, 6);
-x_19 = lean_ctor_get(x_5, 7);
-x_20 = lean_ctor_get(x_5, 8);
-x_21 = lean_ctor_get(x_5, 9);
-x_22 = lean_ctor_get(x_5, 10);
-x_23 = lean_ctor_get_uint8(x_5, sizeof(void*)*12);
-x_24 = lean_ctor_get(x_5, 11);
-x_25 = lean_ctor_get_uint8(x_5, sizeof(void*)*12 + 1);
-lean_inc(x_24);
-lean_inc(x_22);
-lean_inc(x_21);
-lean_inc(x_20);
-lean_inc(x_19);
-lean_inc(x_18);
-lean_inc(x_17);
-lean_inc(x_16);
-lean_inc(x_15);
-lean_inc(x_14);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_dec(x_5);
-x_26 = l_Lean_replaceRef(x_1, x_17);
-lean_dec(x_17);
-x_27 = lean_alloc_ctor(0, 12, 2);
-lean_ctor_set(x_27, 0, x_12);
-lean_ctor_set(x_27, 1, x_13);
-lean_ctor_set(x_27, 2, x_14);
-lean_ctor_set(x_27, 3, x_15);
-lean_ctor_set(x_27, 4, x_16);
-lean_ctor_set(x_27, 5, x_26);
-lean_ctor_set(x_27, 6, x_18);
-lean_ctor_set(x_27, 7, x_19);
-lean_ctor_set(x_27, 8, x_20);
-lean_ctor_set(x_27, 9, x_21);
-lean_ctor_set(x_27, 10, x_22);
-lean_ctor_set(x_27, 11, x_24);
-lean_ctor_set_uint8(x_27, sizeof(void*)*12, x_23);
-lean_ctor_set_uint8(x_27, sizeof(void*)*12 + 1, x_25);
-x_28 = l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__9(x_2, x_3, x_4, x_27, x_6, x_7);
-lean_dec(x_27);
-return x_28;
-}
-}
-}
-static lean_object* _init_l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("expected identifier", 19, 19);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__2() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__1;
-x_2 = lean_alloc_ctor(3, 1, 0);
-lean_ctor_set(x_2, 0, x_1);
-return x_2;
-}
-}
-static lean_object* _init_l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__3() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__2;
-x_2 = l_Lean_MessageData_ofFormat(x_1);
-return x_2;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7(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) {
-_start:
-{
-if (lean_obj_tag(x_1) == 3)
-{
-lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; uint8_t x_12; 
-x_8 = lean_ctor_get(x_1, 2);
-lean_inc(x_8);
-x_9 = lean_ctor_get(x_1, 3);
-lean_inc(x_9);
-x_10 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__1;
-x_11 = l_List_filterMapTR_go___at_Lean_preprocessSyntaxAndResolve___spec__1(x_9, x_10);
-x_12 = l_List_isEmpty___rarg(x_11);
-if (x_12 == 0)
-{
-lean_object* x_13; 
-lean_dec(x_8);
-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_13 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_13, 0, x_11);
-lean_ctor_set(x_13, 1, x_7);
-return x_13;
-}
-else
-{
-uint8_t x_14; 
-lean_dec(x_11);
-x_14 = !lean_is_exclusive(x_5);
-if (x_14 == 0)
-{
-lean_object* x_15; lean_object* x_16; lean_object* x_17; 
-x_15 = lean_ctor_get(x_5, 5);
-x_16 = l_Lean_replaceRef(x_1, x_15);
-lean_dec(x_15);
-lean_dec(x_1);
-lean_ctor_set(x_5, 5, x_16);
-x_17 = lean_apply_6(x_2, x_8, x_3, x_4, x_5, x_6, x_7);
-return x_17;
-}
-else
-{
-lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; uint8_t x_29; lean_object* x_30; uint8_t x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; 
-x_18 = lean_ctor_get(x_5, 0);
-x_19 = lean_ctor_get(x_5, 1);
-x_20 = lean_ctor_get(x_5, 2);
-x_21 = lean_ctor_get(x_5, 3);
-x_22 = lean_ctor_get(x_5, 4);
-x_23 = lean_ctor_get(x_5, 5);
-x_24 = lean_ctor_get(x_5, 6);
-x_25 = lean_ctor_get(x_5, 7);
-x_26 = lean_ctor_get(x_5, 8);
-x_27 = lean_ctor_get(x_5, 9);
-x_28 = lean_ctor_get(x_5, 10);
-x_29 = lean_ctor_get_uint8(x_5, sizeof(void*)*12);
-x_30 = lean_ctor_get(x_5, 11);
-x_31 = lean_ctor_get_uint8(x_5, sizeof(void*)*12 + 1);
-lean_inc(x_30);
-lean_inc(x_28);
-lean_inc(x_27);
-lean_inc(x_26);
-lean_inc(x_25);
-lean_inc(x_24);
-lean_inc(x_23);
-lean_inc(x_22);
-lean_inc(x_21);
-lean_inc(x_20);
-lean_inc(x_19);
-lean_inc(x_18);
-lean_dec(x_5);
-x_32 = l_Lean_replaceRef(x_1, x_23);
-lean_dec(x_23);
-lean_dec(x_1);
-x_33 = lean_alloc_ctor(0, 12, 2);
-lean_ctor_set(x_33, 0, x_18);
-lean_ctor_set(x_33, 1, x_19);
-lean_ctor_set(x_33, 2, x_20);
-lean_ctor_set(x_33, 3, x_21);
-lean_ctor_set(x_33, 4, x_22);
-lean_ctor_set(x_33, 5, x_32);
-lean_ctor_set(x_33, 6, x_24);
-lean_ctor_set(x_33, 7, x_25);
-lean_ctor_set(x_33, 8, x_26);
-lean_ctor_set(x_33, 9, x_27);
-lean_ctor_set(x_33, 10, x_28);
-lean_ctor_set(x_33, 11, x_30);
-lean_ctor_set_uint8(x_33, sizeof(void*)*12, x_29);
-lean_ctor_set_uint8(x_33, sizeof(void*)*12 + 1, x_31);
-x_34 = lean_apply_6(x_2, x_8, x_3, x_4, x_33, x_6, x_7);
-return x_34;
-}
-}
-}
-else
-{
-lean_object* x_35; lean_object* x_36; 
-lean_dec(x_2);
-x_35 = l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__3;
-x_36 = l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__8(x_1, x_35, x_3, x_4, x_5, x_6, x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_1);
-return x_36;
-}
-}
-}
-static lean_object* _init_l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__2___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l___private_Lean_ResolveName_0__Lean_resolveGlobalConstCore___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__3___boxed), 6, 0);
-return x_1;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__2(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:
-{
-lean_object* x_7; lean_object* x_8; 
-x_7 = l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__2___closed__1;
-x_8 = l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7(x_1, x_7, x_2, x_3, x_4, x_5, x_6);
-return x_8;
-}
-}
-static lean_object* _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__11___closed__1() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_instMonadMetaM;
-x_2 = l_Lean_instInhabitedName;
-x_3 = l_instInhabitedOfMonad___rarg(x_1, x_2);
-return x_3;
-}
-}
-LEAN_EXPORT lean_object* l_panic___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__11(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:
-{
-lean_object* x_7; lean_object* x_8; lean_object* x_9; 
-x_7 = l_panic___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__11___closed__1;
-x_8 = lean_panic_fn(x_7, x_1);
-x_9 = lean_apply_5(x_8, x_2, x_3, x_4, x_5, x_6);
-return x_9;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__13(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:
-{
-lean_object* x_7; lean_object* x_8; uint8_t x_9; 
-x_7 = lean_ctor_get(x_4, 5);
-x_8 = l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(x_1, x_2, x_3, x_4, x_5, x_6);
-x_9 = !lean_is_exclusive(x_8);
-if (x_9 == 0)
-{
-lean_object* x_10; lean_object* x_11; 
-x_10 = lean_ctor_get(x_8, 0);
-lean_inc(x_7);
-x_11 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_11, 0, x_7);
-lean_ctor_set(x_11, 1, x_10);
-lean_ctor_set_tag(x_8, 1);
-lean_ctor_set(x_8, 0, x_11);
-return x_8;
-}
-else
-{
-lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
-x_12 = lean_ctor_get(x_8, 0);
-x_13 = lean_ctor_get(x_8, 1);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_dec(x_8);
-lean_inc(x_7);
-x_14 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_14, 0, x_7);
-lean_ctor_set(x_14, 1, x_12);
-x_15 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_15, 0, x_14);
-lean_ctor_set(x_15, 1, x_13);
-return x_15;
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__12(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) {
-_start:
-{
-uint8_t x_8; 
-x_8 = !lean_is_exclusive(x_5);
-if (x_8 == 0)
-{
-lean_object* x_9; lean_object* x_10; lean_object* x_11; 
-x_9 = lean_ctor_get(x_5, 5);
-x_10 = l_Lean_replaceRef(x_1, x_9);
-lean_dec(x_9);
-lean_ctor_set(x_5, 5, x_10);
-x_11 = l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__13(x_2, x_3, x_4, x_5, x_6, x_7);
-lean_dec(x_5);
-return x_11;
-}
-else
-{
-lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; lean_object* x_24; uint8_t x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
-x_12 = lean_ctor_get(x_5, 0);
-x_13 = lean_ctor_get(x_5, 1);
-x_14 = lean_ctor_get(x_5, 2);
-x_15 = lean_ctor_get(x_5, 3);
-x_16 = lean_ctor_get(x_5, 4);
-x_17 = lean_ctor_get(x_5, 5);
-x_18 = lean_ctor_get(x_5, 6);
-x_19 = lean_ctor_get(x_5, 7);
-x_20 = lean_ctor_get(x_5, 8);
-x_21 = lean_ctor_get(x_5, 9);
-x_22 = lean_ctor_get(x_5, 10);
-x_23 = lean_ctor_get_uint8(x_5, sizeof(void*)*12);
-x_24 = lean_ctor_get(x_5, 11);
-x_25 = lean_ctor_get_uint8(x_5, sizeof(void*)*12 + 1);
-lean_inc(x_24);
-lean_inc(x_22);
-lean_inc(x_21);
-lean_inc(x_20);
-lean_inc(x_19);
-lean_inc(x_18);
-lean_inc(x_17);
-lean_inc(x_16);
-lean_inc(x_15);
-lean_inc(x_14);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_dec(x_5);
-x_26 = l_Lean_replaceRef(x_1, x_17);
-lean_dec(x_17);
-x_27 = lean_alloc_ctor(0, 12, 2);
-lean_ctor_set(x_27, 0, x_12);
-lean_ctor_set(x_27, 1, x_13);
-lean_ctor_set(x_27, 2, x_14);
-lean_ctor_set(x_27, 3, x_15);
-lean_ctor_set(x_27, 4, x_16);
-lean_ctor_set(x_27, 5, x_26);
-lean_ctor_set(x_27, 6, x_18);
-lean_ctor_set(x_27, 7, x_19);
-lean_ctor_set(x_27, 8, x_20);
-lean_ctor_set(x_27, 9, x_21);
-lean_ctor_set(x_27, 10, x_22);
-lean_ctor_set(x_27, 11, x_24);
-lean_ctor_set_uint8(x_27, sizeof(void*)*12, x_23);
-lean_ctor_set_uint8(x_27, sizeof(void*)*12 + 1, x_25);
-x_28 = l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__13(x_2, x_3, x_4, x_27, x_6, x_7);
-lean_dec(x_27);
-return x_28;
-}
-}
-}
-static lean_object* _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Lean.ResolveName", 16, 16);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__2() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Lean.ensureNonAmbiguous", 23, 23);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__3() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("unreachable code has been reached", 33, 33);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__4() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__1;
-x_2 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__2;
-x_3 = lean_unsigned_to_nat(364u);
-x_4 = lean_unsigned_to_nat(11u);
-x_5 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__3;
-x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
-return x_6;
-}
-}
-static lean_object* _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__5() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("ambiguous identifier '", 22, 22);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__6() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("', possible interpretations: ", 29, 29);
-return x_1;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10(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) {
-_start:
-{
-if (lean_obj_tag(x_2) == 0)
-{
-lean_object* x_8; lean_object* x_9; 
-lean_dec(x_1);
-x_8 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__4;
-x_9 = l_panic___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__11(x_8, x_3, x_4, x_5, x_6, x_7);
-return x_9;
-}
-else
-{
-lean_object* x_10; 
-x_10 = lean_ctor_get(x_2, 1);
-lean_inc(x_10);
-if (lean_obj_tag(x_10) == 0)
-{
-uint8_t x_11; 
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_1);
-x_11 = !lean_is_exclusive(x_2);
-if (x_11 == 0)
-{
-lean_object* x_12; 
-x_12 = lean_ctor_get(x_2, 1);
-lean_dec(x_12);
-lean_ctor_set_tag(x_2, 0);
-lean_ctor_set(x_2, 1, x_7);
-return x_2;
-}
-else
-{
-lean_object* x_13; lean_object* x_14; 
-x_13 = lean_ctor_get(x_2, 0);
-lean_inc(x_13);
-lean_dec(x_2);
-x_14 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_14, 0, x_13);
-lean_ctor_set(x_14, 1, x_7);
-return x_14;
-}
-}
-else
-{
-lean_object* x_15; uint8_t x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; 
-lean_dec(x_10);
-x_15 = lean_box(0);
-x_16 = 0;
-x_17 = lean_unsigned_to_nat(0u);
-lean_inc(x_1);
-x_18 = l_Lean_Syntax_formatStxAux(x_15, x_16, x_17, x_1);
-x_19 = l_Std_Format_defWidth;
-x_20 = lean_format_pretty(x_18, x_19, x_17, x_17);
-x_21 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__5;
-x_22 = lean_string_append(x_21, x_20);
-lean_dec(x_20);
-x_23 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__6;
-x_24 = lean_string_append(x_22, x_23);
-x_25 = lean_box(0);
-x_26 = l_List_mapTR_loop___at_Lean_ensureNonAmbiguous___spec__2(x_2, x_25);
-x_27 = l_List_toString___at_Lean_ensureNoOverload___spec__2(x_26);
-lean_dec(x_26);
-x_28 = lean_string_append(x_24, x_27);
-lean_dec(x_27);
-x_29 = l_Lean_Meta_Grind_getENode___closed__3;
-x_30 = lean_string_append(x_28, x_29);
-x_31 = lean_alloc_ctor(3, 1, 0);
-lean_ctor_set(x_31, 0, x_30);
-x_32 = l_Lean_MessageData_ofFormat(x_31);
-x_33 = l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__12(x_1, x_32, x_3, x_4, x_5, x_6, x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_1);
-return x_33;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_resolveGlobalConstNoOverload___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__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:
-{
-lean_object* x_7; lean_object* x_8; 
-x_7 = lean_alloc_closure((void*)(l___private_Lean_ResolveName_0__Lean_resolveGlobalConstCore___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__3___boxed), 6, 0);
-lean_inc(x_5);
-lean_inc(x_4);
-lean_inc(x_3);
-lean_inc(x_2);
-lean_inc(x_1);
-x_8 = l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7(x_1, x_7, x_2, x_3, x_4, x_5, x_6);
-if (lean_obj_tag(x_8) == 0)
-{
-lean_object* x_9; lean_object* x_10; lean_object* x_11; 
-x_9 = lean_ctor_get(x_8, 0);
-lean_inc(x_9);
-x_10 = lean_ctor_get(x_8, 1);
-lean_inc(x_10);
-lean_dec(x_8);
-x_11 = l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10(x_1, x_9, x_2, x_3, x_4, x_5, x_10);
-return x_11;
-}
-else
-{
-uint8_t x_12; 
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-x_12 = !lean_is_exclusive(x_8);
-if (x_12 == 0)
-{
-return x_8;
-}
-else
-{
-lean_object* x_13; lean_object* x_14; lean_object* x_15; 
-x_13 = lean_ctor_get(x_8, 0);
-x_14 = lean_ctor_get(x_8, 1);
-lean_inc(x_14);
-lean_inc(x_13);
-lean_dec(x_8);
-x_15 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_15, 0, x_13);
-lean_ctor_set(x_15, 1, x_14);
-return x_15;
-}
-}
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Parser", 6, 6);
-return x_1;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__2() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Tactic", 6, 6);
-return x_1;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__3() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("simpPost", 8, 8);
-return x_1;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__4() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__6;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__1;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__2;
-x_4 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__3;
-x_5 = l_Lean_Name_mkStr4(x_1, x_2, x_3, x_4);
-return x_5;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__5() {
-_start:
-{
-uint8_t x_1; uint8_t x_2; uint8_t x_3; uint8_t x_4; uint8_t x_5; lean_object* x_6; 
-x_1 = 0;
-x_2 = 1;
-x_3 = 1;
-x_4 = 0;
-x_5 = 2;
-x_6 = lean_alloc_ctor(0, 0, 17);
-lean_ctor_set_uint8(x_6, 0, x_1);
-lean_ctor_set_uint8(x_6, 1, x_1);
-lean_ctor_set_uint8(x_6, 2, x_1);
-lean_ctor_set_uint8(x_6, 3, x_1);
-lean_ctor_set_uint8(x_6, 4, x_1);
-lean_ctor_set_uint8(x_6, 5, x_2);
-lean_ctor_set_uint8(x_6, 6, x_2);
-lean_ctor_set_uint8(x_6, 7, x_1);
-lean_ctor_set_uint8(x_6, 8, x_2);
-lean_ctor_set_uint8(x_6, 9, x_3);
-lean_ctor_set_uint8(x_6, 10, x_4);
-lean_ctor_set_uint8(x_6, 11, x_2);
-lean_ctor_set_uint8(x_6, 12, x_2);
-lean_ctor_set_uint8(x_6, 13, x_2);
-lean_ctor_set_uint8(x_6, 14, x_5);
-lean_ctor_set_uint8(x_6, 15, x_2);
-lean_ctor_set_uint8(x_6, 16, x_2);
-return x_6;
-}
-}
-static uint64_t _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__6() {
-_start:
-{
-lean_object* x_1; uint64_t x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__5;
-x_2 = l___private_Lean_Meta_Basic_0__Lean_Meta_Config_toKey(x_1);
-return x_2;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__7() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = lean_unsigned_to_nat(32u);
-x_2 = lean_mk_empty_array_with_capacity(x_1);
-return x_2;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__8() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__7;
-x_2 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_2, 0, x_1);
-return x_2;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__9() {
-_start:
-{
-size_t x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_1 = 5;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__8;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__7;
-x_4 = lean_unsigned_to_nat(0u);
-x_5 = lean_alloc_ctor(0, 4, sizeof(size_t)*1);
-lean_ctor_set(x_5, 0, x_2);
-lean_ctor_set(x_5, 1, x_3);
-lean_ctor_set(x_5, 2, x_4);
-lean_ctor_set(x_5, 3, x_4);
-lean_ctor_set_usize(x_5, 4, x_1);
-return x_5;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__10() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_canon___closed__2;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__9;
-x_3 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_3, 0, x_1);
-lean_ctor_set(x_3, 1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__11() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; uint64_t x_4; uint8_t x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; 
-x_1 = lean_box(0);
-x_2 = lean_box(0);
-x_3 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__5;
-x_4 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__6;
-x_5 = 0;
-x_6 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__10;
-x_7 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__1;
-x_8 = lean_unsigned_to_nat(0u);
-x_9 = lean_alloc_ctor(0, 7, 11);
-lean_ctor_set(x_9, 0, x_3);
-lean_ctor_set(x_9, 1, x_1);
-lean_ctor_set(x_9, 2, x_6);
-lean_ctor_set(x_9, 3, x_7);
-lean_ctor_set(x_9, 4, x_2);
-lean_ctor_set(x_9, 5, x_8);
-lean_ctor_set(x_9, 6, x_2);
-lean_ctor_set_uint64(x_9, sizeof(void*)*7, x_4);
-lean_ctor_set_uint8(x_9, sizeof(void*)*7 + 8, x_5);
-lean_ctor_set_uint8(x_9, sizeof(void*)*7 + 9, x_5);
-lean_ctor_set_uint8(x_9, sizeof(void*)*7 + 10, x_5);
-return x_9;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__12() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_unsigned_to_nat(0u);
-x_2 = l_Lean_Meta_Grind_canon___closed__2;
-x_3 = lean_alloc_ctor(0, 9, 0);
-lean_ctor_set(x_3, 0, x_1);
-lean_ctor_set(x_3, 1, x_1);
-lean_ctor_set(x_3, 2, x_1);
-lean_ctor_set(x_3, 3, x_2);
-lean_ctor_set(x_3, 4, x_2);
-lean_ctor_set(x_3, 5, x_2);
-lean_ctor_set(x_3, 6, x_2);
-lean_ctor_set(x_3, 7, x_2);
-lean_ctor_set(x_3, 8, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__13() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_Meta_Grind_canon___closed__2;
-x_2 = lean_alloc_ctor(0, 6, 0);
-lean_ctor_set(x_2, 0, x_1);
-lean_ctor_set(x_2, 1, x_1);
-lean_ctor_set(x_2, 2, x_1);
-lean_ctor_set(x_2, 3, x_1);
-lean_ctor_set(x_2, 4, x_1);
-lean_ctor_set(x_2, 5, x_1);
-return x_2;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__14() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_Meta_Grind_canon___closed__2;
-x_2 = lean_alloc_ctor(0, 4, 0);
-lean_ctor_set(x_2, 0, x_1);
-lean_ctor_set(x_2, 1, x_1);
-lean_ctor_set(x_2, 2, x_1);
-lean_ctor_set(x_2, 3, x_1);
-return x_2;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__15() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
-x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__12;
-x_3 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__13;
-x_4 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__9;
-x_5 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__14;
-x_6 = lean_alloc_ctor(0, 5, 0);
-lean_ctor_set(x_6, 0, x_2);
-lean_ctor_set(x_6, 1, x_3);
-lean_ctor_set(x_6, 2, x_1);
-lean_ctor_set(x_6, 3, x_4);
-lean_ctor_set(x_6, 4, x_5);
-return x_6;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__16() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("declare", 7, 7);
-return x_1;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__17() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__16;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__18() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("registerBuiltinDownwardPropagator", 33, 33);
-return x_1;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__19() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__6;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__7;
-x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__8;
-x_4 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__18;
-x_5 = l_Lean_Name_mkStr4(x_1, x_2, x_3, x_4);
-return x_5;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__20() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("registerBuiltinUpwardPropagator", 31, 31);
-return x_1;
-}
-}
-static lean_object* _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__21() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__6;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__7;
-x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__8;
-x_4 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__20;
-x_5 = l_Lean_Name_mkStr4(x_1, x_2, x_3, x_4);
-return x_5;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
-_start:
-{
-lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; uint8_t x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; 
-x_6 = lean_unsigned_to_nat(1u);
-x_7 = l_Lean_Syntax_getArg(x_2, x_6);
-x_8 = l_Lean_Syntax_getKind(x_7);
-x_9 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__4;
-x_10 = lean_name_eq(x_8, x_9);
-lean_dec(x_8);
-x_11 = lean_unsigned_to_nat(2u);
-x_12 = l_Lean_Syntax_getArg(x_2, x_11);
-x_13 = lean_box(0);
-x_14 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__15;
-x_15 = lean_st_mk_ref(x_14, x_5);
-if (x_10 == 0)
-{
-lean_object* x_52; lean_object* x_53; lean_object* x_54; 
-x_52 = lean_ctor_get(x_15, 0);
-lean_inc(x_52);
-x_53 = lean_ctor_get(x_15, 1);
-lean_inc(x_53);
-lean_dec(x_15);
-x_54 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__19;
-x_16 = x_54;
-x_17 = x_52;
-x_18 = x_53;
-goto block_51;
-}
-else
-{
-lean_object* x_55; lean_object* x_56; lean_object* x_57; 
-x_55 = lean_ctor_get(x_15, 0);
-lean_inc(x_55);
-x_56 = lean_ctor_get(x_15, 1);
-lean_inc(x_56);
-lean_dec(x_15);
-x_57 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__21;
-x_16 = x_57;
-x_17 = x_55;
-x_18 = x_56;
-goto block_51;
-}
-block_51:
-{
-lean_object* x_19; lean_object* x_20; 
-x_19 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__11;
-lean_inc(x_4);
-lean_inc(x_3);
-lean_inc(x_17);
-x_20 = l_Lean_resolveGlobalConstNoOverload___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__1(x_12, x_19, x_17, x_3, x_4, x_18);
-if (lean_obj_tag(x_20) == 0)
-{
-lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_21 = lean_ctor_get(x_20, 0);
-lean_inc(x_21);
-x_22 = lean_ctor_get(x_20, 1);
-lean_inc(x_22);
-lean_dec(x_20);
-x_23 = l_Lean_Expr_const___override(x_16, x_13);
-x_24 = l___private_Lean_ToExpr_0__Lean_Name_toExprAux(x_21);
-lean_inc(x_1);
-x_25 = l_Lean_Expr_const___override(x_1, x_13);
-x_26 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_26, 0, x_25);
-lean_ctor_set(x_26, 1, x_13);
-x_27 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_27, 0, x_24);
-lean_ctor_set(x_27, 1, x_26);
-x_28 = lean_array_mk(x_27);
-x_29 = l_Lean_mkAppN(x_23, x_28);
-lean_dec(x_28);
-x_30 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__17;
-x_31 = l_Lean_Name_append(x_1, x_30);
-x_32 = l___private_Lean_CoreM_0__Lean_Core_mkFreshNameImp(x_31, x_3, x_4, x_22);
-x_33 = lean_ctor_get(x_32, 0);
-lean_inc(x_33);
-x_34 = lean_ctor_get(x_32, 1);
-lean_inc(x_34);
-lean_dec(x_32);
-x_35 = l_Lean_declareBuiltin(x_33, x_29, x_3, x_4, x_34);
-lean_dec(x_4);
-lean_dec(x_3);
-if (lean_obj_tag(x_35) == 0)
-{
-lean_object* x_36; lean_object* x_37; lean_object* x_38; uint8_t x_39; 
-x_36 = lean_ctor_get(x_35, 0);
-lean_inc(x_36);
-x_37 = lean_ctor_get(x_35, 1);
-lean_inc(x_37);
-lean_dec(x_35);
-x_38 = lean_st_ref_get(x_17, x_37);
-lean_dec(x_17);
-x_39 = !lean_is_exclusive(x_38);
-if (x_39 == 0)
-{
-lean_object* x_40; 
-x_40 = lean_ctor_get(x_38, 0);
-lean_dec(x_40);
-lean_ctor_set(x_38, 0, x_36);
-return x_38;
-}
-else
-{
-lean_object* x_41; lean_object* x_42; 
-x_41 = lean_ctor_get(x_38, 1);
-lean_inc(x_41);
-lean_dec(x_38);
-x_42 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_42, 0, x_36);
-lean_ctor_set(x_42, 1, x_41);
-return x_42;
-}
-}
-else
-{
-uint8_t x_43; 
-lean_dec(x_17);
-x_43 = !lean_is_exclusive(x_35);
-if (x_43 == 0)
-{
-return x_35;
-}
-else
-{
-lean_object* x_44; lean_object* x_45; lean_object* x_46; 
-x_44 = lean_ctor_get(x_35, 0);
-x_45 = lean_ctor_get(x_35, 1);
-lean_inc(x_45);
-lean_inc(x_44);
-lean_dec(x_35);
-x_46 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_46, 0, x_44);
-lean_ctor_set(x_46, 1, x_45);
-return x_46;
-}
-}
-}
-else
-{
-uint8_t x_47; 
-lean_dec(x_17);
-lean_dec(x_16);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_1);
-x_47 = !lean_is_exclusive(x_20);
-if (x_47 == 0)
-{
-return x_20;
-}
-else
-{
-lean_object* x_48; lean_object* x_49; lean_object* x_50; 
-x_48 = lean_ctor_get(x_20, 0);
-x_49 = lean_ctor_get(x_20, 1);
-lean_inc(x_49);
-lean_inc(x_48);
-lean_dec(x_20);
-x_50 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_50, 0, x_48);
-lean_ctor_set(x_50, 1, x_49);
-return x_50;
-}
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_resolveGlobalName___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__4___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) {
-_start:
-{
-lean_object* x_7; 
-x_7 = l_Lean_resolveGlobalName___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__4(x_1, x_2, x_3, x_4, x_5, x_6);
-lean_dec(x_5);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_7;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___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) {
-_start:
-{
-lean_object* x_7; 
-x_7 = l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6(x_1, x_2, x_3, x_4, x_5, x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_7;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__5___lambda__1___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) {
-_start:
-{
-lean_object* x_9; 
-x_9 = l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__5___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-return x_9;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__5___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) {
-_start:
-{
-lean_object* x_8; 
-x_8 = l_Lean_filterFieldList___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__5(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-return x_8;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_ResolveName_0__Lean_resolveGlobalConstCore___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__3___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) {
-_start:
-{
-lean_object* x_7; 
-x_7 = l___private_Lean_ResolveName_0__Lean_resolveGlobalConstCore___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__3(x_1, x_2, x_3, x_4, x_5, x_6);
-lean_dec(x_5);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_7;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__9___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) {
-_start:
-{
-lean_object* x_7; 
-x_7 = l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__9(x_1, x_2, x_3, x_4, x_5, x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_7;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__8___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) {
-_start:
-{
-lean_object* x_8; 
-x_8 = l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__8(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_1);
-return x_8;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__13___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) {
-_start:
-{
-lean_object* x_7; 
-x_7 = l_Lean_throwError___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__13(x_1, x_2, x_3, x_4, x_5, x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-return x_7;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__12___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) {
-_start:
-{
-lean_object* x_8; 
-x_8 = l_Lean_throwErrorAt___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__12(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
-lean_dec(x_6);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_1);
-return x_8;
-}
-}
-LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
-_start:
-{
-lean_object* x_6; 
-x_6 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin(x_1, x_2, x_3, x_4, x_5);
-lean_dec(x_2);
-return x_6;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__1(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
-_start:
-{
-lean_object* x_7; 
-x_7 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin(x_1, x_2, x_4, x_5, x_6);
-return x_7;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Not implemented yet, [-builtin_simproc]", 39, 39);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___closed__2() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___closed__1;
-x_2 = l_Lean_stringToMessageData(x_1);
-return x_2;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
-_start:
-{
-lean_object* x_5; lean_object* x_6; 
-x_5 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___closed__2;
-x_6 = l_Lean_throwError___at_Lean_Attribute_Builtin_ensureNoArgs___spec__2(x_5, x_2, x_3, x_4);
-return x_6;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__1() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__6;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__2() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__1;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__7;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__3() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__2;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__8;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__4() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("initFn", 6, 6);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__5() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__3;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__4;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__6() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("_@", 2, 2);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__7() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__5;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__6;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__8() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__7;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__6;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__9() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__8;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__7;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__10() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__9;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__2;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__11() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__10;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__8;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__12() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Types", 5, 5);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__13() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__11;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__12;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__14() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("_hyg", 4, 4);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__15() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__13;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__14;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__16() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__15;
-x_2 = lean_unsigned_to_nat(4946u);
-x_3 = l_Lean_Name_num___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__17() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("grindPropagatorBuiltinAttr", 26, 26);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__18() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__17;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__19() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("Builtin `grind` propagator procedure", 36, 36);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__20() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__16;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__18;
-x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__19;
-x_4 = 1;
-x_5 = lean_alloc_ctor(0, 3, 1);
-lean_ctor_set(x_5, 0, x_1);
-lean_ctor_set(x_5, 1, x_2);
-lean_ctor_set(x_5, 2, x_3);
-lean_ctor_set_uint8(x_5, sizeof(void*)*3, x_4);
-return x_5;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__21() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__1___boxed), 6, 0);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__22() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___boxed), 4, 0);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__23() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__20;
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__21;
-x_3 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__22;
-x_4 = lean_alloc_ctor(0, 3, 0);
-lean_ctor_set(x_4, 0, x_1);
-lean_ctor_set(x_4, 1, x_2);
-lean_ctor_set(x_4, 2, x_3);
-return x_4;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946_(lean_object* x_1) {
-_start:
-{
-lean_object* x_2; lean_object* x_3; 
-x_2 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__23;
-x_3 = l_Lean_registerBuiltinAttribute(x_2, x_1);
-return x_3;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__1___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) {
-_start:
-{
-uint8_t x_7; lean_object* x_8; 
-x_7 = lean_unbox(x_3);
-lean_dec(x_3);
-x_8 = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__1(x_1, x_2, x_7, x_4, x_5, x_6);
-lean_dec(x_2);
-return x_8;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___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_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2(x_1, x_2, x_3, x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-lean_dec(x_1);
-return x_5;
-}
-}
-LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_getMethods___spec__1(lean_object* x_1, lean_object* x_2) {
-_start:
-{
-if (lean_obj_tag(x_2) == 0)
-{
-lean_object* x_3; 
-x_3 = lean_box(0);
-return x_3;
-}
-else
-{
-lean_object* x_4; lean_object* x_5; lean_object* x_6; uint8_t x_7; 
-x_4 = lean_ctor_get(x_2, 0);
-x_5 = lean_ctor_get(x_2, 1);
-x_6 = lean_ctor_get(x_2, 2);
-x_7 = lean_name_eq(x_4, x_1);
-if (x_7 == 0)
-{
-x_2 = x_6;
-goto _start;
-}
-else
-{
-lean_object* x_9; 
-lean_inc(x_5);
-x_9 = lean_alloc_ctor(1, 1, 0);
-lean_ctor_set(x_9, 0, x_5);
-return x_9;
-}
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethods___rarg___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, lean_object* x_11) {
-_start:
-{
-lean_object* x_12; 
-x_12 = l_Lean_Expr_getAppFn(x_2);
-if (lean_obj_tag(x_12) == 4)
-{
-lean_object* x_13; lean_object* x_14; uint8_t x_15; 
-x_13 = lean_ctor_get(x_1, 0);
-lean_inc(x_13);
-lean_dec(x_1);
-x_14 = lean_ctor_get(x_12, 0);
-lean_inc(x_14);
-lean_dec(x_12);
-x_15 = !lean_is_exclusive(x_13);
-if (x_15 == 0)
-{
-lean_object* x_16; lean_object* x_17; lean_object* x_18; uint64_t x_19; uint64_t x_20; uint64_t x_21; uint64_t x_22; uint64_t x_23; uint64_t x_24; uint64_t x_25; size_t x_26; size_t x_27; size_t x_28; size_t x_29; size_t x_30; lean_object* x_31; lean_object* x_32; 
-x_16 = lean_ctor_get(x_13, 1);
-x_17 = lean_ctor_get(x_13, 0);
-lean_dec(x_17);
-x_18 = lean_array_get_size(x_16);
-x_19 = l_Lean_Name_hash___override(x_14);
-x_20 = 32;
-x_21 = lean_uint64_shift_right(x_19, x_20);
-x_22 = lean_uint64_xor(x_19, x_21);
-x_23 = 16;
-x_24 = lean_uint64_shift_right(x_22, x_23);
-x_25 = lean_uint64_xor(x_22, x_24);
-x_26 = lean_uint64_to_usize(x_25);
-x_27 = lean_usize_of_nat(x_18);
-lean_dec(x_18);
-x_28 = 1;
-x_29 = lean_usize_sub(x_27, x_28);
-x_30 = lean_usize_land(x_26, x_29);
-x_31 = lean_array_uget(x_16, x_30);
-lean_dec(x_16);
-x_32 = l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_getMethods___spec__1(x_14, x_31);
-lean_dec(x_31);
-lean_dec(x_14);
-if (lean_obj_tag(x_32) == 0)
-{
-lean_object* x_33; 
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-x_33 = lean_box(0);
-lean_ctor_set(x_13, 1, x_11);
-lean_ctor_set(x_13, 0, x_33);
-return x_13;
-}
-else
-{
-lean_object* x_34; lean_object* x_35; 
-lean_free_object(x_13);
-x_34 = lean_ctor_get(x_32, 0);
-lean_inc(x_34);
-lean_dec(x_32);
-x_35 = lean_apply_10(x_34, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-return x_35;
-}
-}
-else
-{
-lean_object* x_36; lean_object* x_37; uint64_t x_38; uint64_t x_39; uint64_t x_40; uint64_t x_41; uint64_t x_42; uint64_t x_43; uint64_t x_44; size_t x_45; size_t x_46; size_t x_47; size_t x_48; size_t x_49; lean_object* x_50; lean_object* x_51; 
-x_36 = lean_ctor_get(x_13, 1);
-lean_inc(x_36);
-lean_dec(x_13);
-x_37 = lean_array_get_size(x_36);
-x_38 = l_Lean_Name_hash___override(x_14);
-x_39 = 32;
-x_40 = lean_uint64_shift_right(x_38, x_39);
-x_41 = lean_uint64_xor(x_38, x_40);
-x_42 = 16;
-x_43 = lean_uint64_shift_right(x_41, x_42);
-x_44 = lean_uint64_xor(x_41, x_43);
-x_45 = lean_uint64_to_usize(x_44);
-x_46 = lean_usize_of_nat(x_37);
-lean_dec(x_37);
-x_47 = 1;
-x_48 = lean_usize_sub(x_46, x_47);
-x_49 = lean_usize_land(x_45, x_48);
-x_50 = lean_array_uget(x_36, x_49);
-lean_dec(x_36);
-x_51 = l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_getMethods___spec__1(x_14, x_50);
-lean_dec(x_50);
-lean_dec(x_14);
-if (lean_obj_tag(x_51) == 0)
-{
-lean_object* x_52; lean_object* x_53; 
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-x_52 = lean_box(0);
-x_53 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_53, 0, x_52);
-lean_ctor_set(x_53, 1, x_11);
-return x_53;
-}
-else
-{
-lean_object* x_54; lean_object* x_55; 
-x_54 = lean_ctor_get(x_51, 0);
-lean_inc(x_54);
-lean_dec(x_51);
-x_55 = lean_apply_10(x_54, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-return x_55;
-}
-}
-}
-else
-{
-lean_object* x_56; lean_object* x_57; 
-lean_dec(x_12);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-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_56 = lean_box(0);
-x_57 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_57, 0, x_56);
-lean_ctor_set(x_57, 1, x_11);
-return x_57;
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethods___rarg___lambda__2(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, lean_object* x_11) {
-_start:
-{
-lean_object* x_12; 
-x_12 = l_Lean_Expr_getAppFn(x_2);
-if (lean_obj_tag(x_12) == 4)
-{
-lean_object* x_13; lean_object* x_14; uint8_t x_15; 
-x_13 = lean_ctor_get(x_1, 1);
-lean_inc(x_13);
-lean_dec(x_1);
-x_14 = lean_ctor_get(x_12, 0);
-lean_inc(x_14);
-lean_dec(x_12);
-x_15 = !lean_is_exclusive(x_13);
-if (x_15 == 0)
-{
-lean_object* x_16; lean_object* x_17; lean_object* x_18; uint64_t x_19; uint64_t x_20; uint64_t x_21; uint64_t x_22; uint64_t x_23; uint64_t x_24; uint64_t x_25; size_t x_26; size_t x_27; size_t x_28; size_t x_29; size_t x_30; lean_object* x_31; lean_object* x_32; 
-x_16 = lean_ctor_get(x_13, 1);
-x_17 = lean_ctor_get(x_13, 0);
-lean_dec(x_17);
-x_18 = lean_array_get_size(x_16);
-x_19 = l_Lean_Name_hash___override(x_14);
-x_20 = 32;
-x_21 = lean_uint64_shift_right(x_19, x_20);
-x_22 = lean_uint64_xor(x_19, x_21);
-x_23 = 16;
-x_24 = lean_uint64_shift_right(x_22, x_23);
-x_25 = lean_uint64_xor(x_22, x_24);
-x_26 = lean_uint64_to_usize(x_25);
-x_27 = lean_usize_of_nat(x_18);
-lean_dec(x_18);
-x_28 = 1;
-x_29 = lean_usize_sub(x_27, x_28);
-x_30 = lean_usize_land(x_26, x_29);
-x_31 = lean_array_uget(x_16, x_30);
-lean_dec(x_16);
-x_32 = l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_getMethods___spec__1(x_14, x_31);
-lean_dec(x_31);
-lean_dec(x_14);
-if (lean_obj_tag(x_32) == 0)
-{
-lean_object* x_33; 
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-x_33 = lean_box(0);
-lean_ctor_set(x_13, 1, x_11);
-lean_ctor_set(x_13, 0, x_33);
-return x_13;
-}
-else
-{
-lean_object* x_34; lean_object* x_35; 
-lean_free_object(x_13);
-x_34 = lean_ctor_get(x_32, 0);
-lean_inc(x_34);
-lean_dec(x_32);
-x_35 = lean_apply_10(x_34, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-return x_35;
-}
-}
-else
-{
-lean_object* x_36; lean_object* x_37; uint64_t x_38; uint64_t x_39; uint64_t x_40; uint64_t x_41; uint64_t x_42; uint64_t x_43; uint64_t x_44; size_t x_45; size_t x_46; size_t x_47; size_t x_48; size_t x_49; lean_object* x_50; lean_object* x_51; 
-x_36 = lean_ctor_get(x_13, 1);
-lean_inc(x_36);
-lean_dec(x_13);
-x_37 = lean_array_get_size(x_36);
-x_38 = l_Lean_Name_hash___override(x_14);
-x_39 = 32;
-x_40 = lean_uint64_shift_right(x_38, x_39);
-x_41 = lean_uint64_xor(x_38, x_40);
-x_42 = 16;
-x_43 = lean_uint64_shift_right(x_41, x_42);
-x_44 = lean_uint64_xor(x_41, x_43);
-x_45 = lean_uint64_to_usize(x_44);
-x_46 = lean_usize_of_nat(x_37);
-lean_dec(x_37);
-x_47 = 1;
-x_48 = lean_usize_sub(x_46, x_47);
-x_49 = lean_usize_land(x_45, x_48);
-x_50 = lean_array_uget(x_36, x_49);
-lean_dec(x_36);
-x_51 = l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_getMethods___spec__1(x_14, x_50);
-lean_dec(x_50);
-lean_dec(x_14);
-if (lean_obj_tag(x_51) == 0)
-{
-lean_object* x_52; lean_object* x_53; 
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
-lean_dec(x_4);
-lean_dec(x_3);
-lean_dec(x_2);
-x_52 = lean_box(0);
-x_53 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_53, 0, x_52);
-lean_ctor_set(x_53, 1, x_11);
-return x_53;
-}
-else
-{
-lean_object* x_54; lean_object* x_55; 
-x_54 = lean_ctor_get(x_51, 0);
-lean_inc(x_54);
-lean_dec(x_51);
-x_55 = lean_apply_10(x_54, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-return x_55;
-}
-}
-}
-else
-{
-lean_object* x_56; lean_object* x_57; 
-lean_dec(x_12);
-lean_dec(x_10);
-lean_dec(x_9);
-lean_dec(x_8);
-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_56 = lean_box(0);
-x_57 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_57, 0, x_56);
-lean_ctor_set(x_57, 1, x_11);
-return x_57;
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethods___rarg(lean_object* x_1) {
-_start:
-{
-lean_object* x_2; lean_object* x_3; uint8_t x_4; 
-x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1;
-x_3 = lean_st_ref_get(x_2, x_1);
-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; 
-x_5 = lean_ctor_get(x_3, 0);
-lean_inc(x_5);
-x_6 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_getMethods___rarg___lambda__1), 11, 1);
-lean_closure_set(x_6, 0, x_5);
-x_7 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_getMethods___rarg___lambda__2), 11, 1);
-lean_closure_set(x_7, 0, x_5);
-x_8 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_8, 0, x_6);
-lean_ctor_set(x_8, 1, x_7);
-lean_ctor_set(x_3, 0, x_8);
-return x_3;
-}
-else
-{
-lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; 
-x_9 = lean_ctor_get(x_3, 0);
-x_10 = lean_ctor_get(x_3, 1);
-lean_inc(x_10);
-lean_inc(x_9);
-lean_dec(x_3);
-lean_inc(x_9);
-x_11 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_getMethods___rarg___lambda__1), 11, 1);
-lean_closure_set(x_11, 0, x_9);
-x_12 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_getMethods___rarg___lambda__2), 11, 1);
-lean_closure_set(x_12, 0, x_9);
-x_13 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_13, 0, x_11);
-lean_ctor_set(x_13, 1, x_12);
-x_14 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_14, 0, x_13);
-lean_ctor_set(x_14, 1, x_10);
-return x_14;
-}
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethods(lean_object* x_1, lean_object* x_2) {
-_start:
-{
-lean_object* x_3; 
-x_3 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_getMethods___rarg), 1, 0);
-return x_3;
-}
-}
-LEAN_EXPORT lean_object* l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_getMethods___spec__1___boxed(lean_object* x_1, lean_object* x_2) {
-_start:
-{
-lean_object* x_3; 
-x_3 = l_Std_DHashMap_Internal_AssocList_get_x3f___at_Lean_Meta_Grind_getMethods___spec__1(x_1, x_2);
-lean_dec(x_2);
-lean_dec(x_1);
-return x_3;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethods___boxed(lean_object* x_1, lean_object* x_2) {
-_start:
-{
-lean_object* x_3; 
-x_3 = l_Lean_Meta_Grind_getMethods(x_1, x_2);
-lean_dec(x_2);
-lean_dec(x_1);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__1() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; 
-x_1 = l_Lean_ShareCommon_objectFactory;
-x_2 = l_ShareCommon_mkStateImpl(x_1);
-return x_2;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__2() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("False", 5, 5);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__3() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__2;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__4() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__3;
-x_3 = l_Lean_Expr_const___override(x_2, x_1);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__5() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; 
-x_1 = l_Lean_ShareCommon_objectFactory;
-x_2 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__1;
-x_3 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__4;
-x_4 = lean_state_sharecommon(x_1, x_2, x_3);
-return x_4;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__6() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("True", 4, 4);
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__7() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__6;
-x_3 = l_Lean_Name_str___override(x_1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__8() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = lean_box(0);
-x_2 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__7;
-x_3 = l_Lean_Expr_const___override(x_2, x_1);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__9() {
-_start:
-{
-lean_object* x_1; 
-x_1 = l_Lean_Meta_Grind_grindNormExt;
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__10() {
-_start:
-{
-lean_object* x_1; 
-x_1 = l_Lean_Meta_Grind_grindNormSimprocExt;
-return x_1;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__11() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; uint8_t x_3; uint8_t x_4; uint8_t x_5; lean_object* x_6; 
-x_1 = l_Lean_Meta_Simp_defaultMaxSteps;
-x_2 = lean_unsigned_to_nat(2u);
-x_3 = 0;
-x_4 = 1;
-x_5 = 0;
-x_6 = lean_alloc_ctor(0, 2, 19);
-lean_ctor_set(x_6, 0, x_1);
-lean_ctor_set(x_6, 1, x_2);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2, x_3);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 1, x_4);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 2, x_3);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 3, x_4);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 4, x_4);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 5, x_4);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 6, x_5);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 7, x_4);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 8, x_4);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 9, x_3);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 10, x_4);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 11, x_3);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 12, x_4);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 13, x_4);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 14, x_3);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 15, x_3);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 16, x_3);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 17, x_4);
-lean_ctor_set_uint8(x_6, sizeof(void*)*2 + 18, x_4);
-return x_6;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__12() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_canon___closed__2;
-x_2 = lean_unsigned_to_nat(0u);
-x_3 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_3, 0, x_1);
-lean_ctor_set(x_3, 1, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__13() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_canon___closed__2;
-x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__9;
-x_3 = lean_alloc_ctor(0, 4, 0);
-lean_ctor_set(x_3, 0, x_1);
-lean_ctor_set(x_3, 1, x_1);
-lean_ctor_set(x_3, 2, x_1);
-lean_ctor_set(x_3, 3, x_2);
-return x_3;
-}
-}
-static lean_object* _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__14() {
-_start:
-{
-lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__12;
-x_2 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__13;
-x_3 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_3, 0, x_1);
-lean_ctor_set(x_3, 1, x_2);
-return x_3;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GrindM_run___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, lean_object* x_7) {
-_start:
-{
-lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; 
-x_8 = lean_box(0);
-x_9 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__5;
-x_10 = lean_ctor_get(x_9, 0);
-lean_inc(x_10);
-x_11 = lean_ctor_get(x_9, 1);
-lean_inc(x_11);
-x_12 = l_Lean_ShareCommon_objectFactory;
-x_13 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__8;
-x_14 = lean_state_sharecommon(x_12, x_11, x_13);
-x_15 = lean_ctor_get(x_14, 0);
-lean_inc(x_15);
-x_16 = lean_ctor_get(x_14, 1);
-lean_inc(x_16);
-lean_dec(x_14);
-x_17 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__9;
-x_18 = l_Lean_Meta_SimpExtension_getTheorems(x_17, x_5, x_6, x_7);
-x_19 = lean_ctor_get(x_18, 0);
-lean_inc(x_19);
-x_20 = lean_ctor_get(x_18, 1);
-lean_inc(x_20);
-lean_dec(x_18);
-x_21 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__10;
-x_22 = l_Lean_Meta_Simp_SimprocExtension_getSimprocs(x_21, x_5, x_6, x_20);
-x_23 = !lean_is_exclusive(x_22);
-if (x_23 == 0)
-{
-lean_object* x_24; lean_object* x_25; lean_object* x_26; uint8_t x_27; 
-x_24 = lean_ctor_get(x_22, 1);
-lean_ctor_set_tag(x_22, 1);
-lean_ctor_set(x_22, 1, x_8);
-x_25 = lean_array_mk(x_22);
-x_26 = l_Lean_Meta_getSimpCongrTheorems___rarg(x_6, x_24);
-x_27 = !lean_is_exclusive(x_26);
-if (x_27 == 0)
-{
-lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; 
-x_28 = lean_ctor_get(x_26, 0);
-x_29 = lean_ctor_get(x_26, 1);
-lean_ctor_set_tag(x_26, 1);
-lean_ctor_set(x_26, 1, x_8);
-lean_ctor_set(x_26, 0, x_19);
-x_30 = lean_array_mk(x_26);
-x_31 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__11;
-x_32 = l_Lean_Meta_Simp_mkContext(x_31, x_30, x_28, x_3, x_4, x_5, x_6, x_29);
-x_33 = lean_ctor_get(x_32, 0);
-lean_inc(x_33);
-x_34 = lean_ctor_get(x_32, 1);
-lean_inc(x_34);
-lean_dec(x_32);
-x_35 = l_Lean_Meta_Grind_getMethods___rarg(x_34);
-x_36 = lean_ctor_get(x_35, 0);
-lean_inc(x_36);
-x_37 = lean_ctor_get(x_35, 1);
-lean_inc(x_37);
-lean_dec(x_35);
-x_38 = lean_alloc_ctor(0, 3, 0);
-lean_ctor_set(x_38, 0, x_33);
-lean_ctor_set(x_38, 1, x_25);
-lean_ctor_set(x_38, 2, x_2);
-x_39 = l_Lean_Meta_Grind_canon___closed__3;
-x_40 = lean_unsigned_to_nat(1u);
-x_41 = l_Lean_Meta_Grind_canon___closed__2;
-x_42 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__14;
-x_43 = lean_alloc_ctor(0, 7, 0);
-lean_ctor_set(x_43, 0, x_39);
-lean_ctor_set(x_43, 1, x_16);
-lean_ctor_set(x_43, 2, x_40);
-lean_ctor_set(x_43, 3, x_41);
-lean_ctor_set(x_43, 4, x_42);
-lean_ctor_set(x_43, 5, x_15);
-lean_ctor_set(x_43, 6, x_10);
-x_44 = lean_st_mk_ref(x_43, x_37);
-x_45 = lean_ctor_get(x_44, 0);
-lean_inc(x_45);
-x_46 = lean_ctor_get(x_44, 1);
-lean_inc(x_46);
-lean_dec(x_44);
-lean_inc(x_45);
-x_47 = lean_apply_8(x_1, x_36, x_38, x_45, x_3, x_4, x_5, x_6, x_46);
-if (lean_obj_tag(x_47) == 0)
-{
-lean_object* x_48; lean_object* x_49; lean_object* x_50; uint8_t x_51; 
-x_48 = lean_ctor_get(x_47, 0);
-lean_inc(x_48);
-x_49 = lean_ctor_get(x_47, 1);
-lean_inc(x_49);
-lean_dec(x_47);
-x_50 = lean_st_ref_get(x_45, x_49);
-lean_dec(x_45);
-x_51 = !lean_is_exclusive(x_50);
-if (x_51 == 0)
-{
-lean_object* x_52; 
-x_52 = lean_ctor_get(x_50, 0);
-lean_dec(x_52);
-lean_ctor_set(x_50, 0, x_48);
-return x_50;
-}
-else
-{
-lean_object* x_53; lean_object* x_54; 
-x_53 = lean_ctor_get(x_50, 1);
-lean_inc(x_53);
-lean_dec(x_50);
-x_54 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_54, 0, x_48);
-lean_ctor_set(x_54, 1, x_53);
-return x_54;
-}
-}
-else
-{
-uint8_t x_55; 
-lean_dec(x_45);
-x_55 = !lean_is_exclusive(x_47);
-if (x_55 == 0)
-{
-return x_47;
-}
-else
-{
-lean_object* x_56; lean_object* x_57; lean_object* x_58; 
-x_56 = lean_ctor_get(x_47, 0);
-x_57 = lean_ctor_get(x_47, 1);
-lean_inc(x_57);
-lean_inc(x_56);
-lean_dec(x_47);
-x_58 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_58, 0, x_56);
-lean_ctor_set(x_58, 1, x_57);
-return x_58;
-}
-}
-}
-else
-{
-lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; 
-x_59 = lean_ctor_get(x_26, 0);
-x_60 = lean_ctor_get(x_26, 1);
-lean_inc(x_60);
-lean_inc(x_59);
-lean_dec(x_26);
-x_61 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_61, 0, x_19);
-lean_ctor_set(x_61, 1, x_8);
-x_62 = lean_array_mk(x_61);
-x_63 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__11;
-x_64 = l_Lean_Meta_Simp_mkContext(x_63, x_62, x_59, x_3, x_4, x_5, x_6, x_60);
-x_65 = lean_ctor_get(x_64, 0);
-lean_inc(x_65);
-x_66 = lean_ctor_get(x_64, 1);
-lean_inc(x_66);
-lean_dec(x_64);
-x_67 = l_Lean_Meta_Grind_getMethods___rarg(x_66);
-x_68 = lean_ctor_get(x_67, 0);
-lean_inc(x_68);
-x_69 = lean_ctor_get(x_67, 1);
-lean_inc(x_69);
-lean_dec(x_67);
-x_70 = lean_alloc_ctor(0, 3, 0);
-lean_ctor_set(x_70, 0, x_65);
-lean_ctor_set(x_70, 1, x_25);
-lean_ctor_set(x_70, 2, x_2);
-x_71 = l_Lean_Meta_Grind_canon___closed__3;
-x_72 = lean_unsigned_to_nat(1u);
-x_73 = l_Lean_Meta_Grind_canon___closed__2;
-x_74 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__14;
-x_75 = lean_alloc_ctor(0, 7, 0);
-lean_ctor_set(x_75, 0, x_71);
-lean_ctor_set(x_75, 1, x_16);
-lean_ctor_set(x_75, 2, x_72);
-lean_ctor_set(x_75, 3, x_73);
-lean_ctor_set(x_75, 4, x_74);
-lean_ctor_set(x_75, 5, x_15);
-lean_ctor_set(x_75, 6, x_10);
-x_76 = lean_st_mk_ref(x_75, x_69);
-x_77 = lean_ctor_get(x_76, 0);
-lean_inc(x_77);
-x_78 = lean_ctor_get(x_76, 1);
-lean_inc(x_78);
-lean_dec(x_76);
-lean_inc(x_77);
-x_79 = lean_apply_8(x_1, x_68, x_70, x_77, x_3, x_4, x_5, x_6, x_78);
-if (lean_obj_tag(x_79) == 0)
-{
-lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; 
-x_80 = lean_ctor_get(x_79, 0);
-lean_inc(x_80);
-x_81 = lean_ctor_get(x_79, 1);
-lean_inc(x_81);
-lean_dec(x_79);
-x_82 = lean_st_ref_get(x_77, x_81);
-lean_dec(x_77);
-x_83 = lean_ctor_get(x_82, 1);
-lean_inc(x_83);
-if (lean_is_exclusive(x_82)) {
- lean_ctor_release(x_82, 0);
- lean_ctor_release(x_82, 1);
- x_84 = x_82;
-} else {
- lean_dec_ref(x_82);
- x_84 = lean_box(0);
-}
-if (lean_is_scalar(x_84)) {
- x_85 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_85 = x_84;
-}
-lean_ctor_set(x_85, 0, x_80);
-lean_ctor_set(x_85, 1, x_83);
-return x_85;
-}
-else
-{
-lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; 
-lean_dec(x_77);
-x_86 = lean_ctor_get(x_79, 0);
-lean_inc(x_86);
-x_87 = lean_ctor_get(x_79, 1);
-lean_inc(x_87);
-if (lean_is_exclusive(x_79)) {
- lean_ctor_release(x_79, 0);
- lean_ctor_release(x_79, 1);
- x_88 = x_79;
-} else {
- lean_dec_ref(x_79);
- x_88 = lean_box(0);
-}
-if (lean_is_scalar(x_88)) {
- x_89 = lean_alloc_ctor(1, 2, 0);
-} else {
- x_89 = x_88;
-}
-lean_ctor_set(x_89, 0, x_86);
-lean_ctor_set(x_89, 1, x_87);
-return x_89;
-}
-}
-}
-else
-{
-lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; 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_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; 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_object* x_111; lean_object* x_112; lean_object* x_113; lean_object* x_114; lean_object* x_115; lean_object* x_116; 
-x_90 = lean_ctor_get(x_22, 0);
-x_91 = lean_ctor_get(x_22, 1);
-lean_inc(x_91);
-lean_inc(x_90);
-lean_dec(x_22);
-x_92 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_92, 0, x_90);
-lean_ctor_set(x_92, 1, x_8);
-x_93 = lean_array_mk(x_92);
-x_94 = l_Lean_Meta_getSimpCongrTheorems___rarg(x_6, x_91);
-x_95 = lean_ctor_get(x_94, 0);
-lean_inc(x_95);
-x_96 = lean_ctor_get(x_94, 1);
-lean_inc(x_96);
-if (lean_is_exclusive(x_94)) {
- lean_ctor_release(x_94, 0);
- lean_ctor_release(x_94, 1);
- x_97 = x_94;
-} else {
- lean_dec_ref(x_94);
- x_97 = lean_box(0);
-}
-if (lean_is_scalar(x_97)) {
- x_98 = lean_alloc_ctor(1, 2, 0);
-} else {
- x_98 = x_97;
- lean_ctor_set_tag(x_98, 1);
-}
-lean_ctor_set(x_98, 0, x_19);
-lean_ctor_set(x_98, 1, x_8);
-x_99 = lean_array_mk(x_98);
-x_100 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__11;
-x_101 = l_Lean_Meta_Simp_mkContext(x_100, x_99, x_95, x_3, x_4, x_5, x_6, x_96);
-x_102 = lean_ctor_get(x_101, 0);
-lean_inc(x_102);
-x_103 = lean_ctor_get(x_101, 1);
-lean_inc(x_103);
-lean_dec(x_101);
-x_104 = l_Lean_Meta_Grind_getMethods___rarg(x_103);
-x_105 = lean_ctor_get(x_104, 0);
-lean_inc(x_105);
-x_106 = lean_ctor_get(x_104, 1);
-lean_inc(x_106);
-lean_dec(x_104);
-x_107 = lean_alloc_ctor(0, 3, 0);
-lean_ctor_set(x_107, 0, x_102);
-lean_ctor_set(x_107, 1, x_93);
-lean_ctor_set(x_107, 2, x_2);
-x_108 = l_Lean_Meta_Grind_canon___closed__3;
-x_109 = lean_unsigned_to_nat(1u);
-x_110 = l_Lean_Meta_Grind_canon___closed__2;
-x_111 = l_Lean_Meta_Grind_GrindM_run___rarg___closed__14;
-x_112 = lean_alloc_ctor(0, 7, 0);
-lean_ctor_set(x_112, 0, x_108);
-lean_ctor_set(x_112, 1, x_16);
-lean_ctor_set(x_112, 2, x_109);
-lean_ctor_set(x_112, 3, x_110);
-lean_ctor_set(x_112, 4, x_111);
-lean_ctor_set(x_112, 5, x_15);
-lean_ctor_set(x_112, 6, x_10);
-x_113 = lean_st_mk_ref(x_112, x_106);
-x_114 = lean_ctor_get(x_113, 0);
-lean_inc(x_114);
-x_115 = lean_ctor_get(x_113, 1);
-lean_inc(x_115);
-lean_dec(x_113);
-lean_inc(x_114);
-x_116 = lean_apply_8(x_1, x_105, x_107, x_114, x_3, x_4, x_5, x_6, x_115);
-if (lean_obj_tag(x_116) == 0)
-{
-lean_object* x_117; lean_object* x_118; lean_object* x_119; lean_object* x_120; lean_object* x_121; lean_object* x_122; 
-x_117 = lean_ctor_get(x_116, 0);
-lean_inc(x_117);
-x_118 = lean_ctor_get(x_116, 1);
-lean_inc(x_118);
-lean_dec(x_116);
-x_119 = lean_st_ref_get(x_114, x_118);
-lean_dec(x_114);
-x_120 = lean_ctor_get(x_119, 1);
-lean_inc(x_120);
-if (lean_is_exclusive(x_119)) {
- lean_ctor_release(x_119, 0);
- lean_ctor_release(x_119, 1);
- x_121 = x_119;
-} else {
- lean_dec_ref(x_119);
- x_121 = lean_box(0);
-}
-if (lean_is_scalar(x_121)) {
- x_122 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_122 = x_121;
+lean_object* x_11; lean_object* x_12; 
+x_11 = lean_box(0);
+x_12 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_12, 0, x_11);
+lean_ctor_set(x_12, 1, x_10);
+return x_12;
 }
-lean_ctor_set(x_122, 0, x_117);
-lean_ctor_set(x_122, 1, x_120);
-return x_122;
 }
-else
+static lean_object* _init_l_Lean_Meta_Grind_instInhabitedMethods___closed__1() {
+_start:
 {
-lean_object* x_123; lean_object* x_124; lean_object* x_125; lean_object* x_126; 
-lean_dec(x_114);
-x_123 = lean_ctor_get(x_116, 0);
-lean_inc(x_123);
-x_124 = lean_ctor_get(x_116, 1);
-lean_inc(x_124);
-if (lean_is_exclusive(x_116)) {
- lean_ctor_release(x_116, 0);
- lean_ctor_release(x_116, 1);
- x_125 = x_116;
-} else {
- lean_dec_ref(x_116);
- x_125 = lean_box(0);
-}
-if (lean_is_scalar(x_125)) {
- x_126 = lean_alloc_ctor(1, 2, 0);
-} else {
- x_126 = x_125;
-}
-lean_ctor_set(x_126, 0, x_123);
-lean_ctor_set(x_126, 1, x_124);
-return x_126;
-}
-}
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_instInhabitedMethods___lambda__1___boxed), 10, 0);
+return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GrindM_run(lean_object* x_1) {
+static lean_object* _init_l_Lean_Meta_Grind_instInhabitedMethods___closed__2() {
 _start:
 {
-lean_object* x_2; 
-x_2 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GrindM_run___rarg), 7, 0);
+lean_object* x_1; lean_object* x_2; 
+x_1 = l_Lean_Meta_Grind_instInhabitedMethods___closed__1;
+x_2 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_2, 0, x_1);
+lean_ctor_set(x_2, 1, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___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, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
+static lean_object* _init_l_Lean_Meta_Grind_instInhabitedMethods() {
 _start:
 {
-lean_object* x_11; 
-lean_inc(x_9);
-lean_inc(x_8);
-lean_inc(x_7);
-lean_inc(x_6);
-lean_inc(x_5);
-lean_inc(x_4);
-lean_inc(x_3);
-x_11 = lean_apply_8(x_1, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_11) == 0)
-{
-lean_object* x_12; lean_object* x_13; lean_object* x_14; 
-x_12 = lean_ctor_get(x_11, 0);
-lean_inc(x_12);
-x_13 = lean_ctor_get(x_11, 1);
-lean_inc(x_13);
-lean_dec(x_11);
-x_14 = lean_apply_9(x_2, x_12, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_13);
-return x_14;
+lean_object* x_1; 
+x_1 = l_Lean_Meta_Grind_instInhabitedMethods___closed__2;
+return x_1;
 }
-else
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_instInhabitedMethods___lambda__1___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, lean_object* x_10) {
+_start:
 {
-uint8_t x_15; 
+lean_object* x_11; 
+x_11 = l_Lean_Meta_Grind_instInhabitedMethods___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
@@ -17114,393 +14094,242 @@ lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-x_15 = !lean_is_exclusive(x_11);
-if (x_15 == 0)
-{
+lean_dec(x_1);
 return x_11;
 }
-else
-{
-lean_object* x_16; lean_object* x_17; lean_object* x_18; 
-x_16 = lean_ctor_get(x_11, 0);
-x_17 = lean_ctor_get(x_11, 1);
-lean_inc(x_17);
-lean_inc(x_16);
-lean_dec(x_11);
-x_18 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_18, 0, x_16);
-lean_ctor_set(x_18, 1, x_17);
-return x_18;
-}
-}
 }
-}
-LEAN_EXPORT lean_object* l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1(lean_object* x_1, lean_object* x_2) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Methods_toMethodsRef_unsafe__1(lean_object* x_1) {
 _start:
 {
-lean_object* x_3; 
-x_3 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 0);
-return x_3;
+lean_inc(x_1);
+return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___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, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Methods_toMethodsRef_unsafe__1___boxed(lean_object* x_1) {
 _start:
 {
-lean_object* x_11; lean_object* x_12; 
-x_11 = lean_apply_3(x_2, x_3, x_4, x_5);
-x_12 = l___private_Lean_Meta_Basic_0__Lean_Meta_withMVarContextImp___rarg(x_1, x_11, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_12) == 0)
-{
-uint8_t x_13; 
-x_13 = !lean_is_exclusive(x_12);
-if (x_13 == 0)
-{
-return x_12;
-}
-else
-{
-lean_object* x_14; lean_object* x_15; lean_object* x_16; 
-x_14 = lean_ctor_get(x_12, 0);
-x_15 = lean_ctor_get(x_12, 1);
-lean_inc(x_15);
-lean_inc(x_14);
-lean_dec(x_12);
-x_16 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_16, 0, x_14);
-lean_ctor_set(x_16, 1, x_15);
-return x_16;
-}
+lean_object* x_2; 
+x_2 = l_Lean_Meta_Grind_Methods_toMethodsRef_unsafe__1(x_1);
+lean_dec(x_1);
+return x_2;
 }
-else
-{
-uint8_t x_17; 
-x_17 = !lean_is_exclusive(x_12);
-if (x_17 == 0)
-{
-return x_12;
 }
-else
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Methods_toMethodsRef(lean_object* x_1) {
+_start:
 {
-lean_object* x_18; lean_object* x_19; lean_object* x_20; 
-x_18 = lean_ctor_get(x_12, 0);
-x_19 = lean_ctor_get(x_12, 1);
-lean_inc(x_19);
-lean_inc(x_18);
-lean_dec(x_12);
-x_20 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_20, 0, x_18);
-lean_ctor_set(x_20, 1, x_19);
-return x_20;
-}
-}
+lean_inc(x_1);
+return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2(lean_object* x_1) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_Methods_toMethodsRef___boxed(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; 
-x_2 = lean_alloc_closure((void*)(l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg), 10, 0);
+x_2 = l_Lean_Meta_Grind_Methods_toMethodsRef(x_1);
+lean_dec(x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run___rarg___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_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_MethodsRef_toMethods_unsafe__1(lean_object* x_1) {
 _start:
 {
-lean_object* x_10; uint8_t x_11; 
-x_10 = lean_st_mk_ref(x_1, x_9);
-x_11 = !lean_is_exclusive(x_10);
-if (x_11 == 0)
-{
-return x_10;
-}
-else
-{
-lean_object* x_12; lean_object* x_13; lean_object* x_14; 
-x_12 = lean_ctor_get(x_10, 0);
-x_13 = lean_ctor_get(x_10, 1);
-lean_inc(x_13);
-lean_inc(x_12);
-lean_dec(x_10);
-x_14 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_14, 0, x_12);
-lean_ctor_set(x_14, 1, x_13);
-return x_14;
-}
+lean_inc(x_1);
+return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run___rarg___lambda__2(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) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_MethodsRef_toMethods_unsafe__1___boxed(lean_object* x_1) {
 _start:
 {
-lean_object* x_11; 
-lean_inc(x_2);
-x_11 = lean_apply_9(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_11) == 0)
-{
-lean_object* x_12; lean_object* x_13; lean_object* x_14; uint8_t x_15; 
-x_12 = lean_ctor_get(x_11, 0);
-lean_inc(x_12);
-x_13 = lean_ctor_get(x_11, 1);
-lean_inc(x_13);
-lean_dec(x_11);
-x_14 = lean_st_ref_get(x_2, x_13);
-lean_dec(x_2);
-x_15 = !lean_is_exclusive(x_14);
-if (x_15 == 0)
-{
-lean_object* x_16; lean_object* x_17; 
-x_16 = lean_ctor_get(x_14, 0);
-x_17 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_17, 0, x_12);
-lean_ctor_set(x_17, 1, x_16);
-lean_ctor_set(x_14, 0, x_17);
-return x_14;
-}
-else
-{
-lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; 
-x_18 = lean_ctor_get(x_14, 0);
-x_19 = lean_ctor_get(x_14, 1);
-lean_inc(x_19);
-lean_inc(x_18);
-lean_dec(x_14);
-x_20 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_20, 0, x_12);
-lean_ctor_set(x_20, 1, x_18);
-x_21 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_21, 0, x_20);
-lean_ctor_set(x_21, 1, x_19);
-return x_21;
-}
+lean_object* x_2; 
+x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_MethodsRef_toMethods_unsafe__1(x_1);
+lean_dec(x_1);
+return x_2;
 }
-else
-{
-uint8_t x_22; 
-lean_dec(x_2);
-x_22 = !lean_is_exclusive(x_11);
-if (x_22 == 0)
-{
-return x_11;
 }
-else
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_MethodsRef_toMethods(lean_object* x_1) {
+_start:
 {
-lean_object* x_23; lean_object* x_24; lean_object* x_25; 
-x_23 = lean_ctor_get(x_11, 0);
-x_24 = lean_ctor_get(x_11, 1);
-lean_inc(x_24);
-lean_inc(x_23);
-lean_dec(x_11);
-x_25 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_25, 0, x_23);
-lean_ctor_set(x_25, 1, x_24);
-return x_25;
-}
-}
+lean_inc(x_1);
+return x_1;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run___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, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
+LEAN_EXPORT lean_object* l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_MethodsRef_toMethods___boxed(lean_object* x_1) {
 _start:
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
-x_11 = lean_ctor_get(x_1, 0);
-lean_inc(x_11);
-x_12 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GoalM_run___rarg___lambda__1___boxed), 9, 1);
-lean_closure_set(x_12, 0, x_1);
-x_13 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GoalM_run___rarg___lambda__2), 10, 1);
-lean_closure_set(x_13, 0, x_2);
-x_14 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
-lean_closure_set(x_14, 0, x_12);
-lean_closure_set(x_14, 1, x_13);
-x_15 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(x_11, x_14, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_15;
+lean_object* x_2; 
+x_2 = l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_MethodsRef_toMethods(x_1);
+lean_dec(x_1);
+return x_2;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run(lean_object* x_1) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethods(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) {
 _start:
 {
-lean_object* x_2; 
-x_2 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GoalM_run___rarg), 10, 0);
-return x_2;
+lean_object* x_9; 
+x_9 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_9, 0, x_1);
+lean_ctor_set(x_9, 1, x_8);
+return x_9;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run___rarg___lambda__1___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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getMethods___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) {
 _start:
 {
-lean_object* x_10; 
-x_10 = l_Lean_Meta_Grind_GoalM_run___rarg___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
-lean_dec(x_8);
+lean_object* x_9; 
+x_9 = l_Lean_Meta_Grind_getMethods(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
 lean_dec(x_7);
 lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-return x_10;
+return x_9;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27___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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateUp(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:
 {
-lean_object* x_11; 
+lean_object* x_11; lean_object* x_12; 
+x_11 = lean_ctor_get(x_3, 0);
+lean_inc(x_11);
+x_12 = lean_apply_10(x_11, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_12;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_propagateDown(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:
+{
+lean_object* x_11; lean_object* x_12; 
+x_11 = lean_ctor_get(x_3, 1);
+lean_inc(x_11);
+x_12 = lean_apply_10(x_11, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+return x_12;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc_go(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, lean_object* x_11, lean_object* x_12) {
+_start:
+{
+lean_object* x_13; 
 lean_inc(x_2);
-x_11 = lean_apply_9(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_11) == 0)
+x_13 = l_Lean_Meta_Grind_getNext(x_2, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
+if (lean_obj_tag(x_13) == 0)
 {
-lean_object* x_12; lean_object* x_13; uint8_t x_14; 
-x_12 = lean_ctor_get(x_11, 1);
-lean_inc(x_12);
-lean_dec(x_11);
-x_13 = lean_st_ref_get(x_2, x_12);
+uint8_t x_14; 
 x_14 = !lean_is_exclusive(x_13);
 if (x_14 == 0)
 {
-lean_object* x_15; lean_object* x_16; uint8_t x_17; 
-x_15 = lean_ctor_get(x_13, 1);
-x_16 = lean_st_ref_get(x_2, x_15);
-lean_dec(x_2);
-x_17 = !lean_is_exclusive(x_16);
-if (x_17 == 0)
+lean_object* x_15; lean_object* x_16; lean_object* x_17; uint8_t x_18; 
+x_15 = lean_ctor_get(x_13, 0);
+x_16 = lean_ctor_get(x_13, 1);
+x_17 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_17, 0, x_2);
+lean_ctor_set(x_17, 1, x_3);
+x_18 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_15);
+if (x_18 == 0)
 {
-lean_object* x_18; 
-x_18 = lean_ctor_get(x_16, 0);
-lean_ctor_set(x_13, 1, x_18);
-lean_ctor_set(x_16, 0, x_13);
-return x_16;
+lean_free_object(x_13);
+x_2 = x_15;
+x_3 = x_17;
+x_12 = x_16;
+goto _start;
 }
 else
 {
-lean_object* x_19; lean_object* x_20; lean_object* x_21; 
-x_19 = lean_ctor_get(x_16, 0);
-x_20 = lean_ctor_get(x_16, 1);
-lean_inc(x_20);
-lean_inc(x_19);
-lean_dec(x_16);
-lean_ctor_set(x_13, 1, x_19);
-x_21 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_21, 0, x_13);
-lean_ctor_set(x_21, 1, x_20);
-return x_21;
+lean_dec(x_15);
+lean_ctor_set(x_13, 0, x_17);
+return x_13;
 }
 }
 else
 {
-lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; 
-x_22 = lean_ctor_get(x_13, 0);
-x_23 = lean_ctor_get(x_13, 1);
-lean_inc(x_23);
-lean_inc(x_22);
+lean_object* x_20; lean_object* x_21; lean_object* x_22; uint8_t x_23; 
+x_20 = lean_ctor_get(x_13, 0);
+x_21 = lean_ctor_get(x_13, 1);
+lean_inc(x_21);
+lean_inc(x_20);
 lean_dec(x_13);
-x_24 = lean_st_ref_get(x_2, x_23);
-lean_dec(x_2);
-x_25 = lean_ctor_get(x_24, 0);
-lean_inc(x_25);
-x_26 = lean_ctor_get(x_24, 1);
-lean_inc(x_26);
-if (lean_is_exclusive(x_24)) {
- lean_ctor_release(x_24, 0);
- lean_ctor_release(x_24, 1);
- x_27 = x_24;
-} else {
- lean_dec_ref(x_24);
- x_27 = lean_box(0);
+x_22 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_22, 0, x_2);
+lean_ctor_set(x_22, 1, x_3);
+x_23 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_1, x_20);
+if (x_23 == 0)
+{
+x_2 = x_20;
+x_3 = x_22;
+x_12 = x_21;
+goto _start;
 }
-x_28 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_28, 0, x_22);
-lean_ctor_set(x_28, 1, x_25);
-if (lean_is_scalar(x_27)) {
- x_29 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_29 = x_27;
+else
+{
+lean_object* x_25; 
+lean_dec(x_20);
+x_25 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_25, 0, x_22);
+lean_ctor_set(x_25, 1, x_21);
+return x_25;
 }
-lean_ctor_set(x_29, 0, x_28);
-lean_ctor_set(x_29, 1, x_26);
-return x_29;
 }
 }
 else
 {
-uint8_t x_30; 
+uint8_t x_26; 
+lean_dec(x_3);
 lean_dec(x_2);
-x_30 = !lean_is_exclusive(x_11);
-if (x_30 == 0)
+x_26 = !lean_is_exclusive(x_13);
+if (x_26 == 0)
 {
-return x_11;
+return x_13;
 }
 else
 {
-lean_object* x_31; lean_object* x_32; lean_object* x_33; 
-x_31 = lean_ctor_get(x_11, 0);
-x_32 = lean_ctor_get(x_11, 1);
-lean_inc(x_32);
-lean_inc(x_31);
-lean_dec(x_11);
-x_33 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_33, 0, x_31);
-lean_ctor_set(x_33, 1, x_32);
-return x_33;
+lean_object* x_27; lean_object* x_28; lean_object* x_29; 
+x_27 = lean_ctor_get(x_13, 0);
+x_28 = lean_ctor_get(x_13, 1);
+lean_inc(x_28);
+lean_inc(x_27);
+lean_dec(x_13);
+x_29 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_29, 0, x_27);
+lean_ctor_set(x_29, 1, x_28);
+return x_29;
 }
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27___lambda__2(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_EXPORT lean_object* l_Lean_Meta_Grind_getEqc_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, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
 _start:
 {
-uint8_t x_10; 
-x_10 = !lean_is_exclusive(x_1);
-if (x_10 == 0)
-{
-lean_object* x_11; 
-x_11 = lean_ctor_get(x_1, 1);
+lean_object* x_13; 
+x_13 = l_Lean_Meta_Grind_getEqc_go(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
 lean_dec(x_11);
-lean_ctor_set(x_1, 1, x_9);
-return x_1;
-}
-else
-{
-lean_object* x_12; lean_object* x_13; 
-x_12 = lean_ctor_get(x_1, 0);
-lean_inc(x_12);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
 lean_dec(x_1);
-x_13 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_13, 0, x_12);
-lean_ctor_set(x_13, 1, x_9);
 return x_13;
 }
 }
-}
-static lean_object* _init_l_Lean_Meta_Grind_GoalM_run_x27___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GoalM_run_x27___lambda__2___boxed), 9, 0);
-return x_1;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27(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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc(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:
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; 
-x_11 = lean_ctor_get(x_1, 0);
-lean_inc(x_11);
-x_12 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GoalM_run___rarg___lambda__1___boxed), 9, 1);
-lean_closure_set(x_12, 0, x_1);
-x_13 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GoalM_run_x27___lambda__1), 10, 1);
-lean_closure_set(x_13, 0, x_2);
-x_14 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
-lean_closure_set(x_14, 0, x_12);
-lean_closure_set(x_14, 1, x_13);
-x_15 = l_Lean_Meta_Grind_GoalM_run_x27___closed__1;
-x_16 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
-lean_closure_set(x_16, 0, x_14);
-lean_closure_set(x_16, 1, x_15);
-x_17 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(x_11, x_16, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
-return x_17;
+lean_object* x_11; lean_object* x_12; 
+x_11 = lean_box(0);
+lean_inc(x_1);
+x_12 = l_Lean_Meta_Grind_getEqc_go(x_1, x_1, x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_1);
+return x_12;
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_GoalM_run_x27___lambda__2___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) {
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqc___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, lean_object* x_10) {
 _start:
 {
-lean_object* x_10; 
-x_10 = l_Lean_Meta_Grind_GoalM_run_x27___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+lean_object* x_11; 
+x_11 = l_Lean_Meta_Grind_getEqc(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
+lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
 lean_dec(x_6);
@@ -17508,162 +14337,194 @@ lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
 lean_dec(x_2);
-return x_10;
+return x_11;
 }
 }
-static lean_object* _init_l_Lean_PersistentHashMap_empty___at_Lean_Meta_Grind_mkGoal___spec__1() {
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_getEqcs___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, size_t x_4, size_t x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
 _start:
 {
-lean_object* x_1; 
-x_1 = l_Lean_Meta_Grind_canon___closed__2;
-return x_1;
-}
-}
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkGoal___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, lean_object* x_11) {
-_start:
+uint8_t x_16; 
+x_16 = lean_usize_dec_lt(x_5, x_4);
+if (x_16 == 0)
 {
-uint8_t x_12; uint8_t x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; uint8_t x_20; 
-x_12 = 1;
-x_13 = 0;
-x_14 = lean_unsigned_to_nat(0u);
-x_15 = l_Lean_Meta_Grind_mkENodeCore(x_1, x_12, x_13, x_14, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
-x_16 = lean_ctor_get(x_15, 1);
-lean_inc(x_16);
-lean_dec(x_15);
-x_17 = l_Lean_Meta_Grind_mkENodeCore(x_2, x_12, x_13, x_14, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_16);
-x_18 = lean_ctor_get(x_17, 1);
-lean_inc(x_18);
-lean_dec(x_17);
-x_19 = lean_st_ref_get(x_3, x_18);
-x_20 = !lean_is_exclusive(x_19);
-if (x_20 == 0)
+lean_object* x_17; 
+x_17 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_17, 0, x_6);
+lean_ctor_set(x_17, 1, x_15);
+return x_17;
+}
+else
 {
-lean_object* x_21; lean_object* x_22; uint8_t x_23; 
-x_21 = lean_ctor_get(x_19, 1);
-x_22 = lean_st_ref_get(x_3, x_21);
-x_23 = !lean_is_exclusive(x_22);
-if (x_23 == 0)
+lean_object* x_18; lean_object* x_19; lean_object* x_20; uint8_t x_21; 
+x_18 = lean_array_uget(x_3, x_5);
+x_19 = lean_ctor_get(x_18, 2);
+lean_inc(x_19);
+x_20 = lean_ctor_get(x_18, 0);
+lean_inc(x_20);
+lean_dec(x_18);
+x_21 = l_Lean_Meta_Grind_isSameExpr_unsafe__1(x_19, x_20);
+lean_dec(x_19);
+if (x_21 == 0)
 {
-lean_object* x_24; 
-x_24 = lean_ctor_get(x_22, 0);
-lean_ctor_set(x_19, 1, x_24);
-lean_ctor_set(x_22, 0, x_19);
-return x_22;
+size_t x_22; size_t x_23; 
+lean_dec(x_20);
+x_22 = 1;
+x_23 = lean_usize_add(x_5, x_22);
+x_5 = x_23;
+goto _start;
 }
 else
 {
-lean_object* x_25; lean_object* x_26; lean_object* x_27; 
-x_25 = lean_ctor_get(x_22, 0);
-x_26 = lean_ctor_get(x_22, 1);
+lean_object* x_25; 
+x_25 = l_Lean_Meta_Grind_getEqc(x_20, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
+if (lean_obj_tag(x_25) == 0)
+{
+lean_object* x_26; lean_object* x_27; lean_object* x_28; size_t x_29; size_t x_30; 
+x_26 = lean_ctor_get(x_25, 0);
 lean_inc(x_26);
-lean_inc(x_25);
-lean_dec(x_22);
-lean_ctor_set(x_19, 1, x_25);
-x_27 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_27, 0, x_19);
-lean_ctor_set(x_27, 1, x_26);
-return x_27;
-}
+x_27 = lean_ctor_get(x_25, 1);
+lean_inc(x_27);
+lean_dec(x_25);
+x_28 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_28, 0, x_26);
+lean_ctor_set(x_28, 1, x_6);
+x_29 = 1;
+x_30 = lean_usize_add(x_5, x_29);
+x_5 = x_30;
+x_6 = x_28;
+x_15 = x_27;
+goto _start;
 }
 else
 {
-lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_28 = lean_ctor_get(x_19, 0);
-x_29 = lean_ctor_get(x_19, 1);
-lean_inc(x_29);
-lean_inc(x_28);
-lean_dec(x_19);
-x_30 = lean_st_ref_get(x_3, x_29);
-x_31 = lean_ctor_get(x_30, 0);
-lean_inc(x_31);
-x_32 = lean_ctor_get(x_30, 1);
-lean_inc(x_32);
-if (lean_is_exclusive(x_30)) {
- lean_ctor_release(x_30, 0);
- lean_ctor_release(x_30, 1);
- x_33 = x_30;
-} else {
- lean_dec_ref(x_30);
- x_33 = lean_box(0);
-}
-x_34 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_34, 0, x_28);
-lean_ctor_set(x_34, 1, x_31);
-if (lean_is_scalar(x_33)) {
- x_35 = lean_alloc_ctor(0, 2, 0);
-} else {
- x_35 = x_33;
+uint8_t x_32; 
+lean_dec(x_6);
+x_32 = !lean_is_exclusive(x_25);
+if (x_32 == 0)
+{
+return x_25;
 }
-lean_ctor_set(x_35, 0, x_34);
-lean_ctor_set(x_35, 1, x_32);
+else
+{
+lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_33 = lean_ctor_get(x_25, 0);
+x_34 = lean_ctor_get(x_25, 1);
+lean_inc(x_34);
+lean_inc(x_33);
+lean_dec(x_25);
+x_35 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_35, 0, x_33);
+lean_ctor_set(x_35, 1, x_34);
 return x_35;
 }
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkGoal(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_EXPORT lean_object* l_Lean_Meta_Grind_getEqcs(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; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; 
-x_10 = l_Lean_Meta_Grind_getTrueExpr___rarg(x_4, x_5, x_6, x_7, x_8, x_9);
-x_11 = lean_ctor_get(x_10, 0);
-lean_inc(x_11);
-x_12 = lean_ctor_get(x_10, 1);
+lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; size_t x_15; size_t x_16; lean_object* x_17; 
+x_10 = lean_box(0);
+x_11 = l_Lean_Meta_Grind_getENodes(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+x_12 = lean_ctor_get(x_11, 0);
 lean_inc(x_12);
-lean_dec(x_10);
-x_13 = l_Lean_Meta_Grind_getFalseExpr___rarg(x_4, x_5, x_6, x_7, x_8, x_12);
-x_14 = lean_ctor_get(x_13, 0);
-lean_inc(x_14);
-x_15 = lean_ctor_get(x_13, 1);
-lean_inc(x_15);
-lean_dec(x_13);
-x_16 = l_Lean_Meta_Grind_canon___closed__2;
-x_17 = l_Lean_PersistentHashMap_empty___at_Lean_Meta_Grind_mkGoal___spec__1;
-x_18 = l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__1;
-x_19 = 0;
-x_20 = lean_unsigned_to_nat(0u);
-lean_inc(x_1);
-x_21 = lean_alloc_ctor(0, 7, 1);
-lean_ctor_set(x_21, 0, x_1);
-lean_ctor_set(x_21, 1, x_16);
-lean_ctor_set(x_21, 2, x_16);
-lean_ctor_set(x_21, 3, x_17);
-lean_ctor_set(x_21, 4, x_18);
-lean_ctor_set(x_21, 5, x_20);
-lean_ctor_set(x_21, 6, x_20);
-lean_ctor_set_uint8(x_21, sizeof(void*)*7, x_19);
-x_22 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_GoalM_run___rarg___lambda__1___boxed), 9, 1);
-lean_closure_set(x_22, 0, x_21);
-x_23 = lean_alloc_closure((void*)(l_Lean_Meta_Grind_mkGoal___lambda__1___boxed), 11, 2);
-lean_closure_set(x_23, 0, x_14);
-lean_closure_set(x_23, 1, x_11);
-x_24 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
-lean_closure_set(x_24, 0, x_22);
-lean_closure_set(x_24, 1, x_23);
-x_25 = l_Lean_Meta_Grind_GoalM_run_x27___closed__1;
-x_26 = lean_alloc_closure((void*)(l_ReaderT_bind___at_Lean_Meta_Grind_GoalM_run___spec__1___rarg), 10, 2);
-lean_closure_set(x_26, 0, x_24);
-lean_closure_set(x_26, 1, x_25);
-x_27 = l_Lean_MVarId_withContext___at_Lean_Meta_Grind_GoalM_run___spec__2___rarg(x_1, x_26, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_15);
-return x_27;
+x_13 = lean_ctor_get(x_11, 1);
+lean_inc(x_13);
+lean_dec(x_11);
+x_14 = lean_box(0);
+x_15 = lean_array_size(x_12);
+x_16 = 0;
+x_17 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_getEqcs___spec__1(x_12, x_14, x_12, x_15, x_16, x_10, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_13);
+lean_dec(x_12);
+if (lean_obj_tag(x_17) == 0)
+{
+uint8_t x_18; 
+x_18 = !lean_is_exclusive(x_17);
+if (x_18 == 0)
+{
+return x_17;
+}
+else
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_19 = lean_ctor_get(x_17, 0);
+x_20 = lean_ctor_get(x_17, 1);
+lean_inc(x_20);
+lean_inc(x_19);
+lean_dec(x_17);
+x_21 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_21, 0, x_19);
+lean_ctor_set(x_21, 1, x_20);
+return x_21;
+}
+}
+else
+{
+uint8_t x_22; 
+x_22 = !lean_is_exclusive(x_17);
+if (x_22 == 0)
+{
+return x_17;
+}
+else
+{
+lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+x_23 = lean_ctor_get(x_17, 0);
+x_24 = lean_ctor_get(x_17, 1);
+lean_inc(x_24);
+lean_inc(x_23);
+lean_dec(x_17);
+x_25 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_25, 0, x_23);
+lean_ctor_set(x_25, 1, x_24);
+return x_25;
+}
 }
 }
-LEAN_EXPORT lean_object* l_Lean_Meta_Grind_mkGoal___lambda__1___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, lean_object* x_10, lean_object* x_11) {
+}
+LEAN_EXPORT lean_object* l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_getEqcs___spec__1___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, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) {
 _start:
 {
-lean_object* x_12; 
-x_12 = l_Lean_Meta_Grind_mkGoal___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
+size_t x_16; size_t x_17; lean_object* x_18; 
+x_16 = lean_unbox_usize(x_4);
+lean_dec(x_4);
+x_17 = lean_unbox_usize(x_5);
+lean_dec(x_5);
+x_18 = l_Array_forIn_x27Unsafe_loop___at_Lean_Meta_Grind_getEqcs___spec__1(x_1, x_2, x_3, x_16, x_17, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15);
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
 lean_dec(x_10);
 lean_dec(x_9);
 lean_dec(x_8);
 lean_dec(x_7);
+lean_dec(x_3);
+lean_dec(x_2);
+lean_dec(x_1);
+return x_18;
+}
+}
+LEAN_EXPORT lean_object* l_Lean_Meta_Grind_getEqcs___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_Meta_Grind_getEqcs(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+lean_dec(x_8);
+lean_dec(x_7);
 lean_dec(x_6);
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
-return x_12;
+lean_dec(x_2);
+lean_dec(x_1);
+return x_10;
 }
 }
 lean_object* initialize_Lean_Util_ShareCommon(uint8_t builtin, lean_object*);
+lean_object* initialize_Lean_HeadIndex(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Meta_Basic(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Meta_CongrTheorems(uint8_t builtin, lean_object*);
 lean_object* initialize_Lean_Meta_AbstractNestedProofs(uint8_t builtin, lean_object*);
@@ -17679,6 +14540,9 @@ _G_initialized = true;
 res = initialize_Lean_Util_ShareCommon(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
+res = initialize_Lean_HeadIndex(builtin, lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+lean_dec_ref(res);
 res = initialize_Lean_Meta_Basic(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
@@ -17700,29 +14564,52 @@ lean_dec_ref(res);
 res = initialize_Lean_Meta_Tactic_Grind_Attr(builtin, lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__1 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__1();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__1);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__2 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__2();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__2);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__3 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__3();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__3);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__4 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__4();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__4);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__5 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__5();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__5);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__6 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__6();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__6);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__7 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__7();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__7);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__8 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__8();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__8);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__9 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__9();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70____closed__9);
-if (builtin) {res = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_70_(lean_io_mk_world());
+l_Lean_Meta_Grind_congrPlaceholderProof___closed__1 = _init_l_Lean_Meta_Grind_congrPlaceholderProof___closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_congrPlaceholderProof___closed__1);
+l_Lean_Meta_Grind_congrPlaceholderProof___closed__2 = _init_l_Lean_Meta_Grind_congrPlaceholderProof___closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_congrPlaceholderProof___closed__2);
+l_Lean_Meta_Grind_congrPlaceholderProof___closed__3 = _init_l_Lean_Meta_Grind_congrPlaceholderProof___closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_congrPlaceholderProof___closed__3);
+l_Lean_Meta_Grind_congrPlaceholderProof = _init_l_Lean_Meta_Grind_congrPlaceholderProof();
+lean_mark_persistent(l_Lean_Meta_Grind_congrPlaceholderProof);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__1 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__1);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__2 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__2);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__3 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__3);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__4 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__4);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__5 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__5);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__6 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__6();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__6);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__7 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__7();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__7);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__8 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__8();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__8);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__9 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__9();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78____closed__9);
+if (builtin) {res = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_78_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 l_Lean_Meta_Grind_grind_debug = lean_io_result_get_value(res);
 lean_mark_persistent(l_Lean_Meta_Grind_grind_debug);
 lean_dec_ref(res);
+}l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__1 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__1();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__1);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__2 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__2();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__2);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__3 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__3();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__3);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__4 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__4();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__4);
+l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__5 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__5();
+lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118____closed__5);
+if (builtin) {res = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_118_(lean_io_mk_world());
+if (lean_io_result_is_error(res)) return res;
+l_Lean_Meta_Grind_grind_debug_proofs = lean_io_result_get_value(res);
+lean_mark_persistent(l_Lean_Meta_Grind_grind_debug_proofs);
+lean_dec_ref(res);
 }l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_MethodsRefPointed = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_MethodsRefPointed();
 l_Lean_Meta_Grind_abstractNestedProofs___closed__1 = _init_l_Lean_Meta_Grind_abstractNestedProofs___closed__1();
 lean_mark_persistent(l_Lean_Meta_Grind_abstractNestedProofs___closed__1);
@@ -17746,114 +14633,114 @@ l_Lean_Meta_Grind_instInhabitedENode___closed__2 = _init_l_Lean_Meta_Grind_instI
 lean_mark_persistent(l_Lean_Meta_Grind_instInhabitedENode___closed__2);
 l_Lean_Meta_Grind_instInhabitedENode = _init_l_Lean_Meta_Grind_instInhabitedENode();
 lean_mark_persistent(l_Lean_Meta_Grind_instInhabitedENode);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__1);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__2();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__2);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__3();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__3);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__4();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__4);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__5();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__5);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__6();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__6);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__7 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__7();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__7);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__8 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__8();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__8);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__9 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__9();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__9);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__10 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__10();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__10);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__11 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__11();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__11);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__12 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__12();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__12);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__13 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__13();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__13);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__14 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__14();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__14);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__15 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__15();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__15);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__16 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__16();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__16);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__17 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__17();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__17);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__18 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__18();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__18);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__19 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__19();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__19);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__20 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__20();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__20);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__21 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__21();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__21);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__22 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__22();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__22);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__23 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__23();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__23);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__24 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__24();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__24);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__25 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__25();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__25);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__26 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__26();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__26);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__27 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__27();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__27);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__28 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__28();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__28);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__29 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__29();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__29);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__30 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__30();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__30);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__31 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__31();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__31);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__32 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__32();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__32);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__33 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__33();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__33);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__34 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__34();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__34);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__35 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__35();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__35);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__36 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__36();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__36);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__37 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__37();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__37);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__38 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__38();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__38);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__39 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__39();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__39);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__40 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__40();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__40);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__41 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__41();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__41);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__42 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__42();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__42);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__43 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__43();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__43);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__44 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__44();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__44);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__45 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__45();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__45);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__46 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__46();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__46);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__47 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__47();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__47);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__48 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__48();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__48);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__49 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__49();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__49);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__50 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__50();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__50);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__51 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__51();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__51);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__52 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__52();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__52);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__53 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__53();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__53);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__54 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__54();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1336____closed__54);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__1();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__1);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__2();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__2);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__3();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__3);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__4();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__4);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__5();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__5);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__6();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__6);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__7 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__7();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__7);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__8 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__8();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__8);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__9 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__9();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__9);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__10 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__10();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__10);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__11 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__11();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__11);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__12 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__12();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__12);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__13 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__13();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__13);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__14 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__14();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__14);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__15 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__15();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__15);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__16 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__16();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__16);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__17 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__17();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__17);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__18 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__18();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__18);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__19 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__19();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__19);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__20 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__20();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__20);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__21 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__21();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__21);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__22 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__22();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__22);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__23 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__23();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__23);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__24 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__24();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__24);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__25 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__25();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__25);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__26 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__26();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__26);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__27 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__27();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__27);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__28 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__28();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__28);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__29 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__29();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__29);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__30 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__30();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__30);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__31 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__31();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__31);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__32 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__32();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__32);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__33 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__33();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__33);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__34 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__34();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__34);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__35 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__35();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__35);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__36 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__36();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__36);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__37 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__37();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__37);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__38 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__38();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__38);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__39 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__39();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__39);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__40 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__40();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__40);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__41 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__41();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__41);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__42 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__42();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__42);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__43 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__43();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__43);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__44 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__44();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__44);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__45 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__45();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__45);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__46 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__46();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__46);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__47 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__47();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__47);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__48 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__48();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__48);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__49 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__49();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__49);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__50 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__50();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__50);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__51 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__51();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__51);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__52 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__52();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__52);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__53 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__53();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__53);
+l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__54 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__54();
+lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_reprENode____x40_Lean_Meta_Tactic_Grind_Types___hyg_1389____closed__54);
 l_Lean_Meta_Grind_instReprENode___closed__1 = _init_l_Lean_Meta_Grind_instReprENode___closed__1();
 lean_mark_persistent(l_Lean_Meta_Grind_instReprENode___closed__1);
 l_Lean_Meta_Grind_instReprENode = _init_l_Lean_Meta_Grind_instReprENode();
@@ -17876,6 +14763,7 @@ l_Lean_Meta_Grind_getENode___closed__3 = _init_l_Lean_Meta_Grind_getENode___clos
 lean_mark_persistent(l_Lean_Meta_Grind_getENode___closed__3);
 l_Lean_Meta_Grind_getENode___closed__4 = _init_l_Lean_Meta_Grind_getENode___closed__4();
 lean_mark_persistent(l_Lean_Meta_Grind_getENode___closed__4);
+l_Lean_Meta_Grind_hasSameType___closed__1 = _init_l_Lean_Meta_Grind_hasSameType___closed__1();
 l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__1 = _init_l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__1();
 lean_mark_persistent(l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__1);
 l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__2 = _init_l_Lean_PersistentHashMap_toArray___at_Lean_Meta_Grind_getENodes___spec__1___closed__2();
@@ -17888,185 +14776,6 @@ l_Lean_Meta_Grind_instInhabitedMethods___closed__2 = _init_l_Lean_Meta_Grind_ins
 lean_mark_persistent(l_Lean_Meta_Grind_instInhabitedMethods___closed__2);
 l_Lean_Meta_Grind_instInhabitedMethods = _init_l_Lean_Meta_Grind_instInhabitedMethods();
 lean_mark_persistent(l_Lean_Meta_Grind_instInhabitedMethods);
-l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__1 = _init_l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__1();
-lean_mark_persistent(l_Lean_Meta_Grind_instInhabitedBuiltinPropagators___closed__1);
-l_Lean_Meta_Grind_instInhabitedBuiltinPropagators = _init_l_Lean_Meta_Grind_instInhabitedBuiltinPropagators();
-lean_mark_persistent(l_Lean_Meta_Grind_instInhabitedBuiltinPropagators);
-if (builtin) {res = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4343_(lean_io_mk_world());
-if (lean_io_result_is_error(res)) return res;
-l_Lean_Meta_Grind_builtinPropagatorsRef = lean_io_result_get_value(res);
-lean_mark_persistent(l_Lean_Meta_Grind_builtinPropagatorsRef);
-lean_dec_ref(res);
-}l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__1___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__2();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__2);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__3);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__4();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___lambda__4___closed__4);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__2();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_registerBuiltinPropagatorCore___closed__2);
-l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__1 = _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__1();
-lean_mark_persistent(l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__1);
-l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__2 = _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__2();
-lean_mark_persistent(l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__2);
-l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__3 = _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__3();
-lean_mark_persistent(l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__3);
-l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__4 = _init_l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__4();
-lean_mark_persistent(l_Lean_throwUnknownConstant___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__6___closed__4);
-l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__1 = _init_l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__1();
-lean_mark_persistent(l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__1);
-l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__2 = _init_l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__2();
-lean_mark_persistent(l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__2);
-l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__3 = _init_l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__3();
-lean_mark_persistent(l_Lean_preprocessSyntaxAndResolve___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__7___closed__3);
-l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__2___closed__1 = _init_l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__2___closed__1();
-lean_mark_persistent(l_Lean_resolveGlobalConst___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__2___closed__1);
-l_panic___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__11___closed__1 = _init_l_panic___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__11___closed__1();
-lean_mark_persistent(l_panic___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__11___closed__1);
-l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__1 = _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__1();
-lean_mark_persistent(l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__1);
-l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__2 = _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__2();
-lean_mark_persistent(l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__2);
-l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__3 = _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__3();
-lean_mark_persistent(l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__3);
-l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__4 = _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__4();
-lean_mark_persistent(l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__4);
-l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__5 = _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__5();
-lean_mark_persistent(l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__5);
-l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__6 = _init_l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__6();
-lean_mark_persistent(l_Lean_ensureNonAmbiguous___at___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___spec__10___closed__6);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__1 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__1();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__1);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__2 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__2();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__2);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__3 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__3();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__3);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__4 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__4();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__4);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__5 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__5();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__5);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__6 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__6();
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__7 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__7();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__7);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__8 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__8();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__8);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__9 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__9();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__9);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__10 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__10();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__10);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__11 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__11();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__11);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__12 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__12();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__12);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__13 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__13();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__13);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__14 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__14();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__14);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__15 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__15();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__15);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__16 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__16();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__16);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__17 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__17();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__17);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__18 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__18();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__18);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__19 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__19();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__19);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__20 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__20();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__20);
-l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__21 = _init_l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__21();
-lean_mark_persistent(l___private_Lean_Meta_Tactic_Grind_Types_0__Lean_Meta_Grind_addBuiltin___closed__21);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___closed__1 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___closed__1();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___closed__1);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___closed__2 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___closed__2();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____lambda__2___closed__2);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__1 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__1();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__1);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__2 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__2();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__2);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__3 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__3();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__3);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__4 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__4();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__4);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__5 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__5();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__5);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__6 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__6();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__6);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__7 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__7();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__7);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__8 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__8();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__8);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__9 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__9();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__9);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__10 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__10();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__10);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__11 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__11();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__11);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__12 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__12();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__12);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__13 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__13();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__13);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__14 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__14();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__14);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__15 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__15();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__15);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__16 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__16();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__16);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__17 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__17();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__17);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__18 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__18();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__18);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__19 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__19();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__19);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__20 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__20();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__20);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__21 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__21();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__21);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__22 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__22();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__22);
-l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__23 = _init_l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__23();
-lean_mark_persistent(l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946____closed__23);
-if (builtin) {res = l_Lean_Meta_Grind_initFn____x40_Lean_Meta_Tactic_Grind_Types___hyg_4946_(lean_io_mk_world());
-if (lean_io_result_is_error(res)) return res;
-lean_dec_ref(res);
-}l_Lean_Meta_Grind_GrindM_run___rarg___closed__1 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__1();
-lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__1);
-l_Lean_Meta_Grind_GrindM_run___rarg___closed__2 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__2();
-lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__2);
-l_Lean_Meta_Grind_GrindM_run___rarg___closed__3 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__3();
-lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__3);
-l_Lean_Meta_Grind_GrindM_run___rarg___closed__4 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__4();
-lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__4);
-l_Lean_Meta_Grind_GrindM_run___rarg___closed__5 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__5();
-lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__5);
-l_Lean_Meta_Grind_GrindM_run___rarg___closed__6 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__6();
-lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__6);
-l_Lean_Meta_Grind_GrindM_run___rarg___closed__7 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__7();
-lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__7);
-l_Lean_Meta_Grind_GrindM_run___rarg___closed__8 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__8();
-lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__8);
-l_Lean_Meta_Grind_GrindM_run___rarg___closed__9 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__9();
-lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__9);
-l_Lean_Meta_Grind_GrindM_run___rarg___closed__10 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__10();
-lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__10);
-l_Lean_Meta_Grind_GrindM_run___rarg___closed__11 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__11();
-lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__11);
-l_Lean_Meta_Grind_GrindM_run___rarg___closed__12 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__12();
-lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__12);
-l_Lean_Meta_Grind_GrindM_run___rarg___closed__13 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__13();
-lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__13);
-l_Lean_Meta_Grind_GrindM_run___rarg___closed__14 = _init_l_Lean_Meta_Grind_GrindM_run___rarg___closed__14();
-lean_mark_persistent(l_Lean_Meta_Grind_GrindM_run___rarg___closed__14);
-l_Lean_Meta_Grind_GoalM_run_x27___closed__1 = _init_l_Lean_Meta_Grind_GoalM_run_x27___closed__1();
-lean_mark_persistent(l_Lean_Meta_Grind_GoalM_run_x27___closed__1);
-l_Lean_PersistentHashMap_empty___at_Lean_Meta_Grind_mkGoal___spec__1 = _init_l_Lean_PersistentHashMap_empty___at_Lean_Meta_Grind_mkGoal___spec__1();
-lean_mark_persistent(l_Lean_PersistentHashMap_empty___at_Lean_Meta_Grind_mkGoal___spec__1);
 return lean_io_result_mk_ok(lean_box(0));
 }
 #ifdef __cplusplus
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Simp/BuiltinSimprocs/Int.c b/stage0/stdlib/Lean/Meta/Tactic/Simp/BuiltinSimprocs/Int.c
index c4aae950a0b3..0b46008ac2ec 100644
--- a/stage0/stdlib/Lean/Meta/Tactic/Simp/BuiltinSimprocs/Int.c
+++ b/stage0/stdlib/Lean/Meta/Tactic/Simp/BuiltinSimprocs/Int.c
@@ -15,538 +15,537 @@ extern "C" {
 #endif
 lean_object* l_Lean_Expr_const___override(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceBNe(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__5;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1322_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceTDiv___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__3;
 lean_object* lean_int_mod(lean_object*, lean_object*);
 static lean_object* l_Int_reduceBoolPred___lambda__1___closed__5;
+static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__8;
 static lean_object* l_Int_reduceMul___closed__2;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2199_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2069_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__6;
+static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceDiv___lambda__1(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___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2021_(lean_object*);
 static lean_object* l_Int_reducePow___closed__3;
-static lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__4;
 lean_object* l_Lean_mkNatLit(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__5;
-static lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__1;
-static lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__4;
+static lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1875____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceBinIntNatOp___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___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1233____closed__1;
-static lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2199____closed__1;
-static lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2179____closed__1;
+static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__8;
+static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__7;
 static lean_object* l_Int_reduceUnary___lambda__1___closed__1;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceSub___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__5;
 LEAN_EXPORT lean_object* l_Int_reduceGE(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2451_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceAdd___lambda__1___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___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1255____closed__1;
 static lean_object* l_Int_reduceFMod___closed__1;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1279_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1788_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__4;
+static lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__3;
+static lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__3;
 LEAN_EXPORT lean_object* l_Int_reduceFMod___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1905____closed__1;
+static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceTDiv___lambda__1___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___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__1;
 lean_object* l_Lean_Meta_getNatValue_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceGT___lambda__1(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_Int_reduceMul___lambda__1___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___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1955_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__6;
 static lean_object* l_Int_reduceUnary___lambda__1___closed__10;
-static lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1277____closed__1;
+static lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__3;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1914_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceAdd(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceToNat___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2;
-static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1749____closed__1;
-static lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__3;
-static lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__1;
+static lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__2;
+static lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__3;
+static lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__2;
 static lean_object* l_Int_reduceAdd___closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1838_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceNegSucc___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceBdiv___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__2;
-static lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__5;
 LEAN_EXPORT lean_object* l_Int_reduceToNat(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1001_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__6;
 LEAN_EXPORT lean_object* l_Int_reduceUnary___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_Int_reduceNatCore___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___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__4;
+static lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__1;
 static lean_object* l_Int_reduceDiv___closed__2;
 static lean_object* l_Int_reduceFDiv___closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceAdd___lambda__1(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_Int_reduceAbs___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 uint8_t l_Lean_Expr_isAppOfArity(lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1113____closed__1;
-static lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__2;
 static lean_object* l_Int_reduceUnary___lambda__1___closed__6;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2033_(lean_object*);
 uint8_t l_Lean_Expr_isApp(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__3;
-static lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2364____closed__1;
+static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__9;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2108____closed__1;
+static lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceFDiv___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Int_reduceDiv___closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceBEq___lambda__1___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___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceBin___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___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1829_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceLT___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__3;
 static lean_object* l_Int_reducePow___closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceAbs___lambda__1___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___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2059_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceTMod___lambda__1___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___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__1;
-static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__10;
+static lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceBNe___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__1;
-static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__1;
 static lean_object* l_Int_reduceUnary___lambda__1___closed__5;
-static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__10;
-LEAN_EXPORT lean_object* l_Int_isPosValue___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Int_isPosValue___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___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2366_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__4;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1153_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1953____closed__1;
+static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__4;
+static lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__2;
 static lean_object* l_Int_reduceGE___closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceTMod(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__5;
 lean_object* lean_int_emod(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__1;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__2;
+static lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1385____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceGE___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Int_reduceLE___closed__2;
-static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__4;
 LEAN_EXPORT lean_object* l_Int_reduceNeg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Int_reduceBoolPred___lambda__1___closed__4;
 LEAN_EXPORT lean_object* l_Int_reduceAbs___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__2;
+static lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__4;
 static lean_object* l_Int_reduceUnary___lambda__1___closed__11;
+static lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__5;
 static lean_object* l_Int_reduceNe___closed__1;
-static lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__6;
 LEAN_EXPORT lean_object* l_Int_reduceNatCore___lambda__1(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___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__6;
 LEAN_EXPORT lean_object* l_Int_reducePow___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__5;
-static lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__3;
-static lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__4;
+static lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__5;
 LEAN_EXPORT lean_object* l_Int_fromExpr_x3f___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__9;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1320_(lean_object*);
 lean_object* l_Lean_Meta_Simp_evalPropStep(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceGE___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__5;
 LEAN_EXPORT lean_object* l_Int_reduceNeg___lambda__1___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___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__6;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__2;
+static lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__3;
 lean_object* l_Lean_Expr_cleanupAnnotations(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1827_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__5;
+static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__9;
+static lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__4;
+static lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__5;
+static lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318_(lean_object*);
+static lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__2;
+static lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__1;
+static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__1;
 static lean_object* l_Int_reduceLT___closed__3;
 LEAN_EXPORT lean_object* l_Int_reduceSub___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__3;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1164_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceBoolPred___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_EXPORT lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1751_(lean_object*);
-LEAN_EXPORT lean_object* l_Int_reduceNeg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Int_reduceMod___closed__3;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceUnary___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_Int_reduceFDiv(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1836_(lean_object*);
 uint8_t lean_int_dec_le(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__1;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1319_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1235_(lean_object*);
+static lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1088____closed__1;
+static lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1240_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceUnary___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*);
-static lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1788____closed__1;
 LEAN_EXPORT lean_object* l_Int_reducePow___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___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceFMod___lambda__1___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_Int_reduceAbs(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Level_ofNat(lean_object*);
 lean_object* l_Lean_Expr_appArg_x21(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__4;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1037_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__3;
+static lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__5;
+static lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__3;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990_(lean_object*);
 static lean_object* l_Int_reduceBoolPred___lambda__1___closed__9;
 LEAN_EXPORT lean_object* l_Int_reduceBmod___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111_(lean_object*);
 lean_object* l_Lean_checkExponent(lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__5;
 static lean_object* l_Int_reduceBoolPred___lambda__1___closed__3;
-static lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1944____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceBoolPred___lambda__1(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_Int_reduceTDiv___closed__2;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1257_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__4;
-static lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__4;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1790_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__6;
+static lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__1;
+static lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__6;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__4;
+static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1836____closed__1;
+static lean_object* l_Int_reduceNeg___closed__1;
+static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__3;
+static lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__5;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1088_(lean_object*);
 static lean_object* l_Int_reducePow___closed__1;
 static lean_object* l_Int_reduceEq___closed__2;
+static lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__2;
 static lean_object* l_Int_reduceEq___closed__1;
-static lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__5;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149_(lean_object*);
-static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__6;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1113_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__3;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2453_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__4;
 static lean_object* l_Int_reduceUnary___lambda__1___closed__3;
+static lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__5;
 LEAN_EXPORT lean_object* l_Int_reduceEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceNeg___lambda__1(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___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1077_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__6;
+static lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__4;
 lean_object* l_Int_fdiv(lean_object*, lean_object*);
 uint8_t l_instDecidableNot___rarg(uint8_t);
+static lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__1;
 static lean_object* l_Int_reduceBoolPred___lambda__1___closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceLE(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__3;
+static lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__5;
 extern lean_object* l_Lean_Meta_Simp_builtinSimprocsRef;
 LEAN_EXPORT lean_object* l_Int_reduceToNat___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__3;
 static lean_object* l_Int_reduceFMod___closed__2;
-static lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__1;
-static lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__6;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198_(lean_object*);
+static lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__5;
 static lean_object* l_Int_reduceBdiv___closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1124_(lean_object*);
 lean_object* l_Lean_Meta_getIntValue_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__8;
+static lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2266____closed__1;
 static lean_object* l_Int_reduceLT___closed__2;
 static lean_object* l_Int_reduceAdd___closed__3;
-static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__8;
-static lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__1;
-static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__5;
+static lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__4;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1877_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1406____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceTMod___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__1;
-static lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__2;
-static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__7;
 static lean_object* l_Int_reduceBEq___closed__2;
+static lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__3;
 static lean_object* l_Int_reduceTDiv___closed__1;
 lean_object* lean_nat_to_int(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reducePow___lambda__2___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___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__2;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1982_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1321_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__6;
-static lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__5;
-static lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__4;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__4;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__4;
 LEAN_EXPORT lean_object* l_Int_reduceEq___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__2;
-static lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__6;
-static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__11;
-static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__1;
+static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__8;
+static lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__5;
+static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__3;
 LEAN_EXPORT lean_object* l_Int_reduceGT___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Int_pow(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__5;
-static lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__2;
+static lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2146____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceNatCore(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_Int_reduceLE___closed__1;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823_(lean_object*);
 static lean_object* l_Int_reduceTMod___closed__1;
-static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__9;
+static lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__4;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1364_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reducePow(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Int_fmod(lean_object*, lean_object*);
 static lean_object* l_Int_reduceBmod___closed__1;
-static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__8;
-static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__2;
-static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__8;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__2;
+static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__1;
+static lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2031____closed__1;
+static lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__1;
 lean_object* l_Lean_Expr_appArg(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1749_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1868_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2031_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__5;
+static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__2;
 static lean_object* l_Int_reduceUnary___lambda__1___closed__7;
 LEAN_EXPORT lean_object* l_Int_reduceNegSucc(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1946_(lean_object*);
-static lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__6;
 LEAN_EXPORT lean_object* l_Int_reduceMul(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__4;
+static lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__1;
+static lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__6;
 static lean_object* l_Int_reduceOfNat___closed__2;
+static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+static lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceMul___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__6;
-static lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__2;
 static lean_object* l_Int_reduceDiv___closed__3;
+static lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__6;
+static lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__4;
+static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__5;
 LEAN_EXPORT lean_object* l_Int_reduceToNat___lambda__1___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___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__5;
-static lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__4;
+static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__10;
 lean_object* l_Lean_Expr_appFnCleanup(lean_object*, lean_object*);
 static lean_object* l_Int_reduceBmod___closed__2;
-static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__2;
-static lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceBinIntNatOp___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___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1211_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__3;
-static lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__3;
-static lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1385_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__4;
+static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1124____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceGT___lambda__1___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___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1342____closed__1;
 static lean_object* l_Int_reduceBoolPred___lambda__1___closed__1;
-static lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__6;
 LEAN_EXPORT lean_object* l_Int_reduceBEq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Int_reduceAdd___closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceNe(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__3;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1994_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceBEq___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1037____closed__1;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2201_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1984_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1320____closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1992_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__3;
+static lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__4;
 static lean_object* l_Int_reduceBdiv___closed__3;
-static lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__4;
-static lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__1;
+static lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1406_(lean_object*);
 static lean_object* l_Int_reduceBmod___closed__3;
 LEAN_EXPORT lean_object* l_Int_reduceLT___lambda__1(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_Int_reduceMod___lambda__1___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___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__6;
-static lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__1;
-static lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__1;
-static lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__5;
+static lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1342_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__5;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1300_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1200____closed__1;
+static lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__1;
 LEAN_EXPORT lean_object* l_Int_fromExpr_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Int_reduceGT___closed__1;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057_(lean_object*);
 lean_object* lean_int_div(lean_object*, lean_object*);
 lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1300_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__5;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__2;
+static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__5;
 LEAN_EXPORT lean_object* l_Int_reduceFMod___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceBinPred___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*);
+static lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__6;
 LEAN_EXPORT lean_object* l_Int_reduceFDiv___lambda__1___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_Int_reduceBin___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_Int_reduceFDiv___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__7;
+static lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__6;
+static lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__4;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1366_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1238_(lean_object*);
 static lean_object* l_Int_reduceToNat___closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceBoolPred___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___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2071_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_isPosValue___lambda__1___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___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__6;
-static lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__4;
 LEAN_EXPORT lean_object* l_Int_reduceBinIntNatOp___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___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2179_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1211____closed__1;
 lean_object* l_Int_bmod___boxed(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2526_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceMod(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceLT(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceUnary(lean_object*, 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_Int_reduceMul___closed__3;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912_(lean_object*);
 lean_object* l_Lean_Expr_appFn_x21(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceBNe___lambda__1___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_Int_reduceUnary___lambda__1___closed__4;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__4;
 static lean_object* l_Int_reduceUnary___lambda__1___closed__14;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1944_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1982____closed__1;
+static lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__3;
+static lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__3;
 static lean_object* l_Int_reduceUnary___lambda__1___closed__12;
-static lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__5;
-static lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__1;
-static lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__3;
+static lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__5;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1126_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__3;
 static lean_object* l_Int_reduceBoolPred___lambda__1___closed__8;
-static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__2;
-static lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__2;
-static lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__1;
-static lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__2;
+static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__10;
 lean_object* lean_int_sub(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__4;
-static lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__1;
-static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__4;
+static lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__5;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296_(lean_object*);
 static lean_object* l_Int_reduceNegSucc___closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106_(lean_object*);
+static lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__4;
 static lean_object* l_Int_reduceBEq___closed__1;
 static lean_object* l_Int_reduceUnary___lambda__1___closed__8;
+static lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__6;
+static lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__6;
 LEAN_EXPORT lean_object* l_Int_reduceSub___lambda__1___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___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1866_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceDiv___lambda__1___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___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__9;
-static lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1278_(lean_object*);
+static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__6;
 static lean_object* l_Int_reduceUnary___lambda__1___closed__9;
+static lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834_(lean_object*);
+static lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__1;
+static lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__1;
+static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__7;
+static lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__2;
 static lean_object* l_Int_reduceTMod___closed__2;
-static lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__3;
 static lean_object* l_Int_reduceNe___closed__2;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceBin(lean_object*, 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___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__6;
 static lean_object* l_Int_reduceAbs___closed__2;
 static lean_object* l_Int_reduceOfNat___closed__1;
+LEAN_EXPORT lean_object* l_Int_reduceNeg___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_nat_abs(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__5;
 LEAN_EXPORT lean_object* l_Int_reduceTDiv___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__5;
-static lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1151____closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2108_(lean_object*);
 static lean_object* l_Int_reduceGT___closed__2;
 static lean_object* l_Int_reduceBNe___closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceBinPred___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_Int_reduceLE___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceBmod(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__3;
-static lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2059____closed__1;
+static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__6;
 lean_object* lean_int_mul(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__1;
-static lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1319____closed__1;
 static lean_object* l_Int_reduceUnary___lambda__1___closed__13;
 LEAN_EXPORT lean_object* l_Int_reduceLE___lambda__1___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___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__3;
-static lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__6;
 LEAN_EXPORT lean_object* l_Int_reduceLE___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Lean_Meta_Simp_registerBuiltinSimproc(lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1075____closed__1;
-static lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__2;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1277_(lean_object*);
 static lean_object* l_Int_reduceSub___closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceAdd___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__2;
-static lean_object* l_Int_isPosValue___closed__1;
+static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__1;
+static lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__5;
 static lean_object* l_Int_reduceSub___closed__1;
 lean_object* l_Lean_mkApp3(lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__2;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1151_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2061_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__6;
 static lean_object* l_Int_reduceMod___closed__2;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1255_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceTMod___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__1;
-static lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__6;
+static lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__6;
+static lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2611____closed__1;
+static lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1344_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1364____closed__1;
 lean_object* l_Lean_Meta_Simp_registerBuiltinDSimproc(lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__3;
 lean_object* l_Lean_Name_mkStr2(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2023_(lean_object*);
 static lean_object* l_Int_reduceAbs___closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1162_(lean_object*);
 lean_object* l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__4;
 LEAN_EXPORT lean_object* l_Int_reduceMul___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__1;
-static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__8;
-static lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__3;
-static lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298____closed__1;
 static lean_object* l_Int_reduceLT___closed__1;
-static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__9;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2611_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceGE___lambda__1___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___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__2;
-static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__5;
-static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__3;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2613_(lean_object*);
 uint8_t l_Lean_Expr_isConstOf(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__4;
-static lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__4;
-static lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2110_(lean_object*);
+static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__10;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__3;
+static lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__4;
+static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__5;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1953_(lean_object*);
 static lean_object* l_Int_reduceMul___closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceEq___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-static lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__3;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1387_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__2;
 lean_object* l_Int_toNat(lean_object*);
-static lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__3;
 LEAN_EXPORT lean_object* l_Int_isPosValue(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1075_(lean_object*);
 static lean_object* l_Int_reduceNeg___lambda__1___closed__2;
+static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__3;
 static lean_object* l_Int_reduceFDiv___closed__1;
+static lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__6;
+static lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__5;
 static lean_object* l_Int_reduceSub___closed__3;
+static lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298____closed__1;
 uint8_t lean_int_dec_lt(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1866____closed__1;
+static lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1916_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceOfNat___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+static lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1276_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__3;
+static lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__3;
+static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__7;
+static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__3;
 LEAN_EXPORT lean_object* l_Int_reduceOfNat(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Int_reduceNegSucc___closed__3;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1039_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__6;
+static lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1162____closed__1;
+static lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__6;
 static lean_object* l_Int_reduceGT___closed__3;
 LEAN_EXPORT lean_object* l_Int_reduceSub(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__3;
-static lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__4;
-static lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__4;
+static lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__6;
+static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__2;
 lean_object* l_Lean_Meta_instantiateMVarsIfMVarApp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceNe___lambda__1(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___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1115_(lean_object*);
-static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__7;
+static lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceBin___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*);
 static lean_object* l_Int_reduceBinPred___lambda__1___closed__1;
 static lean_object* l_Int_reduceBoolPred___lambda__1___closed__7;
-static lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__2;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2364_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__5;
-static lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1189____closed__1;
-static lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__6;
-static lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__4;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1191_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1992____closed__1;
+static lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__3;
+static lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__6;
+static lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__6;
 lean_object* lean_array_mk(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__6;
+static lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2451____closed__1;
+static lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1238____closed__1;
+static lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__6;
+static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__7;
+static lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__1;
+static lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2266_(lean_object*);
 static lean_object* l_Int_reduceToNat___closed__2;
 static lean_object* l_Int_reduceNegSucc___lambda__1___closed__1;
-static lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__5;
+static lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1914____closed__1;
 LEAN_EXPORT lean_object* l_Int_reducePow___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*);
 static lean_object* l_Int_reduceMod___closed__1;
-static lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2021____closed__1;
-static lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__3;
 LEAN_EXPORT lean_object* l_Int_reduceNatCore___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___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1189_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__4;
 LEAN_EXPORT lean_object* l_Int_reduceBinPred(lean_object*, 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___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__11;
 LEAN_EXPORT lean_object* l_Int_reduceGT(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1202_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceBinPred___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* l_Lean_instToExprInt_mkNat(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceTDiv(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Int_reduceNegSucc___closed__1;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1213_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceBEq___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceBNe___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* lean_int_add(lean_object*, lean_object*);
 static lean_object* l_Int_reduceNeg___lambda__1___closed__3;
-static lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__6;
+static lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__4;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067_(lean_object*);
 uint8_t lean_int_dec_eq(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceNe___lambda__1___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___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951_(lean_object*);
 static lean_object* l_Int_reduceGE___closed__3;
+static lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__1;
 static lean_object* l_Int_reduceBNe___closed__1;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__5;
+static lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__5;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1200_(lean_object*);
 static lean_object* l_Int_reduceBdiv___closed__2;
 static lean_object* l_Int_reduceGE___closed__1;
-static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__6;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2181_(lean_object*);
-static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceDiv___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceFMod(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__1;
-static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__3;
+static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__5;
+static lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__4;
 LEAN_EXPORT lean_object* l_Int_reduceBinIntNatOp(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_int_ediv(lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__5;
+static lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_isPosValue___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_int_neg(lean_object*);
 extern lean_object* l_Lean_Meta_Simp_builtinSEvalprocsRef;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1408_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264_(lean_object*);
 static lean_object* l_Int_reducePow___closed__4;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__4;
-static lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__5;
-static lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__3;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2286_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1875_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceDiv(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 static lean_object* l_Int_reduceLE___closed__3;
-static lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__3;
-static lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__2;
-static lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__1;
+static lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2286____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceBdiv(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2524_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__6;
+static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__4;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2148_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2288_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceEq___lambda__1___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_Int_reduceBEq___closed__3;
-static lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__6;
-static lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__7;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__5;
+static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__1;
 static lean_object* l_Int_reduceNeg___lambda__1___closed__1;
-static lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1827____closed__1;
-static lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__3;
-static lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1001____closed__1;
+static lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__3;
 static lean_object* l_Int_reduceBoolPred___lambda__1___closed__6;
 LEAN_EXPORT lean_object* l_Int_reduceBoolPred(lean_object*, 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___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__3;
 static lean_object* l_Int_reduceUnary___lambda__1___closed__2;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1905_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__3;
+static lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1276____closed__1;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__5;
+static lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__2;
 LEAN_EXPORT lean_object* l_Int_reduceNe___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__6;
-static lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2524____closed__1;
-static lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__5;
-static lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__3;
-static lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__10;
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035_(lean_object*);
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2146_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__6;
+static lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2069____closed__1;
+static lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__3;
+static lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__2;
+static lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__2;
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609_(lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceMod___lambda__1(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_Int_reduceNegSucc___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Int_reduceOfNat___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__4;
-static lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__1;
 LEAN_EXPORT lean_object* l_Int_reduceMod___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
-static lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__6;
 LEAN_EXPORT lean_object* l_Int_reduceLT___lambda__1___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___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__4;
 lean_object* l_Int_bdiv___boxed(lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1233_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942_(lean_object*);
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1907_(lean_object*);
-static lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__6;
+static lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__4;
+LEAN_EXPORT lean_object* l_Int_reduceNeg___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___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2268_(lean_object*);
+static lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__2;
+static lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__2;
 LEAN_EXPORT lean_object* l_Int_fromExpr_x3f(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:
 {
@@ -2276,389 +2275,335 @@ return x_3;
 LEAN_EXPORT lean_object* l_Int_reduceNeg___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:
 {
-lean_object* x_11; lean_object* x_12; lean_object* x_13; uint8_t x_14; 
-x_11 = l_Lean_Expr_appArg_x21(x_1);
-x_12 = l_Int_reduceNeg___lambda__1___closed__3;
-x_13 = lean_unsigned_to_nat(3u);
-x_14 = l_Lean_Expr_isAppOfArity(x_11, x_12, x_13);
-if (x_14 == 0)
+lean_object* x_11; lean_object* x_12; uint8_t x_13; 
+x_11 = l_Int_reduceNeg___lambda__1___closed__3;
+x_12 = lean_unsigned_to_nat(3u);
+x_13 = l_Lean_Expr_isAppOfArity(x_2, x_11, x_12);
+if (x_13 == 0)
 {
-lean_object* x_15; 
+lean_object* x_14; 
 lean_dec(x_1);
-x_15 = l_Lean_Meta_getIntValue_x3f(x_11, x_6, x_7, x_8, x_9, x_10);
-if (lean_obj_tag(x_15) == 0)
+x_14 = l_Lean_Meta_getIntValue_x3f(x_2, x_6, x_7, x_8, x_9, x_10);
+if (lean_obj_tag(x_14) == 0)
 {
-lean_object* x_16; 
-x_16 = lean_ctor_get(x_15, 0);
-lean_inc(x_16);
-if (lean_obj_tag(x_16) == 0)
+lean_object* x_15; 
+x_15 = lean_ctor_get(x_14, 0);
+lean_inc(x_15);
+if (lean_obj_tag(x_15) == 0)
 {
-uint8_t x_17; 
-x_17 = !lean_is_exclusive(x_15);
-if (x_17 == 0)
+uint8_t x_16; 
+x_16 = !lean_is_exclusive(x_14);
+if (x_16 == 0)
 {
-lean_object* x_18; lean_object* x_19; 
-x_18 = lean_ctor_get(x_15, 0);
-lean_dec(x_18);
-x_19 = l_Int_reduceUnary___lambda__1___closed__1;
-lean_ctor_set(x_15, 0, x_19);
-return x_15;
+lean_object* x_17; lean_object* x_18; 
+x_17 = lean_ctor_get(x_14, 0);
+lean_dec(x_17);
+x_18 = l_Int_reduceUnary___lambda__1___closed__1;
+lean_ctor_set(x_14, 0, x_18);
+return x_14;
 }
 else
 {
-lean_object* x_20; lean_object* x_21; lean_object* x_22; 
-x_20 = lean_ctor_get(x_15, 1);
-lean_inc(x_20);
-lean_dec(x_15);
-x_21 = l_Int_reduceUnary___lambda__1___closed__1;
-x_22 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_22, 0, x_21);
-lean_ctor_set(x_22, 1, x_20);
-return x_22;
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+x_19 = lean_ctor_get(x_14, 1);
+lean_inc(x_19);
+lean_dec(x_14);
+x_20 = l_Int_reduceUnary___lambda__1___closed__1;
+x_21 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_21, 0, x_20);
+lean_ctor_set(x_21, 1, x_19);
+return x_21;
 }
 }
 else
 {
-uint8_t x_23; 
-x_23 = !lean_is_exclusive(x_15);
-if (x_23 == 0)
+uint8_t x_22; 
+x_22 = !lean_is_exclusive(x_14);
+if (x_22 == 0)
 {
-lean_object* x_24; uint8_t x_25; 
-x_24 = lean_ctor_get(x_15, 0);
-lean_dec(x_24);
-x_25 = !lean_is_exclusive(x_16);
-if (x_25 == 0)
+lean_object* x_23; uint8_t x_24; 
+x_23 = lean_ctor_get(x_14, 0);
+lean_dec(x_23);
+x_24 = !lean_is_exclusive(x_15);
+if (x_24 == 0)
 {
-lean_object* x_26; lean_object* x_27; uint8_t x_28; 
-x_26 = lean_ctor_get(x_16, 0);
+lean_object* x_25; lean_object* x_26; lean_object* x_27; uint8_t x_28; 
+x_25 = lean_ctor_get(x_15, 0);
+x_26 = lean_int_neg(x_25);
+lean_dec(x_25);
 x_27 = l_Int_reduceUnary___lambda__1___closed__2;
-x_28 = lean_int_dec_lt(x_26, x_27);
+x_28 = lean_int_dec_le(x_27, x_26);
 if (x_28 == 0)
 {
-uint8_t x_29; 
-x_29 = lean_int_dec_le(x_27, x_26);
-if (x_29 == 0)
-{
-lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; 
-x_30 = lean_int_neg(x_26);
+lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
+x_29 = lean_int_neg(x_26);
 lean_dec(x_26);
-x_31 = l_Int_toNat(x_30);
-lean_dec(x_30);
-x_32 = l_Lean_instToExprInt_mkNat(x_31);
-x_33 = l_Int_reduceUnary___lambda__1___closed__8;
-x_34 = l_Int_reduceUnary___lambda__1___closed__11;
-x_35 = l_Int_reduceUnary___lambda__1___closed__14;
-x_36 = l_Lean_mkApp3(x_33, x_34, x_35, x_32);
-lean_ctor_set_tag(x_16, 0);
-lean_ctor_set(x_16, 0, x_36);
-return x_15;
+x_30 = l_Int_toNat(x_29);
+lean_dec(x_29);
+x_31 = l_Lean_instToExprInt_mkNat(x_30);
+x_32 = l_Int_reduceUnary___lambda__1___closed__8;
+x_33 = l_Int_reduceUnary___lambda__1___closed__11;
+x_34 = l_Int_reduceUnary___lambda__1___closed__14;
+x_35 = l_Lean_mkApp3(x_32, x_33, x_34, x_31);
+lean_ctor_set_tag(x_15, 0);
+lean_ctor_set(x_15, 0, x_35);
+return x_14;
 }
 else
 {
-lean_object* x_37; lean_object* x_38; 
-x_37 = l_Int_toNat(x_26);
+lean_object* x_36; lean_object* x_37; 
+x_36 = l_Int_toNat(x_26);
 lean_dec(x_26);
-x_38 = l_Lean_instToExprInt_mkNat(x_37);
-lean_ctor_set_tag(x_16, 0);
-lean_ctor_set(x_16, 0, x_38);
-return x_15;
+x_37 = l_Lean_instToExprInt_mkNat(x_36);
+lean_ctor_set_tag(x_15, 0);
+lean_ctor_set(x_15, 0, x_37);
+return x_14;
 }
 }
 else
 {
-lean_object* x_39; uint8_t x_40; 
-x_39 = lean_int_neg(x_26);
-lean_dec(x_26);
-x_40 = lean_int_dec_le(x_27, x_39);
-if (x_40 == 0)
+lean_object* x_38; lean_object* x_39; lean_object* x_40; uint8_t x_41; 
+x_38 = lean_ctor_get(x_15, 0);
+lean_inc(x_38);
+lean_dec(x_15);
+x_39 = lean_int_neg(x_38);
+lean_dec(x_38);
+x_40 = l_Int_reduceUnary___lambda__1___closed__2;
+x_41 = lean_int_dec_le(x_40, x_39);
+if (x_41 == 0)
 {
-lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; 
-x_41 = lean_int_neg(x_39);
+lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; 
+x_42 = lean_int_neg(x_39);
 lean_dec(x_39);
-x_42 = l_Int_toNat(x_41);
-lean_dec(x_41);
-x_43 = l_Lean_instToExprInt_mkNat(x_42);
-x_44 = l_Int_reduceUnary___lambda__1___closed__8;
-x_45 = l_Int_reduceUnary___lambda__1___closed__11;
-x_46 = l_Int_reduceUnary___lambda__1___closed__14;
-x_47 = l_Lean_mkApp3(x_44, x_45, x_46, x_43);
-lean_ctor_set_tag(x_16, 0);
-lean_ctor_set(x_16, 0, x_47);
-return x_15;
+x_43 = l_Int_toNat(x_42);
+lean_dec(x_42);
+x_44 = l_Lean_instToExprInt_mkNat(x_43);
+x_45 = l_Int_reduceUnary___lambda__1___closed__8;
+x_46 = l_Int_reduceUnary___lambda__1___closed__11;
+x_47 = l_Int_reduceUnary___lambda__1___closed__14;
+x_48 = l_Lean_mkApp3(x_45, x_46, x_47, x_44);
+x_49 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_49, 0, x_48);
+lean_ctor_set(x_14, 0, x_49);
+return x_14;
 }
 else
 {
-lean_object* x_48; lean_object* x_49; 
-x_48 = l_Int_toNat(x_39);
+lean_object* x_50; lean_object* x_51; lean_object* x_52; 
+x_50 = l_Int_toNat(x_39);
 lean_dec(x_39);
-x_49 = l_Lean_instToExprInt_mkNat(x_48);
-lean_ctor_set_tag(x_16, 0);
-lean_ctor_set(x_16, 0, x_49);
-return x_15;
+x_51 = l_Lean_instToExprInt_mkNat(x_50);
+x_52 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_52, 0, x_51);
+lean_ctor_set(x_14, 0, x_52);
+return x_14;
 }
 }
 }
 else
 {
-lean_object* x_50; lean_object* x_51; uint8_t x_52; 
-x_50 = lean_ctor_get(x_16, 0);
-lean_inc(x_50);
-lean_dec(x_16);
-x_51 = l_Int_reduceUnary___lambda__1___closed__2;
-x_52 = lean_int_dec_lt(x_50, x_51);
-if (x_52 == 0)
-{
-uint8_t x_53; 
-x_53 = lean_int_dec_le(x_51, x_50);
-if (x_53 == 0)
-{
-lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; 
-x_54 = lean_int_neg(x_50);
-lean_dec(x_50);
-x_55 = l_Int_toNat(x_54);
-lean_dec(x_54);
-x_56 = l_Lean_instToExprInt_mkNat(x_55);
-x_57 = l_Int_reduceUnary___lambda__1___closed__8;
-x_58 = l_Int_reduceUnary___lambda__1___closed__11;
-x_59 = l_Int_reduceUnary___lambda__1___closed__14;
-x_60 = l_Lean_mkApp3(x_57, x_58, x_59, x_56);
-x_61 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_61, 0, x_60);
-lean_ctor_set(x_15, 0, x_61);
-return x_15;
+lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; uint8_t x_58; 
+x_53 = lean_ctor_get(x_14, 1);
+lean_inc(x_53);
+lean_dec(x_14);
+x_54 = lean_ctor_get(x_15, 0);
+lean_inc(x_54);
+if (lean_is_exclusive(x_15)) {
+ lean_ctor_release(x_15, 0);
+ x_55 = x_15;
+} else {
+ lean_dec_ref(x_15);
+ x_55 = lean_box(0);
 }
-else
-{
-lean_object* x_62; lean_object* x_63; lean_object* x_64; 
-x_62 = l_Int_toNat(x_50);
-lean_dec(x_50);
-x_63 = l_Lean_instToExprInt_mkNat(x_62);
-x_64 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_64, 0, x_63);
-lean_ctor_set(x_15, 0, x_64);
-return x_15;
+x_56 = lean_int_neg(x_54);
+lean_dec(x_54);
+x_57 = l_Int_reduceUnary___lambda__1___closed__2;
+x_58 = lean_int_dec_le(x_57, x_56);
+if (x_58 == 0)
+{
+lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; 
+x_59 = lean_int_neg(x_56);
+lean_dec(x_56);
+x_60 = l_Int_toNat(x_59);
+lean_dec(x_59);
+x_61 = l_Lean_instToExprInt_mkNat(x_60);
+x_62 = l_Int_reduceUnary___lambda__1___closed__8;
+x_63 = l_Int_reduceUnary___lambda__1___closed__11;
+x_64 = l_Int_reduceUnary___lambda__1___closed__14;
+x_65 = l_Lean_mkApp3(x_62, x_63, x_64, x_61);
+if (lean_is_scalar(x_55)) {
+ x_66 = lean_alloc_ctor(0, 1, 0);
+} else {
+ x_66 = x_55;
+ lean_ctor_set_tag(x_66, 0);
 }
+lean_ctor_set(x_66, 0, x_65);
+x_67 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_67, 0, x_66);
+lean_ctor_set(x_67, 1, x_53);
+return x_67;
 }
 else
 {
-lean_object* x_65; uint8_t x_66; 
-x_65 = lean_int_neg(x_50);
-lean_dec(x_50);
-x_66 = lean_int_dec_le(x_51, x_65);
-if (x_66 == 0)
-{
-lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; lean_object* x_72; lean_object* x_73; lean_object* x_74; 
-x_67 = lean_int_neg(x_65);
-lean_dec(x_65);
-x_68 = l_Int_toNat(x_67);
-lean_dec(x_67);
+lean_object* x_68; lean_object* x_69; lean_object* x_70; lean_object* x_71; 
+x_68 = l_Int_toNat(x_56);
+lean_dec(x_56);
 x_69 = l_Lean_instToExprInt_mkNat(x_68);
-x_70 = l_Int_reduceUnary___lambda__1___closed__8;
-x_71 = l_Int_reduceUnary___lambda__1___closed__11;
-x_72 = l_Int_reduceUnary___lambda__1___closed__14;
-x_73 = l_Lean_mkApp3(x_70, x_71, x_72, x_69);
-x_74 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_74, 0, x_73);
-lean_ctor_set(x_15, 0, x_74);
-return x_15;
+if (lean_is_scalar(x_55)) {
+ x_70 = lean_alloc_ctor(0, 1, 0);
+} else {
+ x_70 = x_55;
+ lean_ctor_set_tag(x_70, 0);
 }
-else
-{
-lean_object* x_75; lean_object* x_76; lean_object* x_77; 
-x_75 = l_Int_toNat(x_65);
-lean_dec(x_65);
-x_76 = l_Lean_instToExprInt_mkNat(x_75);
-x_77 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_77, 0, x_76);
-lean_ctor_set(x_15, 0, x_77);
-return x_15;
+lean_ctor_set(x_70, 0, x_69);
+x_71 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_71, 0, x_70);
+lean_ctor_set(x_71, 1, x_53);
+return x_71;
 }
 }
 }
 }
 else
 {
-lean_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; uint8_t x_82; 
-x_78 = lean_ctor_get(x_15, 1);
-lean_inc(x_78);
-lean_dec(x_15);
-x_79 = lean_ctor_get(x_16, 0);
-lean_inc(x_79);
-if (lean_is_exclusive(x_16)) {
- lean_ctor_release(x_16, 0);
- x_80 = x_16;
-} else {
- lean_dec_ref(x_16);
- x_80 = lean_box(0);
-}
-x_81 = l_Int_reduceUnary___lambda__1___closed__2;
-x_82 = lean_int_dec_lt(x_79, x_81);
-if (x_82 == 0)
-{
-uint8_t x_83; 
-x_83 = lean_int_dec_le(x_81, x_79);
-if (x_83 == 0)
+uint8_t x_72; 
+x_72 = !lean_is_exclusive(x_14);
+if (x_72 == 0)
 {
-lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; 
-x_84 = lean_int_neg(x_79);
-lean_dec(x_79);
-x_85 = l_Int_toNat(x_84);
-lean_dec(x_84);
-x_86 = l_Lean_instToExprInt_mkNat(x_85);
-x_87 = l_Int_reduceUnary___lambda__1___closed__8;
-x_88 = l_Int_reduceUnary___lambda__1___closed__11;
-x_89 = l_Int_reduceUnary___lambda__1___closed__14;
-x_90 = l_Lean_mkApp3(x_87, x_88, x_89, x_86);
-if (lean_is_scalar(x_80)) {
- x_91 = lean_alloc_ctor(0, 1, 0);
-} else {
- x_91 = x_80;
- lean_ctor_set_tag(x_91, 0);
-}
-lean_ctor_set(x_91, 0, x_90);
-x_92 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_92, 0, x_91);
-lean_ctor_set(x_92, 1, x_78);
-return x_92;
+return x_14;
 }
 else
 {
-lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; 
-x_93 = l_Int_toNat(x_79);
-lean_dec(x_79);
-x_94 = l_Lean_instToExprInt_mkNat(x_93);
-if (lean_is_scalar(x_80)) {
- x_95 = lean_alloc_ctor(0, 1, 0);
-} else {
- x_95 = x_80;
- lean_ctor_set_tag(x_95, 0);
-}
-lean_ctor_set(x_95, 0, x_94);
-x_96 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_96, 0, x_95);
-lean_ctor_set(x_96, 1, x_78);
-return x_96;
-}
-}
-else
-{
-lean_object* x_97; uint8_t x_98; 
-x_97 = lean_int_neg(x_79);
-lean_dec(x_79);
-x_98 = lean_int_dec_le(x_81, x_97);
-if (x_98 == 0)
-{
-lean_object* x_99; lean_object* x_100; lean_object* x_101; lean_object* x_102; lean_object* x_103; lean_object* x_104; lean_object* x_105; lean_object* x_106; lean_object* x_107; 
-x_99 = lean_int_neg(x_97);
-lean_dec(x_97);
-x_100 = l_Int_toNat(x_99);
-lean_dec(x_99);
-x_101 = l_Lean_instToExprInt_mkNat(x_100);
-x_102 = l_Int_reduceUnary___lambda__1___closed__8;
-x_103 = l_Int_reduceUnary___lambda__1___closed__11;
-x_104 = l_Int_reduceUnary___lambda__1___closed__14;
-x_105 = l_Lean_mkApp3(x_102, x_103, x_104, x_101);
-if (lean_is_scalar(x_80)) {
- x_106 = lean_alloc_ctor(0, 1, 0);
-} else {
- x_106 = x_80;
- lean_ctor_set_tag(x_106, 0);
+lean_object* x_73; lean_object* x_74; lean_object* x_75; 
+x_73 = lean_ctor_get(x_14, 0);
+x_74 = lean_ctor_get(x_14, 1);
+lean_inc(x_74);
+lean_inc(x_73);
+lean_dec(x_14);
+x_75 = lean_alloc_ctor(1, 2, 0);
+lean_ctor_set(x_75, 0, x_73);
+lean_ctor_set(x_75, 1, x_74);
+return x_75;
+}
 }
-lean_ctor_set(x_106, 0, x_105);
-x_107 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_107, 0, x_106);
-lean_ctor_set(x_107, 1, x_78);
-return x_107;
 }
 else
 {
-lean_object* x_108; lean_object* x_109; lean_object* x_110; lean_object* x_111; 
-x_108 = l_Int_toNat(x_97);
-lean_dec(x_97);
-x_109 = l_Lean_instToExprInt_mkNat(x_108);
-if (lean_is_scalar(x_80)) {
- x_110 = lean_alloc_ctor(0, 1, 0);
-} else {
- x_110 = x_80;
- lean_ctor_set_tag(x_110, 0);
+lean_object* x_76; lean_object* x_77; 
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_2);
+x_76 = lean_alloc_ctor(0, 1, 0);
+lean_ctor_set(x_76, 0, x_1);
+x_77 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_77, 0, x_76);
+lean_ctor_set(x_77, 1, x_10);
+return x_77;
 }
-lean_ctor_set(x_110, 0, x_109);
-x_111 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_111, 0, x_110);
-lean_ctor_set(x_111, 1, x_78);
-return x_111;
 }
 }
+LEAN_EXPORT lean_object* l_Int_reduceNeg___lambda__2(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; lean_object* x_11; 
+x_10 = l_Int_reduceUnary___lambda__1___closed__1;
+x_11 = lean_alloc_ctor(0, 2, 0);
+lean_ctor_set(x_11, 0, x_10);
+lean_ctor_set(x_11, 1, x_9);
+return x_11;
 }
 }
+static lean_object* _init_l_Int_reduceNeg___closed__1() {
+_start:
+{
+lean_object* x_1; 
+x_1 = lean_alloc_closure((void*)(l_Int_reduceNeg___lambda__2___boxed), 9, 0);
+return x_1;
 }
-else
+}
+LEAN_EXPORT lean_object* l_Int_reduceNeg(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:
 {
-uint8_t x_112; 
-x_112 = !lean_is_exclusive(x_15);
-if (x_112 == 0)
+lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; uint8_t x_15; 
+lean_inc(x_1);
+x_10 = l_Lean_Meta_instantiateMVarsIfMVarApp(x_1, x_5, x_6, x_7, x_8, x_9);
+x_11 = lean_ctor_get(x_10, 0);
+lean_inc(x_11);
+x_12 = lean_ctor_get(x_10, 1);
+lean_inc(x_12);
+lean_dec(x_10);
+x_13 = l_Int_reduceNeg___closed__1;
+x_14 = l_Lean_Expr_cleanupAnnotations(x_11);
+x_15 = l_Lean_Expr_isApp(x_14);
+if (x_15 == 0)
 {
-return x_15;
+lean_object* x_16; lean_object* x_17; 
+lean_dec(x_14);
+lean_dec(x_1);
+x_16 = lean_box(0);
+x_17 = lean_apply_9(x_13, x_16, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_12);
+return x_17;
 }
 else
 {
-lean_object* x_113; lean_object* x_114; lean_object* x_115; 
-x_113 = lean_ctor_get(x_15, 0);
-x_114 = lean_ctor_get(x_15, 1);
-lean_inc(x_114);
-lean_inc(x_113);
-lean_dec(x_15);
-x_115 = lean_alloc_ctor(1, 2, 0);
-lean_ctor_set(x_115, 0, x_113);
-lean_ctor_set(x_115, 1, x_114);
-return x_115;
-}
-}
+lean_object* x_18; lean_object* x_19; uint8_t x_20; 
+x_18 = l_Lean_Expr_appArg(x_14, lean_box(0));
+x_19 = l_Lean_Expr_appFnCleanup(x_14, lean_box(0));
+x_20 = l_Lean_Expr_isApp(x_19);
+if (x_20 == 0)
+{
+lean_object* x_21; lean_object* x_22; 
+lean_dec(x_19);
+lean_dec(x_18);
+lean_dec(x_1);
+x_21 = lean_box(0);
+x_22 = lean_apply_9(x_13, x_21, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_12);
+return x_22;
 }
 else
 {
-lean_object* x_116; lean_object* x_117; 
-lean_dec(x_11);
-lean_dec(x_9);
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-x_116 = lean_alloc_ctor(0, 1, 0);
-lean_ctor_set(x_116, 0, x_1);
-x_117 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_117, 0, x_116);
-lean_ctor_set(x_117, 1, x_10);
-return x_117;
-}
-}
+lean_object* x_23; uint8_t x_24; 
+x_23 = l_Lean_Expr_appFnCleanup(x_19, lean_box(0));
+x_24 = l_Lean_Expr_isApp(x_23);
+if (x_24 == 0)
+{
+lean_object* x_25; lean_object* x_26; 
+lean_dec(x_23);
+lean_dec(x_18);
+lean_dec(x_1);
+x_25 = lean_box(0);
+x_26 = lean_apply_9(x_13, x_25, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_12);
+return x_26;
 }
-LEAN_EXPORT lean_object* l_Int_reduceNeg(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:
+else
 {
-lean_object* x_10; lean_object* x_11; uint8_t x_12; 
-x_10 = l_Int_reduceUnary___lambda__1___closed__5;
-x_11 = lean_unsigned_to_nat(3u);
-x_12 = l_Lean_Expr_isAppOfArity(x_1, x_10, x_11);
-if (x_12 == 0)
+lean_object* x_27; lean_object* x_28; uint8_t x_29; 
+x_27 = l_Lean_Expr_appFnCleanup(x_23, lean_box(0));
+x_28 = l_Int_reduceUnary___lambda__1___closed__5;
+x_29 = l_Lean_Expr_isConstOf(x_27, x_28);
+lean_dec(x_27);
+if (x_29 == 0)
 {
-lean_object* x_13; lean_object* x_14; 
-lean_dec(x_8);
-lean_dec(x_7);
-lean_dec(x_6);
-lean_dec(x_5);
+lean_object* x_30; lean_object* x_31; 
+lean_dec(x_18);
 lean_dec(x_1);
-x_13 = l_Int_reduceUnary___lambda__1___closed__1;
-x_14 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_14, 0, x_13);
-lean_ctor_set(x_14, 1, x_9);
-return x_14;
+x_30 = lean_box(0);
+x_31 = lean_apply_9(x_13, x_30, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_12);
+return x_31;
 }
 else
 {
-lean_object* x_15; lean_object* x_16; 
-x_15 = lean_box(0);
-x_16 = l_Int_reduceNeg___lambda__1(x_1, x_15, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
-return x_16;
+lean_object* x_32; 
+x_32 = l_Int_reduceNeg___lambda__1(x_1, x_18, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_12);
+lean_dec(x_4);
+lean_dec(x_3);
+lean_dec(x_2);
+return x_32;
+}
+}
+}
 }
 }
 }
@@ -2670,22 +2615,26 @@ x_11 = l_Int_reduceNeg___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9,
 lean_dec(x_5);
 lean_dec(x_4);
 lean_dec(x_3);
-lean_dec(x_2);
 return x_11;
 }
 }
-LEAN_EXPORT lean_object* l_Int_reduceNeg___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) {
+LEAN_EXPORT lean_object* l_Int_reduceNeg___lambda__2___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_Int_reduceNeg(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+x_10 = l_Int_reduceNeg___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
+lean_dec(x_8);
+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_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -2693,17 +2642,17 @@ x_1 = lean_mk_string_unchecked("reduceNeg", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__1;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -2715,7 +2664,7 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -2727,7 +2676,7 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -2739,81 +2688,81 @@ lean_ctor_set(x_3, 1, x_1);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__5;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__7() {
+static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__4;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__6;
+x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__4;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__8() {
+static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__8() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__3;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__7;
+x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__3;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__7;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__9() {
+static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__9() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__8;
+x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__8;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__10() {
+static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__10() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Int_reduceNeg___boxed), 9, 0);
+x_1 = lean_alloc_closure((void*)(l_Int_reduceNeg), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__2;
-x_3 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__9;
-x_4 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__10;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__2;
+x_3 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__9;
+x_4 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__10;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__10;
+x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__10;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2() {
 _start:
 {
 lean_object* x_1; 
@@ -2821,19 +2770,19 @@ x_1 = l_Lean_Meta_Simp_builtinSimprocsRef;
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__1;
+x_5 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -2841,14 +2790,14 @@ x_1 = l_Lean_Meta_Simp_builtinSEvalprocsRef;
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__1;
+x_5 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -2865,25 +2814,6 @@ lean_ctor_set(x_12, 1, x_10);
 return x_12;
 }
 }
-LEAN_EXPORT lean_object* l_Int_isPosValue___lambda__2(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; lean_object* x_11; 
-x_10 = l_Int_reduceUnary___lambda__1___closed__1;
-x_11 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_11, 0, x_10);
-lean_ctor_set(x_11, 1, x_9);
-return x_11;
-}
-}
-static lean_object* _init_l_Int_isPosValue___closed__1() {
-_start:
-{
-lean_object* x_1; 
-x_1 = lean_alloc_closure((void*)(l_Int_isPosValue___lambda__2___boxed), 9, 0);
-return x_1;
-}
-}
 LEAN_EXPORT lean_object* l_Int_isPosValue(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:
 {
@@ -2895,7 +2825,7 @@ lean_inc(x_11);
 x_12 = lean_ctor_get(x_10, 1);
 lean_inc(x_12);
 lean_dec(x_10);
-x_13 = l_Int_isPosValue___closed__1;
+x_13 = l_Int_reduceNeg___closed__1;
 x_14 = l_Lean_Expr_cleanupAnnotations(x_11);
 x_15 = l_Lean_Expr_isApp(x_14);
 if (x_15 == 0)
@@ -2985,23 +2915,7 @@ lean_dec(x_2);
 return x_11;
 }
 }
-LEAN_EXPORT lean_object* l_Int_isPosValue___lambda__2___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_Int_isPosValue___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9);
-lean_dec(x_8);
-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_10;
-}
-}
-static lean_object* _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -3009,17 +2923,17 @@ x_1 = lean_mk_string_unchecked("isPosValue", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__1;
+x_2 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -3031,28 +2945,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__3;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__7;
+x_1 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__3;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__7;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__4;
+x_1 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -3060,35 +2974,35 @@ x_1 = lean_alloc_closure((void*)(l_Int_isPosValue), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__2;
-x_3 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__5;
-x_4 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__6;
+x_2 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__2;
+x_3 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__5;
+x_4 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1001____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1088____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__6;
+x_1 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1001_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1088_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1001____closed__1;
+x_5 = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1088____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -3468,7 +3382,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -3476,17 +3390,17 @@ x_1 = lean_mk_string_unchecked("reduceAdd", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__1;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -3498,76 +3412,76 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(3);
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__6;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__4;
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__4;
+x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__4;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__4;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__4;
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__5;
+x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__4;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__7() {
+static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__4;
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__6;
+x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__4;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__8() {
+static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__8() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__3;
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__7;
+x_1 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__3;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__7;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__9() {
+static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__9() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__8;
+x_1 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__8;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__10() {
+static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__10() {
 _start:
 {
 lean_object* x_1; 
@@ -3575,47 +3489,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceAdd___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__2;
-x_3 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__9;
-x_4 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__10;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__2;
+x_3 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__9;
+x_4 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__10;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1037____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1124____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__10;
+x_1 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__10;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1037_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1124_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1037____closed__1;
+x_5 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1124____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1039_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1126_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1037____closed__1;
+x_5 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1124____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -3995,7 +3909,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -4003,17 +3917,17 @@ x_1 = lean_mk_string_unchecked("reduceMul", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__1;
+x_2 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -4025,28 +3939,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__3;
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__7;
+x_1 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__3;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__7;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__4;
+x_1 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -4054,47 +3968,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceMul___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__2;
-x_3 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__5;
-x_4 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__6;
+x_2 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__2;
+x_3 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__5;
+x_4 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1075____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1162____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__6;
+x_1 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1075_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1162_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1075____closed__1;
+x_5 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1162____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1077_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1164_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1075____closed__1;
+x_5 = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1162____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -4474,7 +4388,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -4482,17 +4396,17 @@ x_1 = lean_mk_string_unchecked("reduceSub", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__1;
+x_2 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -4504,28 +4418,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__3;
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__7;
+x_1 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__3;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__7;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__4;
+x_1 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -4533,47 +4447,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceSub___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__2;
-x_3 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__5;
-x_4 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__6;
+x_2 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__2;
+x_3 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__5;
+x_4 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1113____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1200____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__6;
+x_1 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1113_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1200_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1113____closed__1;
+x_5 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1200____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1115_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1202_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1113____closed__1;
+x_5 = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1200____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -4953,7 +4867,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -4961,17 +4875,17 @@ x_1 = lean_mk_string_unchecked("reduceDiv", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__1;
+x_2 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -4983,28 +4897,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__3;
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__7;
+x_1 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__3;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__7;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__4;
+x_1 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -5012,47 +4926,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceDiv___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__2;
-x_3 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__5;
-x_4 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__6;
+x_2 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__2;
+x_3 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__5;
+x_4 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1151____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1238____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__6;
+x_1 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1151_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1238_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1151____closed__1;
+x_5 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1238____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1153_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1240_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1151____closed__1;
+x_5 = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1238____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -5432,7 +5346,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -5440,17 +5354,17 @@ x_1 = lean_mk_string_unchecked("reduceMod", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__1;
+x_2 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -5462,28 +5376,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__3;
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__7;
+x_1 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__3;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__7;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__4;
+x_1 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -5491,47 +5405,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceMod___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__2;
-x_3 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__5;
-x_4 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__6;
+x_2 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__2;
+x_3 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__5;
+x_4 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1189____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1276____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__6;
+x_1 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1189_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1276_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1189____closed__1;
+x_5 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1276____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1191_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1278_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1189____closed__1;
+x_5 = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1276____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -5903,7 +5817,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -5911,17 +5825,17 @@ x_1 = lean_mk_string_unchecked("reduceTDiv", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__1;
+x_2 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -5933,28 +5847,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__3;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__6;
+x_1 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__3;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__4;
+x_1 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -5962,47 +5876,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceTDiv___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__2;
-x_3 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__5;
-x_4 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__6;
+x_2 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2;
+x_3 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__5;
+x_4 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1211____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__6;
+x_1 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1211_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1211____closed__1;
+x_5 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1213_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1300_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1211____closed__1;
+x_5 = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -6374,7 +6288,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -6382,17 +6296,17 @@ x_1 = lean_mk_string_unchecked("reduceTMod", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__1;
+x_2 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -6404,28 +6318,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__3;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__6;
+x_1 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__3;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__4;
+x_1 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -6433,47 +6347,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceTMod___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__2;
-x_3 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__5;
-x_4 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__6;
+x_2 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__2;
+x_3 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__5;
+x_4 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1233____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1320____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__6;
+x_1 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1233_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1320_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1233____closed__1;
+x_5 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1320____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1235_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1322_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1233____closed__1;
+x_5 = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1320____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -6845,7 +6759,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -6853,17 +6767,17 @@ x_1 = lean_mk_string_unchecked("reduceFDiv", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__1;
+x_2 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -6875,28 +6789,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__3;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__6;
+x_1 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__3;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__4;
+x_1 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -6904,47 +6818,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceFDiv___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__2;
-x_3 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__5;
-x_4 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__6;
+x_2 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__2;
+x_3 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__5;
+x_4 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1255____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1342____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__6;
+x_1 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1255_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1342_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1255____closed__1;
+x_5 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1342____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1257_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1344_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1255____closed__1;
+x_5 = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1342____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -7316,7 +7230,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -7324,17 +7238,17 @@ x_1 = lean_mk_string_unchecked("reduceFMod", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__1;
+x_2 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -7346,28 +7260,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__3;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__6;
+x_1 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__3;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__4;
+x_1 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -7375,47 +7289,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceFMod___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__2;
-x_3 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__5;
-x_4 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__6;
+x_2 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__2;
+x_3 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__5;
+x_4 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1277____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1364____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__6;
+x_1 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1277_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1364_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1277____closed__1;
+x_5 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1364____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1279_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1366_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1277____closed__1;
+x_5 = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1364____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -7468,7 +7382,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -7476,17 +7390,17 @@ x_1 = lean_mk_string_unchecked("reduceBdiv", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__1;
+x_2 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -7498,28 +7412,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__3;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__6;
+x_1 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__3;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__4;
+x_1 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -7527,47 +7441,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceBdiv___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2;
-x_3 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__5;
-x_4 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__6;
+x_2 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__2;
+x_3 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__5;
+x_4 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1385____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__6;
+x_1 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1385_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298____closed__1;
+x_5 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1385____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1300_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1387_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298____closed__1;
+x_5 = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1385____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -7620,7 +7534,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -7628,17 +7542,17 @@ x_1 = lean_mk_string_unchecked("reduceBmod", 10, 10);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__1;
+x_2 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -7650,28 +7564,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__3;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__6;
+x_1 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__3;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__6;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__4;
+x_1 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -7679,47 +7593,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceBmod___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__2;
-x_3 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__5;
-x_4 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__6;
+x_2 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__2;
+x_3 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__5;
+x_4 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1319____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1406____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__6;
+x_1 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1319_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1406_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1319____closed__1;
+x_5 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1406____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1321_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1408_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1319____closed__1;
+x_5 = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1406____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -8060,7 +7974,7 @@ x_12 = lean_ctor_get(x_10, 1);
 lean_inc(x_12);
 lean_dec(x_10);
 x_13 = l_Int_reducePow___closed__1;
-x_14 = l_Int_isPosValue___closed__1;
+x_14 = l_Int_reduceNeg___closed__1;
 x_15 = l_Lean_Expr_cleanupAnnotations(x_11);
 x_16 = l_Lean_Expr_isApp(x_15);
 if (x_16 == 0)
@@ -8207,7 +8121,7 @@ lean_dec(x_2);
 return x_11;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8215,17 +8129,17 @@ x_1 = lean_mk_string_unchecked("reducePow", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__1;
+x_2 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -8237,7 +8151,7 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__4() {
 _start:
 {
 lean_object* x_1; 
@@ -8245,21 +8159,21 @@ x_1 = lean_mk_string_unchecked("Nat", 3, 3);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__4;
+x_2 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__4;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__5;
+x_1 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__5;
 x_2 = lean_unsigned_to_nat(0u);
 x_3 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
@@ -8267,52 +8181,52 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__7() {
+static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__6;
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__5;
+x_1 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__6;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__8() {
+static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__8() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__4;
-x_2 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__7;
+x_1 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__4;
+x_2 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__7;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__9() {
+static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__9() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__3;
-x_2 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__8;
+x_1 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__3;
+x_2 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__8;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__10() {
+static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__10() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__9;
+x_1 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__9;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__11() {
+static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__11() {
 _start:
 {
 lean_object* x_1; 
@@ -8320,47 +8234,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reducePow), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__2;
-x_3 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__10;
-x_4 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__11;
+x_2 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__2;
+x_3 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__10;
+x_4 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__11;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1749____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1836____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__11;
+x_1 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__11;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1749_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1836_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1749____closed__1;
+x_5 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1836____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1751_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1838_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1749____closed__1;
+x_5 = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1836____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -8619,7 +8533,7 @@ lean_dec(x_2);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8627,17 +8541,17 @@ x_1 = lean_mk_string_unchecked("reduceLT", 8, 8);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__1;
+x_2 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -8649,28 +8563,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__3;
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__5;
+x_1 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__3;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__4;
+x_1 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -8678,47 +8592,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceLT___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__2;
-x_3 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__5;
-x_4 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__6;
+x_2 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__2;
+x_3 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__5;
+x_4 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1788____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1875____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__6;
+x_1 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__6;
 x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1788_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1875_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1788____closed__1;
+x_5 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1875____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1790_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1877_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1788____closed__1;
+x_5 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1875____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -8977,7 +8891,7 @@ lean_dec(x_2);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -8985,17 +8899,17 @@ x_1 = lean_mk_string_unchecked("reduceLE", 8, 8);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__1;
+x_2 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -9007,28 +8921,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__3;
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__5;
+x_1 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__3;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__4;
+x_1 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -9036,47 +8950,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceLE___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__2;
-x_3 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__5;
-x_4 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__6;
+x_2 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__2;
+x_3 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__5;
+x_4 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1827____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1914____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__6;
+x_1 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__6;
 x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1827_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1914_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1827____closed__1;
+x_5 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1914____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1829_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1916_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1827____closed__1;
+x_5 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1914____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -9335,7 +9249,7 @@ lean_dec(x_2);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -9343,17 +9257,17 @@ x_1 = lean_mk_string_unchecked("reduceGT", 8, 8);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__1;
+x_2 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__3() {
 _start:
 {
 lean_object* x_1; 
@@ -9361,47 +9275,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceGT___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__2;
-x_3 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__5;
-x_4 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__3;
+x_2 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__2;
+x_3 = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__5;
+x_4 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__3;
 x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1866____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1953____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__3;
+x_1 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__3;
 x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1866_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1953_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1866____closed__1;
+x_5 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1953____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1868_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1955_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1866____closed__1;
+x_5 = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1953____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -9660,7 +9574,7 @@ lean_dec(x_2);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -9668,17 +9582,17 @@ x_1 = lean_mk_string_unchecked("reduceGE", 8, 8);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__1;
+x_2 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__3() {
 _start:
 {
 lean_object* x_1; 
@@ -9686,47 +9600,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceGE___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__2;
-x_3 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__5;
-x_4 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__3;
+x_2 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__2;
+x_3 = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__5;
+x_4 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__3;
 x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1905____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1992____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__3;
+x_1 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__3;
 x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1905_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1992_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1905____closed__1;
+x_5 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1992____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1907_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1994_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1905____closed__1;
+x_5 = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1992____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -9977,7 +9891,7 @@ lean_dec(x_2);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -9985,17 +9899,17 @@ x_1 = lean_mk_string_unchecked("reduceEq", 8, 8);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__1;
+x_2 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -10007,28 +9921,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__3;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__7;
+x_1 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__3;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__7;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__4;
+x_1 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -10036,47 +9950,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceEq___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__2;
-x_3 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__5;
-x_4 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__6;
+x_2 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__2;
+x_3 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__5;
+x_4 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1944____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2031____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__6;
+x_1 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__6;
 x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1944_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2031_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1944____closed__1;
+x_5 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2031____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1946_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2033_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1944____closed__1;
+x_5 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2031____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -10328,7 +10242,7 @@ lean_dec(x_2);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -10336,17 +10250,17 @@ x_1 = lean_mk_string_unchecked("reduceNe", 8, 8);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__1;
+x_2 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__3() {
 _start:
 {
 lean_object* x_1; 
@@ -10354,21 +10268,21 @@ x_1 = lean_mk_string_unchecked("Not", 3, 3);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = lean_box(0);
-x_2 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__3;
+x_2 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__3;
 x_3 = l_Lean_Name_str___override(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__4;
+x_1 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__4;
 x_2 = lean_unsigned_to_nat(1u);
 x_3 = lean_alloc_ctor(0, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
@@ -10376,28 +10290,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__6() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__5;
-x_2 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__4;
+x_1 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__5;
+x_2 = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__4;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__7() {
+static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__7() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__6;
+x_1 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__6;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__8() {
+static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__8() {
 _start:
 {
 lean_object* x_1; 
@@ -10405,47 +10319,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceNe___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__2;
-x_3 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__7;
-x_4 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__8;
+x_2 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__2;
+x_3 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__7;
+x_4 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__8;
 x_5 = l_Lean_Meta_Simp_registerBuiltinSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1982____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2069____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__8;
+x_1 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__8;
 x_2 = lean_alloc_ctor(0, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1982_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2069_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1982____closed__1;
+x_5 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2069____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1984_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2071_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1982____closed__1;
+x_5 = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2069____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -10736,7 +10650,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -10744,17 +10658,17 @@ x_1 = lean_mk_string_unchecked("reduceBEq", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__1;
+x_2 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -10766,28 +10680,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__3;
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__5;
+x_1 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__3;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__4;
+x_1 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -10795,47 +10709,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceBEq___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__2;
-x_3 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__5;
-x_4 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__6;
+x_2 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__2;
+x_3 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__5;
+x_4 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2021____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2108____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__6;
+x_1 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2021_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2108_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2021____closed__1;
+x_5 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2108____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2023_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2110_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2021____closed__1;
+x_5 = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2108____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -11118,7 +11032,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -11126,17 +11040,17 @@ x_1 = lean_mk_string_unchecked("reduceBNe", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__1;
+x_2 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -11148,28 +11062,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__3;
-x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__5;
+x_1 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__3;
+x_2 = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__4;
+x_1 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -11177,47 +11091,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceBNe___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__2;
-x_3 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__5;
-x_4 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__6;
+x_2 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__2;
+x_3 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__5;
+x_4 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2059____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2146____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__6;
+x_1 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2059_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2146_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2059____closed__1;
+x_5 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2146____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2061_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2148_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2059____closed__1;
+x_5 = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2146____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -11606,7 +11520,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -11614,17 +11528,17 @@ x_1 = lean_mk_string_unchecked("reduceAbs", 9, 9);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__1;
+x_2 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -11636,28 +11550,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__3;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__5;
+x_1 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__3;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__4;
+x_1 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -11665,47 +11579,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceAbs___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__2;
-x_3 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__5;
-x_4 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__6;
+x_2 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__2;
+x_3 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__5;
+x_4 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2179____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2266____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__6;
+x_1 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2179_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2266_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2179____closed__1;
+x_5 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2266____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2181_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2268_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2179____closed__1;
+x_5 = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2266____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -11911,7 +11825,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -11919,17 +11833,17 @@ x_1 = lean_mk_string_unchecked("reduceToNat", 11, 11);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__1;
+x_2 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -11941,28 +11855,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__3;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__5;
+x_1 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__3;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__4;
+x_1 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -11970,47 +11884,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceToNat___boxed), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__2;
-x_3 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__5;
-x_4 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__6;
+x_2 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__2;
+x_3 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__5;
+x_4 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2199____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2286____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__6;
+x_1 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2199_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2286_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2199____closed__1;
+x_5 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2286____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2201_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2288_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2199____closed__1;
+x_5 = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2286____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -12282,7 +12196,7 @@ x_12 = lean_ctor_get(x_10, 1);
 lean_inc(x_12);
 lean_dec(x_10);
 x_13 = l_Int_reduceNegSucc___closed__1;
-x_14 = l_Int_isPosValue___closed__1;
+x_14 = l_Int_reduceNeg___closed__1;
 x_15 = l_Lean_Expr_cleanupAnnotations(x_11);
 x_16 = l_Lean_Expr_isApp(x_15);
 if (x_16 == 0)
@@ -12330,7 +12244,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -12338,17 +12252,17 @@ x_1 = lean_mk_string_unchecked("reduceNegSucc", 13, 13);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__1;
+x_2 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -12360,28 +12274,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__3;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__5;
+x_1 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__3;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__4;
+x_1 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -12389,47 +12303,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceNegSucc), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__2;
-x_3 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__5;
-x_4 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__6;
+x_2 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__2;
+x_3 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__5;
+x_4 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2364____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2451____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__6;
+x_1 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2364_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2451_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2364____closed__1;
+x_5 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2451____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2366_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2453_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2364____closed__1;
+x_5 = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2451____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -12669,7 +12583,7 @@ x_12 = lean_ctor_get(x_10, 1);
 lean_inc(x_12);
 lean_dec(x_10);
 x_13 = l_Int_reduceOfNat___closed__1;
-x_14 = l_Int_isPosValue___closed__1;
+x_14 = l_Int_reduceNeg___closed__1;
 x_15 = l_Lean_Expr_cleanupAnnotations(x_11);
 x_16 = l_Lean_Expr_isApp(x_15);
 if (x_16 == 0)
@@ -12717,7 +12631,7 @@ lean_dec(x_1);
 return x_10;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__1() {
 _start:
 {
 lean_object* x_1; 
@@ -12725,17 +12639,17 @@ x_1 = lean_mk_string_unchecked("reduceOfNat", 11, 11);
 return x_1;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__2() {
+static lean_object* _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__2() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
 x_1 = l_Int_reduceUnary___lambda__1___closed__9;
-x_2 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__1;
+x_2 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__1;
 x_3 = l_Lean_Name_mkStr2(x_1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__3() {
+static lean_object* _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__3() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
@@ -12747,28 +12661,28 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__4() {
+static lean_object* _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__4() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; 
-x_1 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__3;
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__5;
+x_1 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__3;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__5;
 x_3 = lean_alloc_ctor(1, 2, 0);
 lean_ctor_set(x_3, 0, x_1);
 lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__5() {
+static lean_object* _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__5() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__4;
+x_1 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__4;
 x_2 = lean_array_mk(x_1);
 return x_2;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__6() {
+static lean_object* _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__6() {
 _start:
 {
 lean_object* x_1; 
@@ -12776,47 +12690,47 @@ x_1 = lean_alloc_closure((void*)(l_Int_reduceOfNat), 9, 0);
 return x_1;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; 
-x_2 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__2;
-x_3 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__5;
-x_4 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__6;
+x_2 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__2;
+x_3 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__5;
+x_4 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__6;
 x_5 = l_Lean_Meta_Simp_registerBuiltinDSimproc(x_2, x_3, x_4, x_1);
 return x_5;
 }
 }
-static lean_object* _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2524____closed__1() {
+static lean_object* _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2611____closed__1() {
 _start:
 {
 lean_object* x_1; lean_object* x_2; 
-x_1 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__6;
+x_1 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__6;
 x_2 = lean_alloc_ctor(1, 1, 0);
 lean_ctor_set(x_2, 0, x_1);
 return x_2;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2524_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2611_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2;
-x_3 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2;
+x_3 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2524____closed__1;
+x_5 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2611____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
 }
-LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2526_(lean_object* x_1) {
+LEAN_EXPORT lean_object* l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2613_(lean_object* x_1) {
 _start:
 {
 lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; lean_object* x_6; 
-x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1;
-x_3 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__2;
+x_2 = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1;
+x_3 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__2;
 x_4 = 1;
-x_5 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2524____closed__1;
+x_5 = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2611____closed__1;
 x_6 = l_Lean_Meta_Simp_addSimprocBuiltinAttrCore(x_2, x_3, x_4, x_5, x_1);
 return x_6;
 }
@@ -12892,61 +12806,61 @@ l_Int_reduceNeg___lambda__1___closed__2 = _init_l_Int_reduceNeg___lambda__1___cl
 lean_mark_persistent(l_Int_reduceNeg___lambda__1___closed__2);
 l_Int_reduceNeg___lambda__1___closed__3 = _init_l_Int_reduceNeg___lambda__1___closed__3();
 lean_mark_persistent(l_Int_reduceNeg___lambda__1___closed__3);
-l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__1 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__1);
-l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__2 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__2);
-l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__3 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__3);
-l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__4 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__4);
-l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__5 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__5);
-l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__6 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__6);
-l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__7 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__7();
-lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__7);
-l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__8 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__8();
-lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__8);
-l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__9 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__9();
-lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__9);
-l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__10 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__10();
-lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823____closed__10);
-if (builtin) {res = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_823_(lean_io_mk_world());
+l_Int_reduceNeg___closed__1 = _init_l_Int_reduceNeg___closed__1();
+lean_mark_persistent(l_Int_reduceNeg___closed__1);
+l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__1 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__1);
+l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__2 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__2);
+l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__3 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__3);
+l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__4 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__4);
+l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__5 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__5);
+l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__6 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__6);
+l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__7 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__7();
+lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__7);
+l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__8 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__8();
+lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__8);
+l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__9 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__9();
+lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__9);
+l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__10 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__10();
+lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910____closed__10);
+if (builtin) {res = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_910_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__1 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__1);
-l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825____closed__2);
-if (builtin) {res = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_825_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__1 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__1);
+l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912____closed__2);
+if (builtin) {res = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_912_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_827_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1 = _init_l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceNeg_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_914_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l_Int_isPosValue___closed__1 = _init_l_Int_isPosValue___closed__1();
-lean_mark_persistent(l_Int_isPosValue___closed__1);
-l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__1 = _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__1);
-l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__2 = _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__2);
-l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__3 = _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__3);
-l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__4 = _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__4);
-l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__5 = _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__5);
-l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__6 = _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999____closed__6);
-if (builtin) {res = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_999_(lean_io_mk_world());
+}l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__1 = _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__1);
+l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__2 = _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__2);
+l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__3 = _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__3);
+l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__4 = _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__4);
+l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__5 = _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__5);
+l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__6 = _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086____closed__6);
+if (builtin) {res = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1086_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1001____closed__1 = _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1001____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1001____closed__1);
-if (builtin) {res = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1001_(lean_io_mk_world());
+}l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1088____closed__1 = _init_l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1088____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1088____closed__1);
+if (builtin) {res = l___regBuiltin_Int_isPosValue_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1088_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceAdd___closed__1 = _init_l_Int_reduceAdd___closed__1();
@@ -12955,35 +12869,35 @@ l_Int_reduceAdd___closed__2 = _init_l_Int_reduceAdd___closed__2();
 lean_mark_persistent(l_Int_reduceAdd___closed__2);
 l_Int_reduceAdd___closed__3 = _init_l_Int_reduceAdd___closed__3();
 lean_mark_persistent(l_Int_reduceAdd___closed__3);
-l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__1 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__1);
-l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__2 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__2);
-l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__3 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__3);
-l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__4 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__4);
-l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__5 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__5);
-l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__6 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__6);
-l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__7 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__7();
-lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__7);
-l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__8 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__8();
-lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__8);
-l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__9 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__9();
-lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__9);
-l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__10 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__10();
-lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035____closed__10);
-if (builtin) {res = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1035_(lean_io_mk_world());
+l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__1 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__1);
+l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__2 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__2);
+l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__3 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__3);
+l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__4 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__4);
+l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__5 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__5);
+l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__6 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__6);
+l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__7 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__7();
+lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__7);
+l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__8 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__8();
+lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__8);
+l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__9 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__9();
+lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__9);
+l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__10 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__10();
+lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122____closed__10);
+if (builtin) {res = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1122_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1037____closed__1 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1037____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1037____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1037_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1124____closed__1 = _init_l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1124____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1124____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1124_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1039_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceAdd_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1126_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceMul___closed__1 = _init_l_Int_reduceMul___closed__1();
@@ -12992,27 +12906,27 @@ l_Int_reduceMul___closed__2 = _init_l_Int_reduceMul___closed__2();
 lean_mark_persistent(l_Int_reduceMul___closed__2);
 l_Int_reduceMul___closed__3 = _init_l_Int_reduceMul___closed__3();
 lean_mark_persistent(l_Int_reduceMul___closed__3);
-l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__1 = _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__1);
-l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__2 = _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__2);
-l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__3 = _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__3);
-l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__4 = _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__4);
-l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__5 = _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__5);
-l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__6 = _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1073_(lean_io_mk_world());
+l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__1 = _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__1);
+l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__2 = _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__2);
+l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__3 = _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__3);
+l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__4 = _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__4);
+l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__5 = _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__5);
+l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__6 = _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1160_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1075____closed__1 = _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1075____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1075____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1075_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1162____closed__1 = _init_l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1162____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1162____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1162_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1077_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceMul_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1164_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceSub___closed__1 = _init_l_Int_reduceSub___closed__1();
@@ -13021,27 +12935,27 @@ l_Int_reduceSub___closed__2 = _init_l_Int_reduceSub___closed__2();
 lean_mark_persistent(l_Int_reduceSub___closed__2);
 l_Int_reduceSub___closed__3 = _init_l_Int_reduceSub___closed__3();
 lean_mark_persistent(l_Int_reduceSub___closed__3);
-l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__1 = _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__1);
-l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__2 = _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__2);
-l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__3 = _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__3);
-l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__4 = _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__4);
-l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__5 = _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__5);
-l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__6 = _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1111_(lean_io_mk_world());
+l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__1 = _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__1);
+l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__2 = _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__2);
+l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__3 = _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__3);
+l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__4 = _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__4);
+l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__5 = _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__5);
+l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__6 = _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1198_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1113____closed__1 = _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1113____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1113____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1113_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1200____closed__1 = _init_l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1200____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1200____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1200_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1115_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceSub_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1202_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceDiv___closed__1 = _init_l_Int_reduceDiv___closed__1();
@@ -13050,27 +12964,27 @@ l_Int_reduceDiv___closed__2 = _init_l_Int_reduceDiv___closed__2();
 lean_mark_persistent(l_Int_reduceDiv___closed__2);
 l_Int_reduceDiv___closed__3 = _init_l_Int_reduceDiv___closed__3();
 lean_mark_persistent(l_Int_reduceDiv___closed__3);
-l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__1 = _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__1);
-l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__2 = _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__2);
-l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__3 = _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__3);
-l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__4 = _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__4);
-l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__5 = _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__5);
-l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__6 = _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1149_(lean_io_mk_world());
+l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__1 = _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__1);
+l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__2 = _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__2);
+l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__3 = _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__3);
+l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__4 = _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__4);
+l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__5 = _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__5);
+l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__6 = _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1236_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1151____closed__1 = _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1151____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1151____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1151_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1238____closed__1 = _init_l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1238____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1238____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1238_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1153_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1240_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceMod___closed__1 = _init_l_Int_reduceMod___closed__1();
@@ -13079,135 +12993,135 @@ l_Int_reduceMod___closed__2 = _init_l_Int_reduceMod___closed__2();
 lean_mark_persistent(l_Int_reduceMod___closed__2);
 l_Int_reduceMod___closed__3 = _init_l_Int_reduceMod___closed__3();
 lean_mark_persistent(l_Int_reduceMod___closed__3);
-l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__1 = _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__1);
-l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__2 = _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__2);
-l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__3 = _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__3);
-l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__4 = _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__4);
-l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__5 = _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__5);
-l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__6 = _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1187_(lean_io_mk_world());
+l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__1 = _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__1);
+l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__2 = _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__2);
+l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__3 = _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__3);
+l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__4 = _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__4);
+l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__5 = _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__5);
+l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__6 = _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1274_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1189____closed__1 = _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1189____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1189____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1189_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1276____closed__1 = _init_l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1276____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1276____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1276_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1191_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1278_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceTDiv___closed__1 = _init_l_Int_reduceTDiv___closed__1();
 lean_mark_persistent(l_Int_reduceTDiv___closed__1);
 l_Int_reduceTDiv___closed__2 = _init_l_Int_reduceTDiv___closed__2();
 lean_mark_persistent(l_Int_reduceTDiv___closed__2);
-l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__1 = _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__1);
-l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__2 = _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__2);
-l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__3 = _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__3);
-l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__4 = _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__4);
-l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__5 = _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__5);
-l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__6 = _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1209_(lean_io_mk_world());
+l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__1 = _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__1);
+l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2 = _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2);
+l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__3 = _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__3);
+l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__4 = _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__4);
+l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__5 = _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__5);
+l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__6 = _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1211____closed__1 = _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1211____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1211____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1211_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298____closed__1 = _init_l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1213_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceTDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1300_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceTMod___closed__1 = _init_l_Int_reduceTMod___closed__1();
 lean_mark_persistent(l_Int_reduceTMod___closed__1);
 l_Int_reduceTMod___closed__2 = _init_l_Int_reduceTMod___closed__2();
 lean_mark_persistent(l_Int_reduceTMod___closed__2);
-l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__1 = _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__1);
-l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__2 = _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__2);
-l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__3 = _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__3);
-l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__4 = _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__4);
-l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__5 = _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__5);
-l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__6 = _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1231_(lean_io_mk_world());
+l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__1 = _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__1);
+l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__2 = _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__2);
+l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__3 = _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__3);
+l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__4 = _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__4);
+l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__5 = _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__5);
+l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__6 = _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1318_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1233____closed__1 = _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1233____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1233____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1233_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1320____closed__1 = _init_l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1320____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1320____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1320_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1235_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceTMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1322_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceFDiv___closed__1 = _init_l_Int_reduceFDiv___closed__1();
 lean_mark_persistent(l_Int_reduceFDiv___closed__1);
 l_Int_reduceFDiv___closed__2 = _init_l_Int_reduceFDiv___closed__2();
 lean_mark_persistent(l_Int_reduceFDiv___closed__2);
-l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__1 = _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__1);
-l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__2 = _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__2);
-l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__3 = _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__3);
-l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__4 = _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__4);
-l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__5 = _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__5);
-l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__6 = _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1253_(lean_io_mk_world());
+l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__1 = _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__1);
+l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__2 = _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__2);
+l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__3 = _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__3);
+l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__4 = _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__4);
+l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__5 = _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__5);
+l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__6 = _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1340_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1255____closed__1 = _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1255____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1255____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1255_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1342____closed__1 = _init_l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1342____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1342____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1342_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1257_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceFDiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1344_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceFMod___closed__1 = _init_l_Int_reduceFMod___closed__1();
 lean_mark_persistent(l_Int_reduceFMod___closed__1);
 l_Int_reduceFMod___closed__2 = _init_l_Int_reduceFMod___closed__2();
 lean_mark_persistent(l_Int_reduceFMod___closed__2);
-l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__1 = _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__1);
-l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__2 = _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__2);
-l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__3 = _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__3);
-l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__4 = _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__4);
-l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__5 = _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__5);
-l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__6 = _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1275_(lean_io_mk_world());
+l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__1 = _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__1);
+l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__2 = _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__2);
+l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__3 = _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__3);
+l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__4 = _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__4);
+l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__5 = _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__5);
+l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__6 = _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1362_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1277____closed__1 = _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1277____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1277____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1277_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1364____closed__1 = _init_l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1364____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1364____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1364_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1279_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceFMod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1366_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceBdiv___closed__1 = _init_l_Int_reduceBdiv___closed__1();
@@ -13216,27 +13130,27 @@ l_Int_reduceBdiv___closed__2 = _init_l_Int_reduceBdiv___closed__2();
 lean_mark_persistent(l_Int_reduceBdiv___closed__2);
 l_Int_reduceBdiv___closed__3 = _init_l_Int_reduceBdiv___closed__3();
 lean_mark_persistent(l_Int_reduceBdiv___closed__3);
-l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__1 = _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__1);
-l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2 = _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__2);
-l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__3 = _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__3);
-l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__4 = _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__4);
-l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__5 = _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__5);
-l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__6 = _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1296_(lean_io_mk_world());
+l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__1 = _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__1);
+l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__2 = _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__2);
+l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__3 = _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__3);
+l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__4 = _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__4);
+l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__5 = _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__5);
+l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__6 = _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1383_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298____closed__1 = _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1298_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1385____closed__1 = _init_l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1385____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1385____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1385_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1300_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceBdiv_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1387_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceBmod___closed__1 = _init_l_Int_reduceBmod___closed__1();
@@ -13245,27 +13159,27 @@ l_Int_reduceBmod___closed__2 = _init_l_Int_reduceBmod___closed__2();
 lean_mark_persistent(l_Int_reduceBmod___closed__2);
 l_Int_reduceBmod___closed__3 = _init_l_Int_reduceBmod___closed__3();
 lean_mark_persistent(l_Int_reduceBmod___closed__3);
-l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__1 = _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__1);
-l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__2 = _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__2);
-l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__3 = _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__3);
-l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__4 = _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__4);
-l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__5 = _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__5);
-l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__6 = _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1317_(lean_io_mk_world());
+l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__1 = _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__1);
+l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__2 = _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__2);
+l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__3 = _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__3);
+l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__4 = _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__4);
+l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__5 = _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__5);
+l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__6 = _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1404_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1319____closed__1 = _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1319____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1319____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1319_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1406____closed__1 = _init_l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1406____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1406____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1406_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1321_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceBmod_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1408_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reducePow___closed__1 = _init_l_Int_reducePow___closed__1();
@@ -13276,37 +13190,37 @@ l_Int_reducePow___closed__3 = _init_l_Int_reducePow___closed__3();
 lean_mark_persistent(l_Int_reducePow___closed__3);
 l_Int_reducePow___closed__4 = _init_l_Int_reducePow___closed__4();
 lean_mark_persistent(l_Int_reducePow___closed__4);
-l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__1 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__1);
-l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__2 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__2);
-l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__3 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__3);
-l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__4 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__4);
-l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__5 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__5);
-l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__6 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__6);
-l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__7 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__7();
-lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__7);
-l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__8 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__8();
-lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__8);
-l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__9 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__9();
-lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__9);
-l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__10 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__10();
-lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__10);
-l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__11 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__11();
-lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747____closed__11);
-if (builtin) {res = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1747_(lean_io_mk_world());
+l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__1 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__1);
+l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__2 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__2);
+l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__3 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__3);
+l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__4 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__4);
+l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__5 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__5);
+l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__6 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__6);
+l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__7 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__7();
+lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__7);
+l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__8 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__8();
+lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__8);
+l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__9 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__9();
+lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__9);
+l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__10 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__10();
+lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__10);
+l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__11 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__11();
+lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834____closed__11);
+if (builtin) {res = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1834_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1749____closed__1 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1749____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1749____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1749_(lean_io_mk_world());
+}l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1836____closed__1 = _init_l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1836____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1836____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1836_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1751_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reducePow_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1838_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceLT___closed__1 = _init_l_Int_reduceLT___closed__1();
@@ -13315,27 +13229,27 @@ l_Int_reduceLT___closed__2 = _init_l_Int_reduceLT___closed__2();
 lean_mark_persistent(l_Int_reduceLT___closed__2);
 l_Int_reduceLT___closed__3 = _init_l_Int_reduceLT___closed__3();
 lean_mark_persistent(l_Int_reduceLT___closed__3);
-l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__1 = _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__1);
-l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__2 = _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__2);
-l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__3 = _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__3);
-l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__4 = _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__4);
-l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__5 = _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__5);
-l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__6 = _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1786_(lean_io_mk_world());
+l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__1 = _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__1);
+l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__2 = _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__2);
+l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__3 = _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__3);
+l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__4 = _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__4);
+l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__5 = _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__5);
+l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__6 = _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1873_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1788____closed__1 = _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1788____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1788____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1788_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1875____closed__1 = _init_l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1875____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1875____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1875_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1790_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceLT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1877_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceLE___closed__1 = _init_l_Int_reduceLE___closed__1();
@@ -13344,27 +13258,27 @@ l_Int_reduceLE___closed__2 = _init_l_Int_reduceLE___closed__2();
 lean_mark_persistent(l_Int_reduceLE___closed__2);
 l_Int_reduceLE___closed__3 = _init_l_Int_reduceLE___closed__3();
 lean_mark_persistent(l_Int_reduceLE___closed__3);
-l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__1 = _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__1);
-l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__2 = _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__2);
-l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__3 = _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__3);
-l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__4 = _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__4);
-l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__5 = _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__5);
-l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__6 = _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1825_(lean_io_mk_world());
+l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__1 = _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__1);
+l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__2 = _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__2);
+l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__3 = _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__3);
+l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__4 = _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__4);
+l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__5 = _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__5);
+l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__6 = _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1912_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1827____closed__1 = _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1827____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1827____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1827_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1914____closed__1 = _init_l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1914____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1914____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1914_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1829_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceLE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1916_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceGT___closed__1 = _init_l_Int_reduceGT___closed__1();
@@ -13373,21 +13287,21 @@ l_Int_reduceGT___closed__2 = _init_l_Int_reduceGT___closed__2();
 lean_mark_persistent(l_Int_reduceGT___closed__2);
 l_Int_reduceGT___closed__3 = _init_l_Int_reduceGT___closed__3();
 lean_mark_persistent(l_Int_reduceGT___closed__3);
-l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__1 = _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__1);
-l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__2 = _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__2);
-l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__3 = _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864____closed__3);
-if (builtin) {res = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1864_(lean_io_mk_world());
+l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__1 = _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__1);
+l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__2 = _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__2);
+l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__3 = _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951____closed__3);
+if (builtin) {res = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1951_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1866____closed__1 = _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1866____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1866____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1866_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1953____closed__1 = _init_l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1953____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1953____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1953_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1868_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceGT_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1955_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceGE___closed__1 = _init_l_Int_reduceGE___closed__1();
@@ -13396,79 +13310,79 @@ l_Int_reduceGE___closed__2 = _init_l_Int_reduceGE___closed__2();
 lean_mark_persistent(l_Int_reduceGE___closed__2);
 l_Int_reduceGE___closed__3 = _init_l_Int_reduceGE___closed__3();
 lean_mark_persistent(l_Int_reduceGE___closed__3);
-l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__1 = _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__1);
-l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__2 = _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__2);
-l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__3 = _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903____closed__3);
-if (builtin) {res = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1903_(lean_io_mk_world());
+l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__1 = _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__1);
+l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__2 = _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__2);
+l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__3 = _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990____closed__3);
+if (builtin) {res = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1990_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1905____closed__1 = _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1905____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1905____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1905_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1992____closed__1 = _init_l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1992____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1992____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1992_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1907_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceGE_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1994_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceEq___closed__1 = _init_l_Int_reduceEq___closed__1();
 lean_mark_persistent(l_Int_reduceEq___closed__1);
 l_Int_reduceEq___closed__2 = _init_l_Int_reduceEq___closed__2();
 lean_mark_persistent(l_Int_reduceEq___closed__2);
-l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__1 = _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__1);
-l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__2 = _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__2);
-l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__3 = _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__3);
-l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__4 = _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__4);
-l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__5 = _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__5);
-l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__6 = _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1942_(lean_io_mk_world());
+l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__1 = _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__1);
+l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__2 = _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__2);
+l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__3 = _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__3);
+l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__4 = _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__4);
+l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__5 = _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__5);
+l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__6 = _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2029_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1944____closed__1 = _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1944____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1944____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1944_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2031____closed__1 = _init_l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2031____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2031____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2031_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1946_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2033_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceNe___closed__1 = _init_l_Int_reduceNe___closed__1();
 lean_mark_persistent(l_Int_reduceNe___closed__1);
 l_Int_reduceNe___closed__2 = _init_l_Int_reduceNe___closed__2();
 lean_mark_persistent(l_Int_reduceNe___closed__2);
-l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__1 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__1);
-l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__2 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__2);
-l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__3 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__3);
-l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__4 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__4);
-l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__5 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__5);
-l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__6 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__6);
-l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__7 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__7();
-lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__7);
-l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__8 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__8();
-lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980____closed__8);
-if (builtin) {res = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1980_(lean_io_mk_world());
+l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__1 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__1);
+l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__2 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__2);
+l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__3 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__3);
+l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__4 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__4);
+l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__5 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__5);
+l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__6 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__6);
+l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__7 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__7();
+lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__7);
+l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__8 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__8();
+lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067____closed__8);
+if (builtin) {res = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2067_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1982____closed__1 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1982____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1982____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1982_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2069____closed__1 = _init_l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2069____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2069____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2069_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_1984_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2071_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceBEq___closed__1 = _init_l_Int_reduceBEq___closed__1();
@@ -13477,108 +13391,108 @@ l_Int_reduceBEq___closed__2 = _init_l_Int_reduceBEq___closed__2();
 lean_mark_persistent(l_Int_reduceBEq___closed__2);
 l_Int_reduceBEq___closed__3 = _init_l_Int_reduceBEq___closed__3();
 lean_mark_persistent(l_Int_reduceBEq___closed__3);
-l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__1 = _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__1);
-l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__2 = _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__2);
-l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__3 = _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__3);
-l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__4 = _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__4);
-l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__5 = _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__5);
-l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__6 = _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2019_(lean_io_mk_world());
+l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__1 = _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__1);
+l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__2 = _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__2);
+l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__3 = _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__3);
+l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__4 = _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__4);
+l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__5 = _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__5);
+l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__6 = _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2106_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2021____closed__1 = _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2021____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2021____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2021_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2108____closed__1 = _init_l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2108____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2108____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2108_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2023_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceBEq_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2110_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceBNe___closed__1 = _init_l_Int_reduceBNe___closed__1();
 lean_mark_persistent(l_Int_reduceBNe___closed__1);
 l_Int_reduceBNe___closed__2 = _init_l_Int_reduceBNe___closed__2();
 lean_mark_persistent(l_Int_reduceBNe___closed__2);
-l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__1 = _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__1);
-l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__2 = _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__2);
-l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__3 = _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__3);
-l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__4 = _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__4);
-l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__5 = _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__5);
-l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__6 = _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2057_(lean_io_mk_world());
+l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__1 = _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__1);
+l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__2 = _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__2);
+l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__3 = _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__3);
+l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__4 = _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__4);
+l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__5 = _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__5);
+l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__6 = _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2144_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2059____closed__1 = _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2059____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2059____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2059_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2146____closed__1 = _init_l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2146____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2146____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2146_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2061_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceBNe_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2148_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceAbs___closed__1 = _init_l_Int_reduceAbs___closed__1();
 lean_mark_persistent(l_Int_reduceAbs___closed__1);
 l_Int_reduceAbs___closed__2 = _init_l_Int_reduceAbs___closed__2();
 lean_mark_persistent(l_Int_reduceAbs___closed__2);
-l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__1 = _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__1);
-l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__2 = _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__2);
-l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__3 = _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__3);
-l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__4 = _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__4);
-l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__5 = _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__5);
-l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__6 = _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2177_(lean_io_mk_world());
+l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__1 = _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__1);
+l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__2 = _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__2);
+l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__3 = _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__3);
+l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__4 = _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__4);
+l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__5 = _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__5);
+l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__6 = _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2264_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2179____closed__1 = _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2179____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2179____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2179_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2266____closed__1 = _init_l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2266____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2266____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2266_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2181_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceAbs_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2268_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceToNat___closed__1 = _init_l_Int_reduceToNat___closed__1();
 lean_mark_persistent(l_Int_reduceToNat___closed__1);
 l_Int_reduceToNat___closed__2 = _init_l_Int_reduceToNat___closed__2();
 lean_mark_persistent(l_Int_reduceToNat___closed__2);
-l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__1 = _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__1);
-l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__2 = _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__2);
-l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__3 = _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__3);
-l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__4 = _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__4);
-l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__5 = _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__5);
-l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__6 = _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2197_(lean_io_mk_world());
+l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__1 = _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__1);
+l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__2 = _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__2);
+l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__3 = _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__3);
+l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__4 = _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__4);
+l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__5 = _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__5);
+l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__6 = _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2284_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2199____closed__1 = _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2199____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2199____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2199_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2286____closed__1 = _init_l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2286____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2286____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2286_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2201_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceToNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2288_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceNegSucc___lambda__1___closed__1 = _init_l_Int_reduceNegSucc___lambda__1___closed__1();
@@ -13589,54 +13503,54 @@ l_Int_reduceNegSucc___closed__2 = _init_l_Int_reduceNegSucc___closed__2();
 lean_mark_persistent(l_Int_reduceNegSucc___closed__2);
 l_Int_reduceNegSucc___closed__3 = _init_l_Int_reduceNegSucc___closed__3();
 lean_mark_persistent(l_Int_reduceNegSucc___closed__3);
-l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__1 = _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__1);
-l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__2 = _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__2);
-l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__3 = _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__3);
-l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__4 = _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__4);
-l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__5 = _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__5);
-l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__6 = _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2362_(lean_io_mk_world());
+l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__1 = _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__1);
+l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__2 = _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__2);
+l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__3 = _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__3);
+l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__4 = _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__4);
+l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__5 = _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__5);
+l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__6 = _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2449_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2364____closed__1 = _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2364____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2364____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2364_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2451____closed__1 = _init_l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2451____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2451____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2451_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2366_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceNegSucc_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2453_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }l_Int_reduceOfNat___closed__1 = _init_l_Int_reduceOfNat___closed__1();
 lean_mark_persistent(l_Int_reduceOfNat___closed__1);
 l_Int_reduceOfNat___closed__2 = _init_l_Int_reduceOfNat___closed__2();
 lean_mark_persistent(l_Int_reduceOfNat___closed__2);
-l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__1 = _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__1);
-l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__2 = _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__2();
-lean_mark_persistent(l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__2);
-l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__3 = _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__3();
-lean_mark_persistent(l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__3);
-l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__4 = _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__4();
-lean_mark_persistent(l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__4);
-l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__5 = _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__5();
-lean_mark_persistent(l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__5);
-l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__6 = _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__6();
-lean_mark_persistent(l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522____closed__6);
-if (builtin) {res = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2522_(lean_io_mk_world());
+l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__1 = _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__1);
+l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__2 = _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__2();
+lean_mark_persistent(l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__2);
+l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__3 = _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__3();
+lean_mark_persistent(l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__3);
+l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__4 = _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__4();
+lean_mark_persistent(l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__4);
+l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__5 = _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__5();
+lean_mark_persistent(l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__5);
+l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__6 = _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__6();
+lean_mark_persistent(l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609____closed__6);
+if (builtin) {res = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2609_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2524____closed__1 = _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2524____closed__1();
-lean_mark_persistent(l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2524____closed__1);
-if (builtin) {res = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2524_(lean_io_mk_world());
+}l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2611____closed__1 = _init_l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2611____closed__1();
+lean_mark_persistent(l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2611____closed__1);
+if (builtin) {res = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2611_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
-}if (builtin) {res = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2526_(lean_io_mk_world());
+}if (builtin) {res = l___regBuiltin_Int_reduceOfNat_declare__1____x40_Lean_Meta_Tactic_Simp_BuiltinSimprocs_Int___hyg_2613_(lean_io_mk_world());
 if (lean_io_result_is_error(res)) return res;
 lean_dec_ref(res);
 }return lean_io_result_mk_ok(lean_box(0));
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Simp/Main.c b/stage0/stdlib/Lean/Meta/Tactic/Simp/Main.c
index d6956ba02e0f..44567a7a9b1a 100644
--- a/stage0/stdlib/Lean/Meta/Tactic/Simp/Main.c
+++ b/stage0/stdlib/Lean/Meta/Tactic/Simp/Main.c
@@ -11316,7 +11316,7 @@ static lean_object* _init_l_Lean_Meta_Simp_simpProj___lambda__1___closed__4() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Meta_Simp_simpProj___lambda__1___closed__1;
 x_2 = l_Lean_Meta_Simp_simpProj___lambda__1___closed__2;
-x_3 = lean_unsigned_to_nat(1752u);
+x_3 = lean_unsigned_to_nat(1769u);
 x_4 = lean_unsigned_to_nat(18u);
 x_5 = l_Lean_Meta_Simp_simpProj___lambda__1___closed__3;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -13249,7 +13249,7 @@ static lean_object* _init_l_Lean_Meta_Simp_simpArrow___lambda__1___closed__4() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Meta_Simp_simpProj___lambda__1___closed__1;
 x_2 = l_Lean_Meta_Simp_simpArrow___lambda__1___closed__2;
-x_3 = lean_unsigned_to_nat(1778u);
+x_3 = lean_unsigned_to_nat(1795u);
 x_4 = lean_unsigned_to_nat(24u);
 x_5 = l_Lean_Meta_Simp_simpArrow___lambda__1___closed__3;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Simp/SimpTheorems.c b/stage0/stdlib/Lean/Meta/Tactic/Simp/SimpTheorems.c
index b6e77a1a70ee..b0c62805c364 100644
--- a/stage0/stdlib/Lean/Meta/Tactic/Simp/SimpTheorems.c
+++ b/stage0/stdlib/Lean/Meta/Tactic/Simp/SimpTheorems.c
@@ -14109,7 +14109,7 @@ static lean_object* _init_l_Lean_Meta_SimpTheorem_getValue___closed__4() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Meta_SimpTheorem_getValue___closed__1;
 x_2 = l_Lean_Meta_SimpTheorem_getValue___closed__2;
-x_3 = lean_unsigned_to_nat(1719u);
+x_3 = lean_unsigned_to_nat(1736u);
 x_4 = lean_unsigned_to_nat(18u);
 x_5 = l_Lean_Meta_SimpTheorem_getValue___closed__3;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
diff --git a/stage0/stdlib/Lean/Meta/Tactic/Simp/Types.c b/stage0/stdlib/Lean/Meta/Tactic/Simp/Types.c
index ba2b2008b9b9..533afd719b6c 100644
--- a/stage0/stdlib/Lean/Meta/Tactic/Simp/Types.c
+++ b/stage0/stdlib/Lean/Meta/Tactic/Simp/Types.c
@@ -11499,7 +11499,7 @@ static lean_object* _init_l_Lean_Meta_Simp_mkImpCongr___closed__4() {
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Meta_Simp_mkImpCongr___closed__1;
 x_2 = l_Lean_Meta_Simp_mkImpCongr___closed__2;
-x_3 = lean_unsigned_to_nat(1778u);
+x_3 = lean_unsigned_to_nat(1795u);
 x_4 = lean_unsigned_to_nat(24u);
 x_5 = l_Lean_Meta_Simp_mkImpCongr___closed__3;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
diff --git a/stage0/stdlib/Lean/Meta/Transform.c b/stage0/stdlib/Lean/Meta/Transform.c
index 25978063561e..0fd5fbc45732 100644
--- a/stage0/stdlib/Lean/Meta/Transform.c
+++ b/stage0/stdlib/Lean/Meta/Transform.c
@@ -1285,7 +1285,7 @@ static lean_object* _init_l_Lean_Core_transform_visit___rarg___lambda__2___close
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Core_transform_visit___rarg___lambda__2___closed__1;
 x_2 = l_Lean_Core_transform_visit___rarg___lambda__2___closed__2;
-x_3 = lean_unsigned_to_nat(1798u);
+x_3 = lean_unsigned_to_nat(1815u);
 x_4 = lean_unsigned_to_nat(20u);
 x_5 = l_Lean_Core_transform_visit___rarg___lambda__2___closed__3;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -1423,7 +1423,7 @@ static lean_object* _init_l_Lean_Core_transform_visit___rarg___lambda__4___close
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Core_transform_visit___rarg___lambda__2___closed__1;
 x_2 = l_Lean_Core_transform_visit___rarg___lambda__4___closed__1;
-x_3 = lean_unsigned_to_nat(1778u);
+x_3 = lean_unsigned_to_nat(1795u);
 x_4 = lean_unsigned_to_nat(24u);
 x_5 = l_Lean_Core_transform_visit___rarg___lambda__4___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -1561,7 +1561,7 @@ static lean_object* _init_l_Lean_Core_transform_visit___rarg___lambda__6___close
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Core_transform_visit___rarg___lambda__2___closed__1;
 x_2 = l_Lean_Core_transform_visit___rarg___lambda__6___closed__1;
-x_3 = lean_unsigned_to_nat(1807u);
+x_3 = lean_unsigned_to_nat(1824u);
 x_4 = lean_unsigned_to_nat(22u);
 x_5 = l_Lean_Core_transform_visit___rarg___lambda__6___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -1733,7 +1733,7 @@ static lean_object* _init_l_Lean_Core_transform_visit___rarg___lambda__9___close
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Core_transform_visit___rarg___lambda__2___closed__1;
 x_2 = l_Lean_Core_transform_visit___rarg___lambda__9___closed__1;
-x_3 = lean_unsigned_to_nat(1741u);
+x_3 = lean_unsigned_to_nat(1758u);
 x_4 = lean_unsigned_to_nat(17u);
 x_5 = l_Lean_Core_transform_visit___rarg___lambda__9___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
@@ -1805,7 +1805,7 @@ static lean_object* _init_l_Lean_Core_transform_visit___rarg___lambda__10___clos
 lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; 
 x_1 = l_Lean_Core_transform_visit___rarg___lambda__2___closed__1;
 x_2 = l_Lean_Core_transform_visit___rarg___lambda__10___closed__1;
-x_3 = lean_unsigned_to_nat(1752u);
+x_3 = lean_unsigned_to_nat(1769u);
 x_4 = lean_unsigned_to_nat(18u);
 x_5 = l_Lean_Core_transform_visit___rarg___lambda__10___closed__2;
 x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
diff --git a/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BVExpr/Basic.c b/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BVExpr/Basic.c
index 3e00a82036f9..08080ec10288 100644
--- a/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BVExpr/Basic.c
+++ b/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BVExpr/Basic.c
@@ -33,6 +33,7 @@ LEAN_EXPORT lean_object* l_Std_Tactic_BVDecide_BVUnOp_eval(lean_object*, lean_ob
 uint64_t lean_uint64_mix_hash(uint64_t, uint64_t);
 static lean_object* l_Std_Tactic_BVDecide_BVUnOp_toString___closed__6;
 static lean_object* l___private_Std_Tactic_BVDecide_Bitblast_BVExpr_Basic_0__Std_Tactic_BVDecide_reprBVBit____x40_Std_Tactic_BVDecide_Bitblast_BVExpr_Basic___hyg_287____closed__7;
+LEAN_EXPORT lean_object* l___private_Std_Tactic_BVDecide_Bitblast_BVExpr_Basic_0__Std_Tactic_BVDecide_BVExpr_toString_match__1_splitter(lean_object*);
 LEAN_EXPORT lean_object* l_Std_Tactic_BVDecide_BVPred_toString(lean_object*);
 static lean_object* l___private_Std_Tactic_BVDecide_Bitblast_BVExpr_Basic_0__Std_Tactic_BVDecide_reprBVBit____x40_Std_Tactic_BVDecide_Bitblast_BVExpr_Basic___hyg_287____closed__20;
 static lean_object* l_Std_Tactic_BVDecide_BVUnOp_toString___closed__5;
@@ -137,6 +138,7 @@ LEAN_EXPORT lean_object* l_Std_Tactic_BVDecide_BVBinPred_instToString;
 LEAN_EXPORT uint8_t l_Std_Tactic_BVDecide_instDecidableEqBVBit(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l___private_Std_Tactic_BVDecide_Bitblast_BVExpr_Basic_0__Std_Tactic_BVDecide_hashBVBit____x40_Std_Tactic_BVDecide_Bitblast_BVExpr_Basic___hyg_35____boxed(lean_object*);
 static lean_object* l_Std_Tactic_BVDecide_BVExpr_toString___closed__5;
+LEAN_EXPORT lean_object* l___private_Std_Tactic_BVDecide_Bitblast_BVExpr_Basic_0__Std_Tactic_BVDecide_BVExpr_toString_match__1_splitter___rarg(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_object* l_BitVec_mul(lean_object*, lean_object*, lean_object*);
 static lean_object* l_Std_Tactic_BVDecide_BVBinOp_toString___closed__4;
 LEAN_EXPORT lean_object* l_Std_Tactic_BVDecide_BVUnOp_toString(lean_object*);
@@ -1643,140 +1645,154 @@ LEAN_EXPORT lean_object* l_Std_Tactic_BVDecide_BVExpr_eval(lean_object* x_1, lea
 switch (lean_obj_tag(x_3)) {
 case 0:
 {
-lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; 
+lean_object* x_4; lean_object* x_5; lean_object* x_6; uint8_t x_7; 
 x_4 = lean_ctor_get(x_3, 1);
 x_5 = l_Lean_RArray_getImpl___rarg(x_2, x_4);
 x_6 = lean_ctor_get(x_5, 0);
 lean_inc(x_6);
-x_7 = lean_ctor_get(x_5, 1);
-lean_inc(x_7);
+x_7 = lean_nat_dec_eq(x_6, x_1);
+if (x_7 == 0)
+{
+lean_object* x_8; lean_object* x_9; 
+x_8 = lean_ctor_get(x_5, 1);
+lean_inc(x_8);
 lean_dec(x_5);
-x_8 = l_BitVec_setWidth(x_6, x_1, x_7);
-lean_dec(x_7);
+x_9 = l_BitVec_setWidth(x_6, x_1, x_8);
+lean_dec(x_8);
 lean_dec(x_6);
-return x_8;
+return x_9;
+}
+else
+{
+lean_object* x_10; 
+lean_dec(x_6);
+x_10 = lean_ctor_get(x_5, 1);
+lean_inc(x_10);
+lean_dec(x_5);
+return x_10;
+}
 }
 case 1:
 {
-lean_object* x_9; 
-x_9 = lean_ctor_get(x_3, 1);
-lean_inc(x_9);
-return x_9;
+lean_object* x_11; 
+x_11 = lean_ctor_get(x_3, 1);
+lean_inc(x_11);
+return x_11;
 }
 case 2:
 {
-lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; 
-x_10 = lean_ctor_get(x_3, 0);
-x_11 = lean_ctor_get(x_3, 2);
-x_12 = l_Std_Tactic_BVDecide_BVExpr_eval(x_10, x_2, x_11);
-x_13 = l_BitVec_setWidth(x_10, x_1, x_12);
-lean_dec(x_12);
-return x_13;
+lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; 
+x_12 = lean_ctor_get(x_3, 0);
+x_13 = lean_ctor_get(x_3, 2);
+x_14 = l_Std_Tactic_BVDecide_BVExpr_eval(x_12, x_2, x_13);
+x_15 = l_BitVec_setWidth(x_12, x_1, x_14);
+lean_dec(x_14);
+return x_15;
 }
 case 3:
 {
-lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; 
-x_14 = lean_ctor_get(x_3, 0);
-x_15 = lean_ctor_get(x_3, 1);
-x_16 = lean_ctor_get(x_3, 3);
-x_17 = l_Std_Tactic_BVDecide_BVExpr_eval(x_14, x_2, x_16);
-x_18 = l_BitVec_extractLsb_x27___rarg(x_15, x_1, x_17);
-lean_dec(x_17);
-return x_18;
+lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; 
+x_16 = lean_ctor_get(x_3, 0);
+x_17 = lean_ctor_get(x_3, 1);
+x_18 = lean_ctor_get(x_3, 3);
+x_19 = l_Std_Tactic_BVDecide_BVExpr_eval(x_16, x_2, x_18);
+x_20 = l_BitVec_extractLsb_x27___rarg(x_17, x_1, x_19);
+lean_dec(x_19);
+return x_20;
 }
 case 4:
 {
-lean_object* x_19; uint8_t x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; 
-x_19 = lean_ctor_get(x_3, 1);
-x_20 = lean_ctor_get_uint8(x_3, sizeof(void*)*3);
-x_21 = lean_ctor_get(x_3, 2);
-x_22 = l_Std_Tactic_BVDecide_BVExpr_eval(x_1, x_2, x_19);
-x_23 = l_Std_Tactic_BVDecide_BVExpr_eval(x_1, x_2, x_21);
-x_24 = l_Std_Tactic_BVDecide_BVBinOp_eval(x_1, x_20, x_22, x_23);
-lean_dec(x_23);
-lean_dec(x_22);
-return x_24;
+lean_object* x_21; uint8_t x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; 
+x_21 = lean_ctor_get(x_3, 1);
+x_22 = lean_ctor_get_uint8(x_3, sizeof(void*)*3);
+x_23 = lean_ctor_get(x_3, 2);
+x_24 = l_Std_Tactic_BVDecide_BVExpr_eval(x_1, x_2, x_21);
+x_25 = l_Std_Tactic_BVDecide_BVExpr_eval(x_1, x_2, x_23);
+x_26 = l_Std_Tactic_BVDecide_BVBinOp_eval(x_1, x_22, x_24, x_25);
+lean_dec(x_25);
+lean_dec(x_24);
+return x_26;
 }
 case 5:
 {
-lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; 
-x_25 = lean_ctor_get(x_3, 1);
-x_26 = lean_ctor_get(x_3, 2);
-x_27 = l_Std_Tactic_BVDecide_BVExpr_eval(x_1, x_2, x_26);
-x_28 = l_Std_Tactic_BVDecide_BVUnOp_eval(x_1, x_25, x_27);
-return x_28;
+lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; 
+x_27 = lean_ctor_get(x_3, 1);
+x_28 = lean_ctor_get(x_3, 2);
+x_29 = l_Std_Tactic_BVDecide_BVExpr_eval(x_1, x_2, x_28);
+x_30 = l_Std_Tactic_BVDecide_BVUnOp_eval(x_1, x_27, x_29);
+return x_30;
 }
 case 6:
 {
-lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; 
-x_29 = lean_ctor_get(x_3, 0);
-x_30 = lean_ctor_get(x_3, 1);
-x_31 = lean_ctor_get(x_3, 2);
-x_32 = lean_ctor_get(x_3, 3);
-x_33 = l_Std_Tactic_BVDecide_BVExpr_eval(x_29, x_2, x_31);
-x_34 = l_Std_Tactic_BVDecide_BVExpr_eval(x_30, x_2, x_32);
-x_35 = l_BitVec_append___rarg(x_30, x_33, x_34);
-lean_dec(x_34);
-lean_dec(x_33);
-return x_35;
+lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; 
+x_31 = lean_ctor_get(x_3, 0);
+x_32 = lean_ctor_get(x_3, 1);
+x_33 = lean_ctor_get(x_3, 2);
+x_34 = lean_ctor_get(x_3, 3);
+x_35 = l_Std_Tactic_BVDecide_BVExpr_eval(x_31, x_2, x_33);
+x_36 = l_Std_Tactic_BVDecide_BVExpr_eval(x_32, x_2, x_34);
+x_37 = l_BitVec_append___rarg(x_32, x_35, x_36);
+lean_dec(x_36);
+lean_dec(x_35);
+return x_37;
 }
 case 7:
 {
-lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; 
-x_36 = lean_ctor_get(x_3, 0);
-x_37 = lean_ctor_get(x_3, 1);
-x_38 = lean_ctor_get(x_3, 2);
-x_39 = l_Std_Tactic_BVDecide_BVExpr_eval(x_36, x_2, x_38);
-x_40 = l_BitVec_replicate(x_36, x_37, x_39);
-lean_dec(x_39);
-return x_40;
+lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; 
+x_38 = lean_ctor_get(x_3, 0);
+x_39 = lean_ctor_get(x_3, 1);
+x_40 = lean_ctor_get(x_3, 2);
+x_41 = l_Std_Tactic_BVDecide_BVExpr_eval(x_38, x_2, x_40);
+x_42 = l_BitVec_replicate(x_38, x_39, x_41);
+lean_dec(x_41);
+return x_42;
 }
 case 8:
 {
-lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; 
-x_41 = lean_ctor_get(x_3, 0);
-x_42 = lean_ctor_get(x_3, 2);
-x_43 = l_Std_Tactic_BVDecide_BVExpr_eval(x_41, x_2, x_42);
-x_44 = l_BitVec_signExtend(x_41, x_1, x_43);
-return x_44;
+lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; 
+x_43 = lean_ctor_get(x_3, 0);
+x_44 = lean_ctor_get(x_3, 2);
+x_45 = l_Std_Tactic_BVDecide_BVExpr_eval(x_43, x_2, x_44);
+x_46 = l_BitVec_signExtend(x_43, x_1, x_45);
+return x_46;
 }
 case 9:
 {
-lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; 
-x_45 = lean_ctor_get(x_3, 1);
-x_46 = lean_ctor_get(x_3, 2);
-x_47 = lean_ctor_get(x_3, 3);
-x_48 = l_Std_Tactic_BVDecide_BVExpr_eval(x_1, x_2, x_46);
-x_49 = l_Std_Tactic_BVDecide_BVExpr_eval(x_45, x_2, x_47);
-x_50 = l_BitVec_shiftLeft(x_1, x_48, x_49);
-lean_dec(x_49);
-lean_dec(x_48);
-return x_50;
+lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; 
+x_47 = lean_ctor_get(x_3, 1);
+x_48 = lean_ctor_get(x_3, 2);
+x_49 = lean_ctor_get(x_3, 3);
+x_50 = l_Std_Tactic_BVDecide_BVExpr_eval(x_1, x_2, x_48);
+x_51 = l_Std_Tactic_BVDecide_BVExpr_eval(x_47, x_2, x_49);
+x_52 = l_BitVec_shiftLeft(x_1, x_50, x_51);
+lean_dec(x_51);
+lean_dec(x_50);
+return x_52;
 }
 case 10:
 {
-lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; 
-x_51 = lean_ctor_get(x_3, 1);
-x_52 = lean_ctor_get(x_3, 2);
-x_53 = lean_ctor_get(x_3, 3);
-x_54 = l_Std_Tactic_BVDecide_BVExpr_eval(x_1, x_2, x_52);
-x_55 = l_Std_Tactic_BVDecide_BVExpr_eval(x_51, x_2, x_53);
-x_56 = lean_nat_shiftr(x_54, x_55);
-lean_dec(x_55);
-lean_dec(x_54);
-return x_56;
+lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; 
+x_53 = lean_ctor_get(x_3, 1);
+x_54 = lean_ctor_get(x_3, 2);
+x_55 = lean_ctor_get(x_3, 3);
+x_56 = l_Std_Tactic_BVDecide_BVExpr_eval(x_1, x_2, x_54);
+x_57 = l_Std_Tactic_BVDecide_BVExpr_eval(x_53, x_2, x_55);
+x_58 = lean_nat_shiftr(x_56, x_57);
+lean_dec(x_57);
+lean_dec(x_56);
+return x_58;
 }
 default: 
 {
-lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; 
-x_57 = lean_ctor_get(x_3, 1);
-x_58 = lean_ctor_get(x_3, 2);
-x_59 = lean_ctor_get(x_3, 3);
-x_60 = l_Std_Tactic_BVDecide_BVExpr_eval(x_1, x_2, x_58);
-x_61 = l_Std_Tactic_BVDecide_BVExpr_eval(x_57, x_2, x_59);
-x_62 = l_BitVec_sshiftRight(x_1, x_60, x_61);
-lean_dec(x_61);
-return x_62;
+lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; lean_object* x_64; 
+x_59 = lean_ctor_get(x_3, 1);
+x_60 = lean_ctor_get(x_3, 2);
+x_61 = lean_ctor_get(x_3, 3);
+x_62 = l_Std_Tactic_BVDecide_BVExpr_eval(x_1, x_2, x_60);
+x_63 = l_Std_Tactic_BVDecide_BVExpr_eval(x_59, x_2, x_61);
+x_64 = l_BitVec_sshiftRight(x_1, x_62, x_63);
+lean_dec(x_63);
+return x_64;
 }
 }
 }
@@ -1792,6 +1808,299 @@ lean_dec(x_1);
 return x_4;
 }
 }
+LEAN_EXPORT lean_object* l___private_Std_Tactic_BVDecide_Bitblast_BVExpr_Basic_0__Std_Tactic_BVDecide_BVExpr_toString_match__1_splitter___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, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14) {
+_start:
+{
+switch (lean_obj_tag(x_2)) {
+case 0:
+{
+lean_object* x_15; lean_object* x_16; 
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+x_15 = lean_ctor_get(x_2, 1);
+lean_inc(x_15);
+lean_dec(x_2);
+x_16 = lean_apply_2(x_3, x_1, x_15);
+return x_16;
+}
+case 1:
+{
+lean_object* x_17; lean_object* x_18; 
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_3);
+x_17 = lean_ctor_get(x_2, 1);
+lean_inc(x_17);
+lean_dec(x_2);
+x_18 = lean_apply_2(x_4, x_1, x_17);
+return x_18;
+}
+case 2:
+{
+lean_object* x_19; lean_object* x_20; lean_object* x_21; 
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_4);
+lean_dec(x_3);
+x_19 = lean_ctor_get(x_2, 0);
+lean_inc(x_19);
+x_20 = lean_ctor_get(x_2, 2);
+lean_inc(x_20);
+lean_dec(x_2);
+x_21 = lean_apply_3(x_5, x_1, x_19, x_20);
+return x_21;
+}
+case 3:
+{
+lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; 
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_22 = lean_ctor_get(x_2, 0);
+lean_inc(x_22);
+x_23 = lean_ctor_get(x_2, 1);
+lean_inc(x_23);
+x_24 = lean_ctor_get(x_2, 3);
+lean_inc(x_24);
+lean_dec(x_2);
+x_25 = lean_apply_4(x_6, x_1, x_22, x_23, x_24);
+return x_25;
+}
+case 4:
+{
+lean_object* x_26; uint8_t x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; 
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_26 = lean_ctor_get(x_2, 1);
+lean_inc(x_26);
+x_27 = lean_ctor_get_uint8(x_2, sizeof(void*)*3);
+x_28 = lean_ctor_get(x_2, 2);
+lean_inc(x_28);
+lean_dec(x_2);
+x_29 = lean_box(x_27);
+x_30 = lean_apply_4(x_7, x_1, x_26, x_29, x_28);
+return x_30;
+}
+case 5:
+{
+lean_object* x_31; lean_object* x_32; lean_object* x_33; 
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_31 = lean_ctor_get(x_2, 1);
+lean_inc(x_31);
+x_32 = lean_ctor_get(x_2, 2);
+lean_inc(x_32);
+lean_dec(x_2);
+x_33 = lean_apply_3(x_8, x_1, x_31, x_32);
+return x_33;
+}
+case 6:
+{
+lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; 
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_8);
+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_34 = lean_ctor_get(x_2, 0);
+lean_inc(x_34);
+x_35 = lean_ctor_get(x_2, 1);
+lean_inc(x_35);
+x_36 = lean_ctor_get(x_2, 2);
+lean_inc(x_36);
+x_37 = lean_ctor_get(x_2, 3);
+lean_inc(x_37);
+lean_dec(x_2);
+x_38 = lean_apply_4(x_9, x_34, x_35, x_36, x_37);
+return x_38;
+}
+case 7:
+{
+lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; 
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_9);
+lean_dec(x_8);
+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_39 = lean_ctor_get(x_2, 0);
+lean_inc(x_39);
+x_40 = lean_ctor_get(x_2, 1);
+lean_inc(x_40);
+x_41 = lean_ctor_get(x_2, 2);
+lean_inc(x_41);
+lean_dec(x_2);
+x_42 = lean_apply_3(x_10, x_39, x_40, x_41);
+return x_42;
+}
+case 8:
+{
+lean_object* x_43; lean_object* x_44; lean_object* x_45; 
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_43 = lean_ctor_get(x_2, 0);
+lean_inc(x_43);
+x_44 = lean_ctor_get(x_2, 2);
+lean_inc(x_44);
+lean_dec(x_2);
+x_45 = lean_apply_3(x_11, x_1, x_43, x_44);
+return x_45;
+}
+case 9:
+{
+lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; 
+lean_dec(x_14);
+lean_dec(x_13);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+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);
+x_49 = lean_apply_4(x_12, x_1, x_46, x_47, x_48);
+return x_49;
+}
+case 10:
+{
+lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; 
+lean_dec(x_14);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_50 = lean_ctor_get(x_2, 1);
+lean_inc(x_50);
+x_51 = lean_ctor_get(x_2, 2);
+lean_inc(x_51);
+x_52 = lean_ctor_get(x_2, 3);
+lean_inc(x_52);
+lean_dec(x_2);
+x_53 = lean_apply_4(x_13, x_1, x_50, x_51, x_52);
+return x_53;
+}
+default: 
+{
+lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; 
+lean_dec(x_13);
+lean_dec(x_12);
+lean_dec(x_11);
+lean_dec(x_10);
+lean_dec(x_9);
+lean_dec(x_8);
+lean_dec(x_7);
+lean_dec(x_6);
+lean_dec(x_5);
+lean_dec(x_4);
+lean_dec(x_3);
+x_54 = lean_ctor_get(x_2, 1);
+lean_inc(x_54);
+x_55 = lean_ctor_get(x_2, 2);
+lean_inc(x_55);
+x_56 = lean_ctor_get(x_2, 3);
+lean_inc(x_56);
+lean_dec(x_2);
+x_57 = lean_apply_4(x_14, x_1, x_54, x_55, x_56);
+return x_57;
+}
+}
+}
+}
+LEAN_EXPORT lean_object* l___private_Std_Tactic_BVDecide_Bitblast_BVExpr_Basic_0__Std_Tactic_BVDecide_BVExpr_toString_match__1_splitter(lean_object* x_1) {
+_start:
+{
+lean_object* x_2; 
+x_2 = lean_alloc_closure((void*)(l___private_Std_Tactic_BVDecide_Bitblast_BVExpr_Basic_0__Std_Tactic_BVDecide_BVExpr_toString_match__1_splitter___rarg), 14, 0);
+return x_2;
+}
+}
 LEAN_EXPORT lean_object* l_Std_Tactic_BVDecide_BVBinPred_toCtorIdx(uint8_t x_1) {
 _start:
 {
diff --git a/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BVExpr/Circuit/Impl.c b/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BVExpr/Circuit/Impl.c
index ff6920005991..b29681c9a7c3 100644
--- a/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BVExpr/Circuit/Impl.c
+++ b/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BVExpr/Circuit/Impl.c
@@ -19,8 +19,8 @@ lean_object* l_Std_Sat_AIG_mkAndCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_
 LEAN_EXPORT lean_object* l_Std_Sat_AIG_Cache_empty___at_Std_Tactic_BVDecide_BVLogicalExpr_bitblast___spec__3(lean_object*);
 LEAN_EXPORT lean_object* l_Std_Sat_AIG_empty___at_Std_Tactic_BVDecide_BVLogicalExpr_bitblast___spec__2;
 lean_object* l_Std_Sat_AIG_mkConstCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_blastMul_go___spec__4(lean_object*, uint8_t);
+lean_object* l_Std_Sat_AIG_mkOrCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_blastMul_go___spec__26(lean_object*, lean_object*);
 lean_object* l_Nat_nextPowerOfTwo_go(lean_object*, lean_object*, lean_object*);
-LEAN_EXPORT lean_object* l_Std_Sat_AIG_mkImpCached___at_Std_Tactic_BVDecide_BVLogicalExpr_bitblast___spec__5(lean_object*, lean_object*);
 static lean_object* l_Std_Sat_AIG_Cache_empty___at_Std_Tactic_BVDecide_BVLogicalExpr_bitblast___spec__3___closed__1;
 lean_object* l_Std_Sat_AIG_mkNotCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_blastMul_go___spec__30(lean_object*, lean_object*);
 static lean_object* l_Std_Sat_AIG_Cache_empty___at_Std_Tactic_BVDecide_BVLogicalExpr_bitblast___spec__3___closed__2;
@@ -28,7 +28,6 @@ lean_object* l_Std_Sat_AIG_mkXorCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_
 static lean_object* l_Std_Sat_AIG_empty___at_Std_Tactic_BVDecide_BVLogicalExpr_bitblast___spec__2___closed__2;
 lean_object* l_Std_Tactic_BVDecide_instDecidableEqBVBit___boxed(lean_object*, lean_object*);
 static lean_object* l_Std_Sat_AIG_empty___at_Std_Tactic_BVDecide_BVLogicalExpr_bitblast___spec__2___closed__1;
-lean_object* l_Std_Sat_AIG_mkGateCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_blastMul_go___spec__21(lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Std_Tactic_BVDecide_ofBoolExprCached___at_Std_Tactic_BVDecide_BVLogicalExpr_bitblast___spec__1(lean_object*);
 lean_object* l_Std_Sat_AIG_mkIfCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_blastMul_go___spec__29(lean_object*, lean_object*);
 lean_object* l_Std_Tactic_BVDecide_BVPred_bitblast(lean_object*, lean_object*);
@@ -106,95 +105,6 @@ lean_ctor_set(x_3, 1, x_2);
 return x_3;
 }
 }
-LEAN_EXPORT lean_object* l_Std_Sat_AIG_mkImpCached___at_Std_Tactic_BVDecide_BVLogicalExpr_bitblast___spec__5(lean_object* x_1, lean_object* x_2) {
-_start:
-{
-uint8_t x_3; 
-x_3 = !lean_is_exclusive(x_2);
-if (x_3 == 0)
-{
-lean_object* x_4; lean_object* x_5; uint8_t x_6; lean_object* x_7; 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_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; 
-x_4 = lean_ctor_get(x_2, 0);
-x_5 = lean_ctor_get(x_2, 1);
-x_6 = 0;
-x_7 = lean_alloc_ctor(0, 1, 1);
-lean_ctor_set(x_7, 0, x_4);
-lean_ctor_set_uint8(x_7, sizeof(void*)*1, x_6);
-x_8 = 1;
-x_9 = lean_alloc_ctor(0, 1, 1);
-lean_ctor_set(x_9, 0, x_5);
-lean_ctor_set_uint8(x_9, sizeof(void*)*1, x_8);
-lean_ctor_set(x_2, 1, x_9);
-lean_ctor_set(x_2, 0, x_7);
-x_10 = l_Std_Sat_AIG_mkGateCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_blastMul_go___spec__21(x_1, x_2);
-x_11 = lean_ctor_get(x_10, 0);
-lean_inc(x_11);
-x_12 = lean_ctor_get(x_10, 1);
-lean_inc(x_12);
-lean_dec(x_10);
-x_13 = l_Std_Sat_AIG_mkConstCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_blastMul_go___spec__4(x_11, x_8);
-x_14 = lean_ctor_get(x_13, 0);
-lean_inc(x_14);
-x_15 = lean_ctor_get(x_13, 1);
-lean_inc(x_15);
-lean_dec(x_13);
-x_16 = lean_alloc_ctor(0, 1, 1);
-lean_ctor_set(x_16, 0, x_15);
-lean_ctor_set_uint8(x_16, sizeof(void*)*1, x_6);
-x_17 = lean_alloc_ctor(0, 1, 1);
-lean_ctor_set(x_17, 0, x_12);
-lean_ctor_set_uint8(x_17, sizeof(void*)*1, x_8);
-x_18 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_18, 0, x_16);
-lean_ctor_set(x_18, 1, x_17);
-x_19 = l_Std_Sat_AIG_mkGateCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_blastMul_go___spec__21(x_14, x_18);
-return x_19;
-}
-else
-{
-lean_object* x_20; lean_object* x_21; uint8_t x_22; lean_object* x_23; uint8_t x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; 
-x_20 = lean_ctor_get(x_2, 0);
-x_21 = lean_ctor_get(x_2, 1);
-lean_inc(x_21);
-lean_inc(x_20);
-lean_dec(x_2);
-x_22 = 0;
-x_23 = lean_alloc_ctor(0, 1, 1);
-lean_ctor_set(x_23, 0, x_20);
-lean_ctor_set_uint8(x_23, sizeof(void*)*1, x_22);
-x_24 = 1;
-x_25 = lean_alloc_ctor(0, 1, 1);
-lean_ctor_set(x_25, 0, x_21);
-lean_ctor_set_uint8(x_25, sizeof(void*)*1, x_24);
-x_26 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_26, 0, x_23);
-lean_ctor_set(x_26, 1, x_25);
-x_27 = l_Std_Sat_AIG_mkGateCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_blastMul_go___spec__21(x_1, x_26);
-x_28 = lean_ctor_get(x_27, 0);
-lean_inc(x_28);
-x_29 = lean_ctor_get(x_27, 1);
-lean_inc(x_29);
-lean_dec(x_27);
-x_30 = l_Std_Sat_AIG_mkConstCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_blastMul_go___spec__4(x_28, x_24);
-x_31 = lean_ctor_get(x_30, 0);
-lean_inc(x_31);
-x_32 = lean_ctor_get(x_30, 1);
-lean_inc(x_32);
-lean_dec(x_30);
-x_33 = lean_alloc_ctor(0, 1, 1);
-lean_ctor_set(x_33, 0, x_32);
-lean_ctor_set_uint8(x_33, sizeof(void*)*1, x_22);
-x_34 = lean_alloc_ctor(0, 1, 1);
-lean_ctor_set(x_34, 0, x_29);
-lean_ctor_set_uint8(x_34, sizeof(void*)*1, x_24);
-x_35 = lean_alloc_ctor(0, 2, 0);
-lean_ctor_set(x_35, 0, x_33);
-lean_ctor_set(x_35, 1, x_34);
-x_36 = l_Std_Sat_AIG_mkGateCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_blastMul_go___spec__21(x_31, x_35);
-return x_36;
-}
-}
-}
 LEAN_EXPORT lean_object* l_Std_Tactic_BVDecide_ofBoolExprCached_go___at_Std_Tactic_BVDecide_BVLogicalExpr_bitblast___spec__4(lean_object* x_1, lean_object* x_2) {
 _start:
 {
@@ -275,7 +185,7 @@ return x_23;
 default: 
 {
 lean_object* x_24; 
-x_24 = l_Std_Sat_AIG_mkImpCached___at_Std_Tactic_BVDecide_BVLogicalExpr_bitblast___spec__5(x_20, x_18);
+x_24 = l_Std_Sat_AIG_mkOrCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_blastMul_go___spec__26(x_20, x_18);
 return x_24;
 }
 }
@@ -313,7 +223,7 @@ return x_30;
 default: 
 {
 lean_object* x_31; 
-x_31 = l_Std_Sat_AIG_mkImpCached___at_Std_Tactic_BVDecide_BVLogicalExpr_bitblast___spec__5(x_25, x_27);
+x_31 = l_Std_Sat_AIG_mkOrCached___at_Std_Tactic_BVDecide_BVExpr_bitblast_blastMul_go___spec__26(x_25, x_27);
 return x_31;
 }
 }
diff --git a/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BoolExpr/Basic.c b/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BoolExpr/Basic.c
index e133806a9ba6..4a385e9178b4 100644
--- a/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BoolExpr/Basic.c
+++ b/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BoolExpr/Basic.c
@@ -167,7 +167,7 @@ static lean_object* _init_l_Std_Tactic_BVDecide_Gate_toString___closed__4() {
 _start:
 {
 lean_object* x_1; 
-x_1 = lean_mk_string_unchecked("->", 2, 2);
+x_1 = lean_mk_string_unchecked("||", 2, 2);
 return x_1;
 }
 }
@@ -277,13 +277,13 @@ return x_3;
 {
 if (x_2 == 0)
 {
-uint8_t x_9; 
-x_9 = 1;
-return x_9;
+return x_3;
 }
 else
 {
-return x_3;
+uint8_t x_9; 
+x_9 = 1;
+return x_9;
 }
 }
 }
diff --git a/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BoolExpr/Circuit.c b/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BoolExpr/Circuit.c
index 4123ead36f6e..47fd7b04a769 100644
--- a/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BoolExpr/Circuit.c
+++ b/stage0/stdlib/Std/Tactic/BVDecide/Bitblast/BoolExpr/Circuit.c
@@ -16,7 +16,6 @@ extern "C" {
 lean_object* l_Std_Sat_AIG_mkNotCached___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Std_Sat_AIG_mkXorCached___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Std_Sat_AIG_mkBEqCached___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
-lean_object* l_Std_Sat_AIG_mkImpCached___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Std_Tactic_BVDecide_ofBoolExprCached_go___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 lean_object* l_Std_Sat_AIG_mkIfCached___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l___private_Std_Tactic_BVDecide_Bitblast_BoolExpr_Circuit_0__Std_Tactic_BVDecide_ofBoolExprCached_go_match__3_splitter___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
@@ -25,6 +24,7 @@ LEAN_EXPORT lean_object* l___private_Std_Tactic_BVDecide_Bitblast_BoolExpr_Circu
 lean_object* l_Std_Sat_AIG_mkConstCached___rarg(lean_object*, lean_object*, lean_object*, uint8_t);
 LEAN_EXPORT lean_object* l_Std_Tactic_BVDecide_ofBoolExprCached___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Std_Tactic_BVDecide_ofBoolExprCached_go(lean_object*);
+lean_object* l_Std_Sat_AIG_mkOrCached___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Std_Tactic_BVDecide_ofBoolExprCached(lean_object*);
 lean_object* l_Std_Sat_AIG_mkAndCached___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
 LEAN_EXPORT lean_object* l_Std_Tactic_BVDecide_ofBoolExprCached_go___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, lean_object* x_7) {
@@ -117,7 +117,7 @@ return x_28;
 default: 
 {
 lean_object* x_29; 
-x_29 = l_Std_Sat_AIG_mkImpCached___rarg(x_1, x_2, x_25, x_23);
+x_29 = l_Std_Sat_AIG_mkOrCached___rarg(x_1, x_2, x_25, x_23);
 return x_29;
 }
 }
@@ -155,7 +155,7 @@ return x_35;
 default: 
 {
 lean_object* x_36; 
-x_36 = l_Std_Sat_AIG_mkImpCached___rarg(x_1, x_2, x_30, x_32);
+x_36 = l_Std_Sat_AIG_mkOrCached___rarg(x_1, x_2, x_30, x_32);
 return x_36;
 }
 }