diff --git a/stage0/src/Lean/Elab/Extra.lean b/stage0/src/Lean/Elab/Extra.lean index 875761fb21..8a6aca48cb 100644 --- a/stage0/src/Lean/Elab/Extra.lean +++ b/stage0/src/Lean/Elab/Extra.lean @@ -136,7 +136,7 @@ there is no coercion `Matrix Real 5 4` from `Matrix Real 4 8` and vice-versa, bu private inductive Tree where | term (ref : Syntax) (val : Expr) - | op (ref : Syntax) (f : Expr) (lhs rhs : Tree) + | op (ref : Syntax) (lazy : Bool) (f : Expr) (lhs rhs : Tree) private partial def toTree (s : Syntax) : TermElabM Tree := do let result ← go (← liftMacroM <| expandMacros s) @@ -145,13 +145,16 @@ private partial def toTree (s : Syntax) : TermElabM Tree := do where go (s : Syntax) := do match s with - | `(binop% $f $lhs $rhs) => - let some f ← resolveId? f | throwUnknownConstant f.getId - return Tree.op s f (← go lhs) (← go rhs) + | `(binop% $f $lhs $rhs) => processOp (lazy := false) f lhs rhs + | `(binop_lazy% $f $lhs $rhs) => processOp (lazy := true) f lhs rhs | `(($e)) => (← go e) | _ => return Tree.term s (← elabTerm s none) + processOp (f lhs rhs : Syntax) (lazy : Bool) := do + let some f ← resolveId? f | throwUnknownConstant f.getId + return Tree.op s (lazy := lazy) f (← go lhs) (← go rhs) + -- Auxiliary function used at `analyze` private def hasCoe (fromType toType : Expr) : TermElabM Bool := do if (← getEnv).contains ``CoeHTCT then @@ -188,7 +191,7 @@ where go (t : Tree) : StateRefT AnalyzeResult TermElabM Unit := do unless (← get).hasUncomparable do match t with - | Tree.op _ _ lhs rhs => go lhs; go rhs + | Tree.op _ _ _ lhs rhs => go lhs; go rhs | Tree.term _ val => let type ← instantiateMVars (← inferType val) unless isUnknow type do @@ -209,15 +212,16 @@ private def mkOp (f : Expr) (lhs rhs : Expr) : TermElabM Expr := private def toExpr (t : Tree) : TermElabM Expr := do match t with - | Tree.term _ e => return e - | Tree.op ref f lhs rhs => withRef ref <| mkOp f (← toExpr lhs) (← toExpr rhs) + | Tree.term _ e => return e + | Tree.op ref true f lhs rhs => withRef ref <| mkOp f (← toExpr lhs) (← mkFunUnit (← toExpr rhs)) + | Tree.op ref false f lhs rhs => withRef ref <| mkOp f (← toExpr lhs) (← toExpr rhs) private def applyCoe (t : Tree) (maxType : Expr) : TermElabM Tree := do go t where go (t : Tree) : TermElabM Tree := do match t with - | Tree.op ref f lhs rhs => return Tree.op ref f (← go lhs) (← go rhs) + | Tree.op ref lazy f lhs rhs => return Tree.op ref lazy f (← go lhs) (← go rhs) | Tree.term ref e => let type ← inferType e trace[Elab.binop] "visiting {e} : {type} =?= {maxType}" @@ -240,6 +244,9 @@ def elabBinOp : TermElab := fun stx expectedType? => do trace[Elab.binop] "result: {result}" ensureHasType expectedType? result +@[builtinTermElab binop_lazy] +def elabBinOpLazy : TermElab := elabBinOp + /-- Decompose `e` into `(r, a, b)`. diff --git a/stage0/src/Lean/Meta/Basic.lean b/stage0/src/Lean/Meta/Basic.lean index dae40c7380..528a3e4b47 100644 --- a/stage0/src/Lean/Meta/Basic.lean +++ b/stage0/src/Lean/Meta/Basic.lean @@ -481,6 +481,10 @@ def mkLetFVars (xs : Array Expr) (e : Expr) (usedLetOnly := true) : MetaM Expr : def mkArrow (d b : Expr) : MetaM Expr := return Lean.mkForall (← mkFreshUserName `x) BinderInfo.default d b +/-- `fun _ : Unit => a` -/ +def mkFunUnit (a : Expr) : MetaM Expr := + return Lean.mkLambda (← mkFreshUserName `x) BinderInfo.default (mkConst ``Unit) a + def elimMVarDeps (xs : Array Expr) (e : Expr) (preserveOrder : Bool := false) : MetaM Expr := if xs.isEmpty then pure e else liftMkBindingM <| MetavarContext.elimMVarDeps xs e preserveOrder diff --git a/stage0/stdlib/Lean/Elab/Extra.c b/stage0/stdlib/Lean/Elab/Extra.c index 91cb900f05..c2cadebfd4 100644 --- a/stage0/stdlib/Lean/Elab/Extra.c +++ b/stage0/stdlib/Lean/Elab/Extra.c @@ -31,6 +31,7 @@ lean_object* l_Lean_registerTraceClass(lean_object*, lean_object*); lean_object* l_Lean_Elab_Term_elabForIn(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Elab_Term_elabForIn_getMonad___closed__4; lean_object* l_Lean_stringToMessageData(lean_object*); +static lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__5; lean_object* lean_mk_empty_array_with_capacity(lean_object*); static lean_object* l_Std_Range_forIn_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__2___closed__7; lean_object* l_Lean_mkSort(lean_object*); @@ -39,11 +40,14 @@ static lean_object* l_Lean_Elab_Term_elabForIn___lambda__1___closed__4; lean_object* l_Lean_Elab_Term_BinOp_elabBinCalc_match__6___rarg(lean_object*, lean_object*); extern lean_object* l_Lean_nullKind; static lean_object* l_Lean_Elab_Term_BinOp_elabBinOp___closed__12; +lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* lean_name_mk_string(lean_object*, lean_object*); static lean_object* l_Std_Range_forIn_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__2___closed__3; lean_object* lean_array_uget(lean_object*, size_t); static lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_applyCoe_go___lambda__2___closed__1; static lean_object* l_Lean_Elab_Term_elabForIn___closed__20; +lean_object* l_Lean_Meta_mkFunUnit(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp_match__1(lean_object*); lean_object* l_Lean_MonadRef_mkInfoFromRefPos___at_Lean_Elab_Term_quoteAutoTactic___spec__1___rarg(lean_object*, lean_object*, lean_object*); static lean_object* l_Std_Range_forIn_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__2___closed__5; lean_object* l_Lean_Meta_mkAppM(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -59,9 +63,9 @@ static lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCa static lean_object* l_Lean_Elab_Term_elabForIn___lambda__1___closed__3; lean_object* l_Lean_addTrace_addTraceOptions(lean_object*); uint8_t l_Lean_checkTraceOption(lean_object*, lean_object*); +lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp___spec__1___boxed(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_Elab_Term_BinOp_elabBinOp___closed__21; -lean_object* l_Lean_throwError___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Elab_Term_BinOp_elabBinOp___closed__8; lean_object* l_Lean_Elab_Term_BinOp_elabBinOp___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_Lean_Elab_Term_elabForIn___lambda__1___closed__5; @@ -83,6 +87,7 @@ lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_isUnknow___boxe lean_object* l_Lean_Expr_appArg_x21(lean_object*); static lean_object* l_Lean_Elab_Term_elabForIn_throwFailure___closed__2; lean_object* lean_string_utf8_byte_size(lean_object*); +lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Elab_Term_instInhabitedTermElabM(lean_object*); lean_object* l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Elab_Term_getMainModule___rarg(lean_object*, lean_object*); @@ -98,12 +103,11 @@ lean_object* lean_nat_add(lean_object*, lean_object*); lean_object* l_Lean_Elab_Term_BinOp_elabBinOp___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_Lean_Elab_Term_elabForIn___closed__19; lean_object* l_Lean_Elab_Term_elabBinRel___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* l_Lean_throwError___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Elab_Term_ensureHasType(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_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__5; static lean_object* l_Std_Range_forIn_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__2___closed__6; static lean_object* l_Lean_Elab_Term_elabBinRel___lambda__3___closed__1; -lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr_match__1___rarg(lean_object*, lean_object*, lean_object*); +lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr_match__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Elab_Term_elabForIn_getMonad_match__1(lean_object*); lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_hasCoe_match__1(lean_object*); static lean_object* l___regBuiltin_Lean_Elab_Term_elabBinRel___closed__5; @@ -145,7 +149,6 @@ lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr_match__1 lean_object* lean_nat_sub(lean_object*, lean_object*); lean_object* l_Std_Range_forIn_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__2___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_Lean_Elab_Term_BinOp_elabBinOp___closed__19; -lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Elab_Term_BinOp_elabBinCalc___closed__1; static lean_object* l_Std_Range_forIn_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__2___closed__8; lean_object* l_Lean_Elab_Term_elabBinRel___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -192,6 +195,7 @@ uint8_t l_Lean_Environment_contains(lean_object*, lean_object*); static lean_object* l_Lean_Elab_Term_elabBinRel___lambda__2___closed__4; static lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_analyze_go___closed__6; lean_object* l_Lean_Elab_Term_BinOp_elabBinCalc_match__5___rarg(lean_object*, lean_object*); +lean_object* l_Lean_throwError___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Elab_Term_BinOp_elabBinCalc_match__5(lean_object*); static lean_object* l_Lean_Elab_Term_BinOp_elabBinOp___lambda__2___closed__2; static lean_object* l_Lean_Elab_Term_elabForIn___closed__23; @@ -207,7 +211,7 @@ extern lean_object* l_Lean_instInhabitedSyntax; lean_object* l_Lean_Elab_Term_elabBinRel___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___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_isUnknow_match__1(lean_object*); -lean_object* l_Lean_Elab_Term_BinOp_initFn____x40_Lean_Elab_Extra___hyg_3845_(lean_object*); +lean_object* l_Lean_Elab_Term_BinOp_initFn____x40_Lean_Elab_Extra___hyg_4004_(lean_object*); lean_object* l_Lean_Elab_Term_elabBinRel(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); uint8_t l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_isUnknow(lean_object*); lean_object* l_Lean_Elab_Term_elabBinRel_match__2(lean_object*); @@ -252,8 +256,8 @@ lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_applyCoe_go___l static lean_object* l_Lean_addTrace___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_analyze_go___spec__2___closed__6; lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1(lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_mkLevelSucc(lean_object*); +lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp___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___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_relation_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); -lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go_match__1(lean_object*); lean_object* l_Lean_Meta_withNewMCtxDepth___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_analyze_go___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); uint8_t lean_nat_dec_le(lean_object*, lean_object*); lean_object* l___regBuiltin_Lean_Elab_Term_elabForIn(lean_object*); @@ -263,6 +267,7 @@ lean_object* l_Lean_Syntax_getArgs(lean_object*); lean_object* l_Lean_Name_append(lean_object*, lean_object*); static lean_object* l_Lean_Elab_Term_BinOp_elabBinOp___closed__7; lean_object* l_Lean_Elab_Term_elabBinRel_match__1___rarg(lean_object*, lean_object*); +lean_object* l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy(lean_object*); lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_analyze_go___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Std_Range_forIn_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___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_panic_fn(lean_object*, lean_object*); @@ -272,11 +277,13 @@ lean_object* l_Lean_Elab_Term_isTypeApp_x3f(lean_object*, lean_object*, lean_obj static lean_object* l_Std_Range_forIn_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__2___closed__1; static lean_object* l_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__3; lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_applyCoe_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*, lean_object*); +static lean_object* l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__2; static lean_object* l___regBuiltin_Lean_Elab_Term_elabBinRel___closed__9; lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_AnalyzeResult_max_x3f___default; lean_object* l___private_Lean_Elab_SyntheticMVars_0__Lean_Elab_Term_withSynthesizeImp___rarg(lean_object*, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l___regBuiltin_Lean_Elab_Term_BinOp_elabBinCalc___closed__5; static lean_object* l_Lean_Elab_Term_elabForIn___closed__21; +static lean_object* l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__1; lean_object* l_Lean_Elab_Term_elabForIn___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___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_analyze___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_analyze_go___closed__7; @@ -286,6 +293,7 @@ static lean_object* l_Lean_Elab_Term_elabForIn___closed__13; lean_object* l_Lean_throwErrorAt___at_Lean_Elab_Term_Quotation_getAntiquotationIds___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Meta_getLevel(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Elab_Term_elabForIn___closed__3; +lean_object* l_Lean_throwError___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Elab_Term_elabType(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*); lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_analyze_go_match__1(lean_object*); @@ -293,6 +301,7 @@ lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_isUnknow_match_ static lean_object* l_Lean_Elab_Term_BinOp_elabBinOp___closed__9; static lean_object* l_Lean_throwUnknownConstant___at_Lean_Elab_Term_elabBinRel___spec__1___closed__4; lean_object* l_Lean_addMessageContextFull___at_Lean_Meta_instAddMessageContextMetaM___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Elab_Term_BinOp_elabBinOpLazy(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Meta_mkArrow(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l___regBuiltin_Lean_Elab_Term_elabBinRel(lean_object*); lean_object* lean_infer_type(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -316,18 +325,19 @@ static lean_object* l_Lean_Elab_Term_elabBinRel___lambda__2___closed__3; lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_hasCoe(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_indentD(lean_object*); lean_object* l_Lean_Elab_Term_tryPostpone(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); -lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Elab_Term_elabForIn___closed__25; lean_object* l_Lean_Meta_mkFreshLevelMVar___rarg(lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Syntax_getArg(lean_object*, lean_object*); static lean_object* l_Lean_Elab_Term_elabBinRel___lambda__2___closed__5; static lean_object* l___regBuiltin_Lean_Elab_Term_elabBinRel___closed__2; +lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp_match__1___rarg(lean_object*, lean_object*, lean_object*); static lean_object* l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOp___closed__2; lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_analyze_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___regBuiltin_Lean_Elab_Term_elabBinRel___closed__13; static lean_object* l_Lean_addTrace___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_analyze_go___spec__2___closed__3; static lean_object* l_Lean_Elab_Term_BinOp_elabBinOp___closed__18; lean_object* l_Lean_Elab_liftMacroM___at_Lean_Elab_Term_elabLetDeclCore___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__6; static lean_object* l_Lean_addTrace___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_analyze_go___spec__2___closed__5; static lean_object* l_Lean_Elab_Term_BinOp_elabBinOp___closed__5; static lean_object* l_Std_Range_forIn_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__2___closed__12; @@ -340,7 +350,8 @@ lean_object* l_Lean_Elab_Term_BinOp_elabBinCalc_match__2(lean_object*); lean_object* l_Lean_indentExpr(lean_object*); static lean_object* l_Lean_Elab_Term_BinOp_elabBinOp___closed__2; static lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__4; -lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__3; +lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Elab_Term_isLocalIdent_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_mkConst(lean_object*, lean_object*); static lean_object* l_Lean_Elab_Term_BinOp_elabBinOp___closed__6; @@ -349,7 +360,6 @@ lean_object* l_Lean_Elab_Term_saveState___rarg(lean_object*, lean_object*, lean_ static lean_object* l_Lean_Elab_Term_elabForIn___closed__24; static lean_object* l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOp___closed__3; static lean_object* l_Lean_Elab_Term_elabForIn_getMonad___closed__1; -lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go_match__1___rarg(lean_object*, lean_object*, lean_object*); static lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_hasCoe___closed__1; static lean_object* l___regBuiltin_Lean_Elab_Term_elabBinRel___closed__1; lean_object* l_Lean_Elab_Term_elabForIn_throwFailure(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -4393,7 +4403,7 @@ x_6 = l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(x_2, x_3, x_4, x_5, x_1); return x_6; } } -lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go_match__1___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3) { +lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp_match__1___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3) { _start: { if (lean_obj_tag(x_1) == 0) @@ -4415,15 +4425,380 @@ return x_6; } } } -lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go_match__1(lean_object* x_1) { +lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp_match__1(lean_object* x_1) { _start: { lean_object* x_2; -x_2 = lean_alloc_closure((void*)(l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go_match__1___rarg), 3, 0); +x_2 = lean_alloc_closure((void*)(l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp_match__1___rarg), 3, 0); return x_2; } } -lean_object* l_Lean_throwError___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_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) { +static lean_object* _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string("binop"); +return x_1; +} +} +static lean_object* _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__2() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = l___regBuiltin_Lean_Elab_Term_elabBinRel___closed__6; +x_2 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__1; +x_3 = lean_name_mk_string(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__3() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string("binop_lazy"); +return x_1; +} +} +static lean_object* _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__4() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = l___regBuiltin_Lean_Elab_Term_elabBinRel___closed__6; +x_2 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__3; +x_3 = lean_name_mk_string(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__5() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string("paren"); +return x_1; +} +} +static lean_object* _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__6() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = l___regBuiltin_Lean_Elab_Term_elabBinRel___closed__6; +x_2 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__5; +x_3 = lean_name_mk_string(x_1, x_2); +return x_3; +} +} +lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_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) { +_start: +{ +lean_object* x_10; uint8_t x_11; +x_10 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__2; +lean_inc(x_2); +x_11 = l_Lean_Syntax_isOfKind(x_2, x_10); +if (x_11 == 0) +{ +lean_object* x_12; uint8_t x_13; +x_12 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__4; +lean_inc(x_2); +x_13 = l_Lean_Syntax_isOfKind(x_2, x_12); +if (x_13 == 0) +{ +lean_object* x_14; uint8_t x_15; +x_14 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__6; +lean_inc(x_2); +x_15 = l_Lean_Syntax_isOfKind(x_2, x_14); +if (x_15 == 0) +{ +lean_object* x_16; uint8_t x_17; lean_object* x_18; +lean_dec(x_1); +x_16 = lean_box(0); +x_17 = 1; +lean_inc(x_2); +x_18 = l_Lean_Elab_Term_elabTerm(x_2, x_16, x_17, x_17, x_3, x_4, x_5, x_6, x_7, x_8, x_9); +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; lean_object* x_21; +x_20 = lean_ctor_get(x_18, 0); +x_21 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_21, 0, x_2); +lean_ctor_set(x_21, 1, x_20); +lean_ctor_set(x_18, 0, x_21); +return x_18; +} +else +{ +lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; +x_22 = lean_ctor_get(x_18, 0); +x_23 = lean_ctor_get(x_18, 1); +lean_inc(x_23); +lean_inc(x_22); +lean_dec(x_18); +x_24 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_24, 0, x_2); +lean_ctor_set(x_24, 1, x_22); +x_25 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_25, 0, x_24); +lean_ctor_set(x_25, 1, x_23); +return x_25; +} +} +else +{ +uint8_t x_26; +lean_dec(x_2); +x_26 = !lean_is_exclusive(x_18); +if (x_26 == 0) +{ +return x_18; +} +else +{ +lean_object* x_27; lean_object* x_28; lean_object* x_29; +x_27 = lean_ctor_get(x_18, 0); +x_28 = lean_ctor_get(x_18, 1); +lean_inc(x_28); +lean_inc(x_27); +lean_dec(x_18); +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; +} +} +} +else +{ +lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; uint8_t x_34; +x_30 = lean_unsigned_to_nat(1u); +x_31 = l_Lean_Syntax_getArg(x_2, x_30); +x_32 = l_Lean_nullKind; +x_33 = lean_unsigned_to_nat(2u); +lean_inc(x_31); +x_34 = l_Lean_Syntax_isNodeOf(x_31, x_32, x_33); +if (x_34 == 0) +{ +lean_object* x_35; uint8_t x_36; lean_object* x_37; +lean_dec(x_31); +lean_dec(x_1); +x_35 = lean_box(0); +x_36 = 1; +lean_inc(x_2); +x_37 = l_Lean_Elab_Term_elabTerm(x_2, x_35, x_36, x_36, x_3, x_4, x_5, x_6, x_7, x_8, x_9); +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; lean_object* x_40; +x_39 = lean_ctor_get(x_37, 0); +x_40 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_40, 0, x_2); +lean_ctor_set(x_40, 1, x_39); +lean_ctor_set(x_37, 0, x_40); +return x_37; +} +else +{ +lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; +x_41 = lean_ctor_get(x_37, 0); +x_42 = lean_ctor_get(x_37, 1); +lean_inc(x_42); +lean_inc(x_41); +lean_dec(x_37); +x_43 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_43, 0, x_2); +lean_ctor_set(x_43, 1, x_41); +x_44 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_44, 0, x_43); +lean_ctor_set(x_44, 1, x_42); +return x_44; +} +} +else +{ +uint8_t x_45; +lean_dec(x_2); +x_45 = !lean_is_exclusive(x_37); +if (x_45 == 0) +{ +return x_37; +} +else +{ +lean_object* x_46; lean_object* x_47; lean_object* x_48; +x_46 = lean_ctor_get(x_37, 0); +x_47 = lean_ctor_get(x_37, 1); +lean_inc(x_47); +lean_inc(x_46); +lean_dec(x_37); +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; lean_object* x_51; uint8_t x_52; +x_49 = lean_unsigned_to_nat(0u); +x_50 = l_Lean_Syntax_getArg(x_31, x_49); +x_51 = l_Lean_Syntax_getArg(x_31, x_30); +lean_dec(x_31); +x_52 = l_Lean_Syntax_isNodeOf(x_51, x_32, x_49); +if (x_52 == 0) +{ +lean_object* x_53; uint8_t x_54; lean_object* x_55; +lean_dec(x_50); +lean_dec(x_1); +x_53 = lean_box(0); +x_54 = 1; +lean_inc(x_2); +x_55 = l_Lean_Elab_Term_elabTerm(x_2, x_53, x_54, x_54, x_3, x_4, x_5, x_6, x_7, x_8, x_9); +if (lean_obj_tag(x_55) == 0) +{ +uint8_t x_56; +x_56 = !lean_is_exclusive(x_55); +if (x_56 == 0) +{ +lean_object* x_57; lean_object* x_58; +x_57 = lean_ctor_get(x_55, 0); +x_58 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_58, 0, x_2); +lean_ctor_set(x_58, 1, x_57); +lean_ctor_set(x_55, 0, x_58); +return x_55; +} +else +{ +lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; +x_59 = lean_ctor_get(x_55, 0); +x_60 = lean_ctor_get(x_55, 1); +lean_inc(x_60); +lean_inc(x_59); +lean_dec(x_55); +x_61 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_61, 0, x_2); +lean_ctor_set(x_61, 1, x_59); +x_62 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_62, 0, x_61); +lean_ctor_set(x_62, 1, x_60); +return x_62; +} +} +else +{ +uint8_t x_63; +lean_dec(x_2); +x_63 = !lean_is_exclusive(x_55); +if (x_63 == 0) +{ +return x_55; +} +else +{ +lean_object* x_64; lean_object* x_65; lean_object* x_66; +x_64 = lean_ctor_get(x_55, 0); +x_65 = lean_ctor_get(x_55, 1); +lean_inc(x_65); +lean_inc(x_64); +lean_dec(x_55); +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_dec(x_2); +x_67 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go(x_1, x_50, x_3, x_4, x_5, x_6, x_7, x_8, x_9); +if (lean_obj_tag(x_67) == 0) +{ +uint8_t x_68; +x_68 = !lean_is_exclusive(x_67); +if (x_68 == 0) +{ +return x_67; +} +else +{ +lean_object* x_69; lean_object* x_70; lean_object* x_71; +x_69 = lean_ctor_get(x_67, 0); +x_70 = lean_ctor_get(x_67, 1); +lean_inc(x_70); +lean_inc(x_69); +lean_dec(x_67); +x_71 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_71, 0, x_69); +lean_ctor_set(x_71, 1, x_70); +return x_71; +} +} +else +{ +uint8_t x_72; +x_72 = !lean_is_exclusive(x_67); +if (x_72 == 0) +{ +return x_67; +} +else +{ +lean_object* x_73; lean_object* x_74; lean_object* x_75; +x_73 = lean_ctor_get(x_67, 0); +x_74 = lean_ctor_get(x_67, 1); +lean_inc(x_74); +lean_inc(x_73); +lean_dec(x_67); +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_object* x_78; lean_object* x_79; lean_object* x_80; lean_object* x_81; uint8_t x_82; lean_object* x_83; +x_76 = lean_unsigned_to_nat(1u); +x_77 = l_Lean_Syntax_getArg(x_2, x_76); +x_78 = lean_unsigned_to_nat(2u); +x_79 = l_Lean_Syntax_getArg(x_2, x_78); +x_80 = lean_unsigned_to_nat(3u); +x_81 = l_Lean_Syntax_getArg(x_2, x_80); +lean_dec(x_2); +x_82 = 1; +x_83 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp(x_1, x_77, x_79, x_81, x_82, x_3, x_4, x_5, x_6, x_7, x_8, x_9); +return x_83; +} +} +else +{ +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_84 = lean_unsigned_to_nat(1u); +x_85 = l_Lean_Syntax_getArg(x_2, x_84); +x_86 = lean_unsigned_to_nat(2u); +x_87 = l_Lean_Syntax_getArg(x_2, x_86); +x_88 = lean_unsigned_to_nat(3u); +x_89 = l_Lean_Syntax_getArg(x_2, x_88); +lean_dec(x_2); +x_90 = 0; +x_91 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp(x_1, x_85, x_87, x_89, x_90, x_3, x_4, x_5, x_6, x_7, x_8, x_9); +return x_91; +} +} +} +lean_object* l_Lean_throwError___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp___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) { _start: { 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; uint8_t x_16; @@ -4471,7 +4846,7 @@ return x_22; } } } -lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_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* l_Lean_throwUnknownConstant___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp___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; 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; @@ -4487,520 +4862,211 @@ x_14 = l_Lean_throwUnknownConstant___at_Lean_Elab_Term_elabBinRel___spec__1___cl x_15 = lean_alloc_ctor(10, 2, 0); lean_ctor_set(x_15, 0, x_13); lean_ctor_set(x_15, 1, x_14); -x_16 = l_Lean_throwError___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___spec__2(x_15, x_2, x_3, x_4, x_5, x_6, x_7, x_8); +x_16 = l_Lean_throwError___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp___spec__2(x_15, x_2, x_3, x_4, x_5, x_6, x_7, x_8); return x_16; } } -static lean_object* _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__1() { +lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp(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, lean_object* x_10, lean_object* x_11, lean_object* x_12) { _start: { -lean_object* x_1; -x_1 = lean_mk_string("binop"); -return x_1; -} -} -static lean_object* _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__2() { -_start: -{ -lean_object* x_1; lean_object* x_2; lean_object* x_3; -x_1 = l___regBuiltin_Lean_Elab_Term_elabBinRel___closed__6; -x_2 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__1; -x_3 = lean_name_mk_string(x_1, x_2); -return x_3; -} -} -static lean_object* _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__3() { -_start: -{ -lean_object* x_1; -x_1 = lean_mk_string("paren"); -return x_1; -} -} -static lean_object* _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__4() { -_start: -{ -lean_object* x_1; lean_object* x_2; lean_object* x_3; -x_1 = l___regBuiltin_Lean_Elab_Term_elabBinRel___closed__6; -x_2 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__3; -x_3 = lean_name_mk_string(x_1, x_2); -return x_3; -} -} -lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_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) { -_start: -{ -lean_object* x_9; uint8_t x_10; -x_9 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__2; -lean_inc(x_1); -x_10 = l_Lean_Syntax_isOfKind(x_1, x_9); -if (x_10 == 0) -{ -lean_object* x_11; uint8_t x_12; -x_11 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__4; -lean_inc(x_1); -x_12 = l_Lean_Syntax_isOfKind(x_1, x_11); -if (x_12 == 0) -{ lean_object* x_13; uint8_t x_14; lean_object* x_15; -x_13 = lean_box(0); -x_14 = 1; -lean_inc(x_1); -x_15 = l_Lean_Elab_Term_elabTerm(x_1, x_13, x_14, x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8); +x_13 = l_Lean_Elab_Term_elabBinRel___closed__1; +x_14 = 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_2); +x_15 = l_Lean_Elab_Term_resolveId_x3f(x_2, x_13, x_14, x_6, x_7, x_8, x_9, x_10, x_11, x_12); 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_16; +x_16 = lean_ctor_get(x_15, 0); +lean_inc(x_16); +if (lean_obj_tag(x_16) == 0) { -lean_object* x_17; lean_object* x_18; -x_17 = lean_ctor_get(x_15, 0); -x_18 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_18, 0, x_1); -lean_ctor_set(x_18, 1, x_17); -lean_ctor_set(x_15, 0, x_18); -return x_15; +lean_object* x_17; lean_object* x_18; lean_object* x_19; +lean_dec(x_4); +lean_dec(x_3); +lean_dec(x_1); +x_17 = lean_ctor_get(x_15, 1); +lean_inc(x_17); +lean_dec(x_15); +x_18 = l_Lean_Syntax_getId(x_2); +lean_dec(x_2); +x_19 = l_Lean_throwUnknownConstant___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp___spec__1(x_18, x_6, x_7, x_8, x_9, x_10, x_11, x_17); +lean_dec(x_11); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_8); +lean_dec(x_7); +return x_19; } else { -lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; -x_19 = lean_ctor_get(x_15, 0); +lean_object* x_20; lean_object* x_21; lean_object* x_22; +lean_dec(x_2); x_20 = lean_ctor_get(x_15, 1); lean_inc(x_20); -lean_inc(x_19); lean_dec(x_15); -x_21 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_21, 0, x_1); -lean_ctor_set(x_21, 1, x_19); -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; +x_21 = lean_ctor_get(x_16, 0); +lean_inc(x_21); +lean_dec(x_16); +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_1); +x_22 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go(x_1, x_3, x_6, x_7, x_8, x_9, x_10, x_11, x_20); +if (lean_obj_tag(x_22) == 0) +{ +lean_object* x_23; lean_object* x_24; lean_object* x_25; +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); +lean_inc(x_1); +x_25 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go(x_1, x_4, x_6, x_7, x_8, x_9, x_10, x_11, x_24); +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; +x_27 = lean_ctor_get(x_25, 0); +x_28 = lean_alloc_ctor(1, 4, 1); +lean_ctor_set(x_28, 0, x_1); +lean_ctor_set(x_28, 1, x_21); +lean_ctor_set(x_28, 2, x_23); +lean_ctor_set(x_28, 3, x_27); +lean_ctor_set_uint8(x_28, sizeof(void*)*4, x_5); +lean_ctor_set(x_25, 0, x_28); +return x_25; +} +else +{ +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_dec(x_25); +x_31 = lean_alloc_ctor(1, 4, 1); +lean_ctor_set(x_31, 0, x_1); +lean_ctor_set(x_31, 1, x_21); +lean_ctor_set(x_31, 2, x_23); +lean_ctor_set(x_31, 3, x_29); +lean_ctor_set_uint8(x_31, sizeof(void*)*4, x_5); +x_32 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_32, 0, x_31); +lean_ctor_set(x_32, 1, x_30); +return x_32; } } else { -uint8_t x_23; +uint8_t x_33; +lean_dec(x_23); +lean_dec(x_21); lean_dec(x_1); -x_23 = !lean_is_exclusive(x_15); -if (x_23 == 0) +x_33 = !lean_is_exclusive(x_25); +if (x_33 == 0) +{ +return x_25; +} +else +{ +lean_object* x_34; lean_object* x_35; lean_object* x_36; +x_34 = lean_ctor_get(x_25, 0); +x_35 = lean_ctor_get(x_25, 1); +lean_inc(x_35); +lean_inc(x_34); +lean_dec(x_25); +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_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_4); +lean_dec(x_1); +x_37 = !lean_is_exclusive(x_22); +if (x_37 == 0) +{ +return x_22; +} +else +{ +lean_object* x_38; lean_object* x_39; lean_object* x_40; +x_38 = lean_ctor_get(x_22, 0); +x_39 = lean_ctor_get(x_22, 1); +lean_inc(x_39); +lean_inc(x_38); +lean_dec(x_22); +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_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_41 = !lean_is_exclusive(x_15); +if (x_41 == 0) { return x_15; } else { -lean_object* x_24; lean_object* x_25; lean_object* x_26; -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_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_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; uint8_t x_31; -x_27 = lean_unsigned_to_nat(1u); -x_28 = l_Lean_Syntax_getArg(x_1, x_27); -x_29 = l_Lean_nullKind; -x_30 = lean_unsigned_to_nat(2u); -lean_inc(x_28); -x_31 = l_Lean_Syntax_isNodeOf(x_28, x_29, x_30); -if (x_31 == 0) -{ -lean_object* x_32; uint8_t x_33; lean_object* x_34; -lean_dec(x_28); -x_32 = lean_box(0); -x_33 = 1; -lean_inc(x_1); -x_34 = l_Lean_Elab_Term_elabTerm(x_1, x_32, x_33, x_33, x_2, x_3, x_4, x_5, x_6, x_7, x_8); -if (lean_obj_tag(x_34) == 0) -{ -uint8_t x_35; -x_35 = !lean_is_exclusive(x_34); -if (x_35 == 0) -{ -lean_object* x_36; lean_object* x_37; -x_36 = lean_ctor_get(x_34, 0); -x_37 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_37, 0, x_1); -lean_ctor_set(x_37, 1, x_36); -lean_ctor_set(x_34, 0, x_37); -return x_34; -} -else -{ -lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; -x_38 = lean_ctor_get(x_34, 0); -x_39 = lean_ctor_get(x_34, 1); -lean_inc(x_39); -lean_inc(x_38); -lean_dec(x_34); -x_40 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_40, 0, x_1); -lean_ctor_set(x_40, 1, x_38); -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; -} -} -else -{ -uint8_t x_42; -lean_dec(x_1); -x_42 = !lean_is_exclusive(x_34); -if (x_42 == 0) -{ -return x_34; -} -else -{ -lean_object* x_43; lean_object* x_44; lean_object* x_45; -x_43 = lean_ctor_get(x_34, 0); -x_44 = lean_ctor_get(x_34, 1); -lean_inc(x_44); +lean_object* x_42; lean_object* x_43; lean_object* x_44; +x_42 = lean_ctor_get(x_15, 0); +x_43 = lean_ctor_get(x_15, 1); lean_inc(x_43); -lean_dec(x_34); -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 -{ -lean_object* x_46; lean_object* x_47; lean_object* x_48; uint8_t x_49; -x_46 = lean_unsigned_to_nat(0u); -x_47 = l_Lean_Syntax_getArg(x_28, x_46); -x_48 = l_Lean_Syntax_getArg(x_28, x_27); -lean_dec(x_28); -x_49 = l_Lean_Syntax_isNodeOf(x_48, x_29, x_46); -if (x_49 == 0) -{ -lean_object* x_50; uint8_t x_51; lean_object* x_52; -lean_dec(x_47); -x_50 = lean_box(0); -x_51 = 1; -lean_inc(x_1); -x_52 = l_Lean_Elab_Term_elabTerm(x_1, x_50, x_51, x_51, x_2, x_3, x_4, x_5, x_6, x_7, x_8); -if (lean_obj_tag(x_52) == 0) -{ -uint8_t x_53; -x_53 = !lean_is_exclusive(x_52); -if (x_53 == 0) -{ -lean_object* x_54; lean_object* x_55; -x_54 = lean_ctor_get(x_52, 0); -x_55 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_55, 0, x_1); -lean_ctor_set(x_55, 1, x_54); -lean_ctor_set(x_52, 0, x_55); -return x_52; -} -else -{ -lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; -x_56 = lean_ctor_get(x_52, 0); -x_57 = lean_ctor_get(x_52, 1); -lean_inc(x_57); -lean_inc(x_56); -lean_dec(x_52); -x_58 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_58, 0, x_1); -lean_ctor_set(x_58, 1, x_56); -x_59 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_59, 0, x_58); -lean_ctor_set(x_59, 1, x_57); -return x_59; -} -} -else -{ -uint8_t x_60; -lean_dec(x_1); -x_60 = !lean_is_exclusive(x_52); -if (x_60 == 0) -{ -return x_52; -} -else -{ -lean_object* x_61; lean_object* x_62; lean_object* x_63; -x_61 = lean_ctor_get(x_52, 0); -x_62 = lean_ctor_get(x_52, 1); -lean_inc(x_62); -lean_inc(x_61); -lean_dec(x_52); -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_dec(x_1); -x_64 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go(x_47, x_2, x_3, x_4, x_5, x_6, x_7, x_8); -if (lean_obj_tag(x_64) == 0) -{ -uint8_t x_65; -x_65 = !lean_is_exclusive(x_64); -if (x_65 == 0) -{ -return x_64; -} -else -{ -lean_object* x_66; lean_object* x_67; lean_object* x_68; -x_66 = lean_ctor_get(x_64, 0); -x_67 = lean_ctor_get(x_64, 1); -lean_inc(x_67); -lean_inc(x_66); -lean_dec(x_64); -x_68 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_68, 0, x_66); -lean_ctor_set(x_68, 1, x_67); -return x_68; -} -} -else -{ -uint8_t x_69; -x_69 = !lean_is_exclusive(x_64); -if (x_69 == 0) -{ -return x_64; -} -else -{ -lean_object* x_70; lean_object* x_71; lean_object* x_72; -x_70 = lean_ctor_get(x_64, 0); -x_71 = lean_ctor_get(x_64, 1); -lean_inc(x_71); -lean_inc(x_70); -lean_dec(x_64); -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; +lean_inc(x_42); +lean_dec(x_15); +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_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_73 = lean_unsigned_to_nat(1u); -x_74 = l_Lean_Syntax_getArg(x_1, x_73); -x_75 = lean_unsigned_to_nat(2u); -x_76 = l_Lean_Syntax_getArg(x_1, x_75); -x_77 = lean_unsigned_to_nat(3u); -x_78 = l_Lean_Syntax_getArg(x_1, x_77); -x_79 = l_Lean_Elab_Term_elabBinRel___closed__1; -x_80 = 0; -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_74); -x_81 = l_Lean_Elab_Term_resolveId_x3f(x_74, x_79, x_80, x_2, x_3, x_4, x_5, x_6, x_7, x_8); -if (lean_obj_tag(x_81) == 0) -{ -lean_object* x_82; -x_82 = lean_ctor_get(x_81, 0); -lean_inc(x_82); -if (lean_obj_tag(x_82) == 0) -{ -lean_object* x_83; lean_object* x_84; lean_object* x_85; -lean_dec(x_78); -lean_dec(x_76); -lean_dec(x_1); -x_83 = lean_ctor_get(x_81, 1); -lean_inc(x_83); -lean_dec(x_81); -x_84 = l_Lean_Syntax_getId(x_74); -lean_dec(x_74); -x_85 = l_Lean_throwUnknownConstant___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___spec__1(x_84, x_2, x_3, x_4, x_5, x_6, x_7, x_83); -lean_dec(x_7); -lean_dec(x_6); -lean_dec(x_5); -lean_dec(x_4); -lean_dec(x_3); -return x_85; -} -else -{ -lean_object* x_86; lean_object* x_87; lean_object* x_88; -lean_dec(x_74); -x_86 = lean_ctor_get(x_81, 1); -lean_inc(x_86); -lean_dec(x_81); -x_87 = lean_ctor_get(x_82, 0); -lean_inc(x_87); -lean_dec(x_82); -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_88 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go(x_76, x_2, x_3, x_4, x_5, x_6, x_7, x_86); -if (lean_obj_tag(x_88) == 0) -{ -lean_object* x_89; lean_object* x_90; lean_object* x_91; -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_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go(x_78, x_2, x_3, x_4, x_5, x_6, x_7, x_90); -if (lean_obj_tag(x_91) == 0) -{ -uint8_t x_92; -x_92 = !lean_is_exclusive(x_91); -if (x_92 == 0) -{ -lean_object* x_93; lean_object* x_94; -x_93 = lean_ctor_get(x_91, 0); -x_94 = lean_alloc_ctor(1, 4, 0); -lean_ctor_set(x_94, 0, x_1); -lean_ctor_set(x_94, 1, x_87); -lean_ctor_set(x_94, 2, x_89); -lean_ctor_set(x_94, 3, x_93); -lean_ctor_set(x_91, 0, x_94); -return x_91; -} -else -{ -lean_object* x_95; lean_object* x_96; lean_object* x_97; lean_object* x_98; -x_95 = lean_ctor_get(x_91, 0); -x_96 = lean_ctor_get(x_91, 1); -lean_inc(x_96); -lean_inc(x_95); -lean_dec(x_91); -x_97 = lean_alloc_ctor(1, 4, 0); -lean_ctor_set(x_97, 0, x_1); -lean_ctor_set(x_97, 1, x_87); -lean_ctor_set(x_97, 2, x_89); -lean_ctor_set(x_97, 3, x_95); -x_98 = lean_alloc_ctor(0, 2, 0); -lean_ctor_set(x_98, 0, x_97); -lean_ctor_set(x_98, 1, x_96); -return x_98; -} -} -else -{ -uint8_t x_99; -lean_dec(x_89); -lean_dec(x_87); -lean_dec(x_1); -x_99 = !lean_is_exclusive(x_91); -if (x_99 == 0) -{ -return x_91; -} -else -{ -lean_object* x_100; lean_object* x_101; lean_object* x_102; -x_100 = lean_ctor_get(x_91, 0); -x_101 = lean_ctor_get(x_91, 1); -lean_inc(x_101); -lean_inc(x_100); -lean_dec(x_91); -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_87); -lean_dec(x_78); -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_88); -if (x_103 == 0) -{ -return x_88; -} -else -{ -lean_object* x_104; lean_object* x_105; lean_object* x_106; -x_104 = lean_ctor_get(x_88, 0); -x_105 = lean_ctor_get(x_88, 1); -lean_inc(x_105); -lean_inc(x_104); -lean_dec(x_88); -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_78); -lean_dec(x_76); -lean_dec(x_74); -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_81); -if (x_107 == 0) -{ -return x_81; -} -else -{ -lean_object* x_108; lean_object* x_109; lean_object* x_110; -x_108 = lean_ctor_get(x_81, 0); -x_109 = lean_ctor_get(x_81, 1); -lean_inc(x_109); -lean_inc(x_108); -lean_dec(x_81); -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; -} -} -} -} -} -lean_object* l_Lean_throwError___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_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* l_Lean_throwError___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp___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) { _start: { lean_object* x_9; -x_9 = l_Lean_throwError___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___spec__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8); +x_9 = l_Lean_throwError___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp___spec__2(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); @@ -5009,11 +5075,11 @@ lean_dec(x_3); return x_9; } } -lean_object* l_Lean_throwUnknownConstant___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_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* l_Lean_throwUnknownConstant___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp___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_throwUnknownConstant___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___spec__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8); +x_9 = l_Lean_throwUnknownConstant___at___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp___spec__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); @@ -5022,10 +5088,21 @@ lean_dec(x_3); return x_9; } } +lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, 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_5); +lean_dec(x_5); +x_14 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_processOp(x_1, x_2, x_3, x_4, x_13, x_6, x_7, x_8, x_9, x_10, x_11, x_12); +return x_14; +} +} lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree(lean_object* x_1, lean_object* x_2, 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_inc(x_1); x_9 = lean_alloc_closure((void*)(l_Lean_expandMacros), 3, 1); lean_closure_set(x_9, 0, x_1); lean_inc(x_7); @@ -5049,7 +5126,7 @@ lean_inc(x_5); lean_inc(x_4); lean_inc(x_3); lean_inc(x_2); -x_13 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go(x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_12); +x_13 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go(x_1, x_11, x_2, x_3, x_4, x_5, x_6, x_7, x_12); if (lean_obj_tag(x_13) == 0) { lean_object* x_14; lean_object* x_15; uint8_t x_16; uint8_t x_17; lean_object* x_18; lean_object* x_19; @@ -5148,6 +5225,7 @@ 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_10); if (x_32 == 0) { @@ -5875,19 +5953,21 @@ return x_6; } else { -lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; +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_dec(x_3); x_7 = lean_ctor_get(x_1, 0); lean_inc(x_7); -x_8 = lean_ctor_get(x_1, 1); -lean_inc(x_8); -x_9 = lean_ctor_get(x_1, 2); +x_8 = lean_ctor_get_uint8(x_1, sizeof(void*)*4); +x_9 = lean_ctor_get(x_1, 1); lean_inc(x_9); -x_10 = lean_ctor_get(x_1, 3); +x_10 = lean_ctor_get(x_1, 2); lean_inc(x_10); +x_11 = lean_ctor_get(x_1, 3); +lean_inc(x_11); lean_dec(x_1); -x_11 = lean_apply_4(x_2, x_7, x_8, x_9, x_10); -return x_11; +x_12 = lean_box(x_8); +x_13 = lean_apply_5(x_2, x_7, x_12, x_9, x_10, x_11); +return x_13; } } } @@ -8366,36 +8446,59 @@ x_19 = l_Lean_Elab_Term_elabAppArgs(x_1, x_17, x_15, x_16, x_18, x_18, x_4, x_5, return x_19; } } -lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr_match__1___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3) { +lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr_match__1___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) { _start: { if (lean_obj_tag(x_1) == 0) { -lean_object* x_4; lean_object* x_5; lean_object* x_6; +lean_object* x_5; lean_object* x_6; lean_object* x_7; +lean_dec(x_4); lean_dec(x_3); -x_4 = lean_ctor_get(x_1, 0); -lean_inc(x_4); -x_5 = lean_ctor_get(x_1, 1); +x_5 = lean_ctor_get(x_1, 0); lean_inc(x_5); +x_6 = lean_ctor_get(x_1, 1); +lean_inc(x_6); lean_dec(x_1); -x_6 = lean_apply_2(x_2, x_4, x_5); -return x_6; +x_7 = lean_apply_2(x_2, x_5, x_6); +return x_7; } else { -lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; +uint8_t x_8; lean_dec(x_2); -x_7 = lean_ctor_get(x_1, 0); -lean_inc(x_7); -x_8 = lean_ctor_get(x_1, 1); -lean_inc(x_8); -x_9 = lean_ctor_get(x_1, 2); +x_8 = lean_ctor_get_uint8(x_1, sizeof(void*)*4); +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_dec(x_3); +x_9 = lean_ctor_get(x_1, 0); lean_inc(x_9); -x_10 = lean_ctor_get(x_1, 3); +x_10 = lean_ctor_get(x_1, 1); lean_inc(x_10); +x_11 = lean_ctor_get(x_1, 2); +lean_inc(x_11); +x_12 = lean_ctor_get(x_1, 3); +lean_inc(x_12); lean_dec(x_1); -x_11 = lean_apply_4(x_3, x_7, x_8, x_9, x_10); -return x_11; +x_13 = lean_apply_4(x_4, x_9, x_10, x_11, x_12); +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_dec(x_4); +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); +lean_dec(x_1); +x_18 = lean_apply_4(x_3, x_14, x_15, x_16, x_17); +return x_18; +} } } } @@ -8403,7 +8506,7 @@ lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr_match__1 _start: { lean_object* x_2; -x_2 = lean_alloc_closure((void*)(l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr_match__1___rarg), 3, 0); +x_2 = lean_alloc_closure((void*)(l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr_match__1___rarg), 4, 0); return x_2; } } @@ -8429,15 +8532,19 @@ return x_10; } else { -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, 1); +uint8_t x_11; +x_11 = lean_ctor_get_uint8(x_1, sizeof(void*)*4); +if (x_11 == 0) +{ +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_1, 0); lean_inc(x_12); -x_13 = lean_ctor_get(x_1, 2); +x_13 = lean_ctor_get(x_1, 1); lean_inc(x_13); -x_14 = lean_ctor_get(x_1, 3); +x_14 = lean_ctor_get(x_1, 2); lean_inc(x_14); +x_15 = lean_ctor_get(x_1, 3); +lean_inc(x_15); lean_dec(x_1); lean_inc(x_7); lean_inc(x_6); @@ -8445,53 +8552,54 @@ lean_inc(x_5); lean_inc(x_4); lean_inc(x_3); lean_inc(x_2); -x_15 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr(x_13, x_2, x_3, x_4, x_5, x_6, x_7, x_8); -if (lean_obj_tag(x_15) == 0) +x_16 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr(x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_8); +if (lean_obj_tag(x_16) == 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_17; lean_object* x_18; lean_object* x_19; +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); 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_18 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr(x_14, x_2, x_3, x_4, x_5, x_6, x_7, x_17); -if (lean_obj_tag(x_18) == 0) +x_19 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr(x_15, x_2, x_3, x_4, x_5, x_6, x_7, x_18); +if (lean_obj_tag(x_19) == 0) { -lean_object* x_19; lean_object* x_20; uint8_t x_21; -x_19 = lean_ctor_get(x_18, 0); -lean_inc(x_19); -x_20 = lean_ctor_get(x_18, 1); +lean_object* x_20; lean_object* x_21; uint8_t x_22; +x_20 = lean_ctor_get(x_19, 0); lean_inc(x_20); -lean_dec(x_18); -x_21 = !lean_is_exclusive(x_6); -if (x_21 == 0) +x_21 = lean_ctor_get(x_19, 1); +lean_inc(x_21); +lean_dec(x_19); +x_22 = !lean_is_exclusive(x_6); +if (x_22 == 0) { -lean_object* x_22; lean_object* x_23; lean_object* x_24; -x_22 = lean_ctor_get(x_6, 3); -x_23 = l_Lean_replaceRef(x_11, x_22); -lean_dec(x_22); -lean_dec(x_11); -lean_ctor_set(x_6, 3, x_23); -x_24 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_mkOp(x_12, x_16, x_19, x_2, x_3, x_4, x_5, x_6, x_7, x_20); -return x_24; +lean_object* x_23; lean_object* x_24; lean_object* x_25; +x_23 = lean_ctor_get(x_6, 3); +x_24 = l_Lean_replaceRef(x_12, x_23); +lean_dec(x_23); +lean_dec(x_12); +lean_ctor_set(x_6, 3, x_24); +x_25 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_mkOp(x_13, x_17, x_20, x_2, x_3, x_4, x_5, x_6, x_7, x_21); +return x_25; } 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; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; -x_25 = lean_ctor_get(x_6, 0); -x_26 = lean_ctor_get(x_6, 1); -x_27 = lean_ctor_get(x_6, 2); -x_28 = lean_ctor_get(x_6, 3); -x_29 = lean_ctor_get(x_6, 4); -x_30 = lean_ctor_get(x_6, 5); -x_31 = lean_ctor_get(x_6, 6); -x_32 = lean_ctor_get(x_6, 7); +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_26 = lean_ctor_get(x_6, 0); +x_27 = lean_ctor_get(x_6, 1); +x_28 = lean_ctor_get(x_6, 2); +x_29 = lean_ctor_get(x_6, 3); +x_30 = lean_ctor_get(x_6, 4); +x_31 = lean_ctor_get(x_6, 5); +x_32 = lean_ctor_get(x_6, 6); +x_33 = lean_ctor_get(x_6, 7); +lean_inc(x_33); lean_inc(x_32); lean_inc(x_31); lean_inc(x_30); @@ -8499,85 +8607,245 @@ lean_inc(x_29); lean_inc(x_28); lean_inc(x_27); lean_inc(x_26); -lean_inc(x_25); lean_dec(x_6); -x_33 = l_Lean_replaceRef(x_11, x_28); -lean_dec(x_28); -lean_dec(x_11); -x_34 = lean_alloc_ctor(0, 8, 0); -lean_ctor_set(x_34, 0, x_25); -lean_ctor_set(x_34, 1, x_26); -lean_ctor_set(x_34, 2, x_27); -lean_ctor_set(x_34, 3, x_33); -lean_ctor_set(x_34, 4, x_29); -lean_ctor_set(x_34, 5, x_30); -lean_ctor_set(x_34, 6, x_31); -lean_ctor_set(x_34, 7, x_32); -x_35 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_mkOp(x_12, x_16, x_19, x_2, x_3, x_4, x_5, x_34, x_7, x_20); -return x_35; +x_34 = l_Lean_replaceRef(x_12, x_29); +lean_dec(x_29); +lean_dec(x_12); +x_35 = lean_alloc_ctor(0, 8, 0); +lean_ctor_set(x_35, 0, x_26); +lean_ctor_set(x_35, 1, x_27); +lean_ctor_set(x_35, 2, x_28); +lean_ctor_set(x_35, 3, x_34); +lean_ctor_set(x_35, 4, x_30); +lean_ctor_set(x_35, 5, x_31); +lean_ctor_set(x_35, 6, x_32); +lean_ctor_set(x_35, 7, x_33); +x_36 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_mkOp(x_13, x_17, x_20, x_2, x_3, x_4, x_5, x_35, x_7, x_21); +return x_36; } } else { -uint8_t x_36; -lean_dec(x_16); +uint8_t x_37; +lean_dec(x_17); +lean_dec(x_13); lean_dec(x_12); -lean_dec(x_11); 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_36 = !lean_is_exclusive(x_18); -if (x_36 == 0) +x_37 = !lean_is_exclusive(x_19); +if (x_37 == 0) { -return x_18; +return x_19; } else { -lean_object* x_37; lean_object* x_38; lean_object* x_39; -x_37 = lean_ctor_get(x_18, 0); -x_38 = lean_ctor_get(x_18, 1); +lean_object* x_38; lean_object* x_39; lean_object* x_40; +x_38 = lean_ctor_get(x_19, 0); +x_39 = lean_ctor_get(x_19, 1); +lean_inc(x_39); lean_inc(x_38); -lean_inc(x_37); -lean_dec(x_18); -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_19); +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_40; -lean_dec(x_14); +uint8_t x_41; +lean_dec(x_15); +lean_dec(x_13); lean_dec(x_12); -lean_dec(x_11); 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_15); -if (x_40 == 0) +x_41 = !lean_is_exclusive(x_16); +if (x_41 == 0) { -return x_15; +return x_16; } else { -lean_object* x_41; lean_object* x_42; lean_object* x_43; -x_41 = lean_ctor_get(x_15, 0); -x_42 = lean_ctor_get(x_15, 1); +lean_object* x_42; lean_object* x_43; lean_object* x_44; +x_42 = lean_ctor_get(x_16, 0); +x_43 = lean_ctor_get(x_16, 1); +lean_inc(x_43); lean_inc(x_42); -lean_inc(x_41); -lean_dec(x_15); -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_16); +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_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; +x_45 = lean_ctor_get(x_1, 0); +lean_inc(x_45); +x_46 = lean_ctor_get(x_1, 1); +lean_inc(x_46); +x_47 = lean_ctor_get(x_1, 2); +lean_inc(x_47); +x_48 = lean_ctor_get(x_1, 3); +lean_inc(x_48); +lean_dec(x_1); +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_49 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr(x_47, x_2, x_3, x_4, x_5, x_6, x_7, x_8); +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); +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_52 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toExpr(x_48, x_2, x_3, x_4, x_5, x_6, x_7, 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; uint8_t x_58; +x_53 = lean_ctor_get(x_52, 0); +lean_inc(x_53); +x_54 = lean_ctor_get(x_52, 1); +lean_inc(x_54); +lean_dec(x_52); +x_55 = l_Lean_Meta_mkFunUnit(x_53, x_4, x_5, x_6, x_7, x_54); +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 = !lean_is_exclusive(x_6); +if (x_58 == 0) +{ +lean_object* x_59; lean_object* x_60; lean_object* x_61; +x_59 = lean_ctor_get(x_6, 3); +x_60 = l_Lean_replaceRef(x_45, x_59); +lean_dec(x_59); +lean_dec(x_45); +lean_ctor_set(x_6, 3, x_60); +x_61 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_mkOp(x_46, x_50, x_56, x_2, x_3, x_4, x_5, x_6, x_7, x_57); +return x_61; +} +else +{ +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; +x_62 = lean_ctor_get(x_6, 0); +x_63 = lean_ctor_get(x_6, 1); +x_64 = lean_ctor_get(x_6, 2); +x_65 = lean_ctor_get(x_6, 3); +x_66 = lean_ctor_get(x_6, 4); +x_67 = lean_ctor_get(x_6, 5); +x_68 = lean_ctor_get(x_6, 6); +x_69 = lean_ctor_get(x_6, 7); +lean_inc(x_69); +lean_inc(x_68); +lean_inc(x_67); +lean_inc(x_66); +lean_inc(x_65); +lean_inc(x_64); +lean_inc(x_63); +lean_inc(x_62); +lean_dec(x_6); +x_70 = l_Lean_replaceRef(x_45, x_65); +lean_dec(x_65); +lean_dec(x_45); +x_71 = lean_alloc_ctor(0, 8, 0); +lean_ctor_set(x_71, 0, x_62); +lean_ctor_set(x_71, 1, x_63); +lean_ctor_set(x_71, 2, x_64); +lean_ctor_set(x_71, 3, x_70); +lean_ctor_set(x_71, 4, x_66); +lean_ctor_set(x_71, 5, x_67); +lean_ctor_set(x_71, 6, x_68); +lean_ctor_set(x_71, 7, x_69); +x_72 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_mkOp(x_46, x_50, x_56, x_2, x_3, x_4, x_5, x_71, x_7, x_57); +return x_72; +} +} +else +{ +uint8_t x_73; +lean_dec(x_50); +lean_dec(x_46); +lean_dec(x_45); +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_73 = !lean_is_exclusive(x_52); +if (x_73 == 0) +{ +return x_52; +} +else +{ +lean_object* x_74; lean_object* x_75; lean_object* x_76; +x_74 = lean_ctor_get(x_52, 0); +x_75 = lean_ctor_get(x_52, 1); +lean_inc(x_75); +lean_inc(x_74); +lean_dec(x_52); +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_77; +lean_dec(x_48); +lean_dec(x_46); +lean_dec(x_45); +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_77 = !lean_is_exclusive(x_49); +if (x_77 == 0) +{ +return x_49; +} +else +{ +lean_object* x_78; lean_object* x_79; lean_object* x_80; +x_78 = lean_ctor_get(x_49, 0); +x_79 = lean_ctor_get(x_49, 1); +lean_inc(x_79); +lean_inc(x_78); +lean_dec(x_49); +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; +} } } } @@ -9247,14 +9515,15 @@ return x_74; } else { -lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; +lean_object* x_75; uint8_t x_76; lean_object* x_77; lean_object* x_78; lean_object* x_79; lean_object* x_80; x_75 = lean_ctor_get(x_2, 0); -x_76 = lean_ctor_get(x_2, 1); -x_77 = lean_ctor_get(x_2, 2); -x_78 = lean_ctor_get(x_2, 3); +x_76 = lean_ctor_get_uint8(x_2, sizeof(void*)*4); +x_77 = lean_ctor_get(x_2, 1); +x_78 = lean_ctor_get(x_2, 2); +x_79 = lean_ctor_get(x_2, 3); +lean_inc(x_79); lean_inc(x_78); lean_inc(x_77); -lean_inc(x_76); lean_inc(x_75); lean_dec(x_2); lean_inc(x_8); @@ -9264,78 +9533,79 @@ lean_inc(x_5); lean_inc(x_4); lean_inc(x_3); lean_inc(x_1); -x_79 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_applyCoe_go(x_1, x_77, x_3, x_4, x_5, x_6, x_7, x_8, x_9); -if (lean_obj_tag(x_79) == 0) +x_80 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_applyCoe_go(x_1, x_78, x_3, x_4, x_5, x_6, x_7, x_8, x_9); +if (lean_obj_tag(x_80) == 0) { -lean_object* x_80; lean_object* x_81; lean_object* x_82; -x_80 = lean_ctor_get(x_79, 0); -lean_inc(x_80); -x_81 = lean_ctor_get(x_79, 1); +lean_object* x_81; lean_object* x_82; lean_object* x_83; +x_81 = lean_ctor_get(x_80, 0); lean_inc(x_81); -lean_dec(x_79); -x_82 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_applyCoe_go(x_1, x_78, x_3, x_4, x_5, x_6, x_7, x_8, 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; lean_object* x_87; -x_83 = lean_ctor_get(x_82, 0); -lean_inc(x_83); -x_84 = lean_ctor_get(x_82, 1); -lean_inc(x_84); -if (lean_is_exclusive(x_82)) { - lean_ctor_release(x_82, 0); - lean_ctor_release(x_82, 1); - x_85 = x_82; -} else { - lean_dec_ref(x_82); - x_85 = lean_box(0); -} -x_86 = lean_alloc_ctor(1, 4, 0); -lean_ctor_set(x_86, 0, x_75); -lean_ctor_set(x_86, 1, x_76); -lean_ctor_set(x_86, 2, x_80); -lean_ctor_set(x_86, 3, x_83); -if (lean_is_scalar(x_85)) { - x_87 = lean_alloc_ctor(0, 2, 0); -} else { - x_87 = x_85; -} -lean_ctor_set(x_87, 0, x_86); -lean_ctor_set(x_87, 1, x_84); -return x_87; -} -else -{ -lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; +x_82 = lean_ctor_get(x_80, 1); +lean_inc(x_82); lean_dec(x_80); -lean_dec(x_76); +x_83 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_applyCoe_go(x_1, x_79, x_3, x_4, x_5, x_6, x_7, x_8, x_82); +if (lean_obj_tag(x_83) == 0) +{ +lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; +x_84 = lean_ctor_get(x_83, 0); +lean_inc(x_84); +x_85 = lean_ctor_get(x_83, 1); +lean_inc(x_85); +if (lean_is_exclusive(x_83)) { + lean_ctor_release(x_83, 0); + lean_ctor_release(x_83, 1); + x_86 = x_83; +} else { + lean_dec_ref(x_83); + x_86 = lean_box(0); +} +x_87 = lean_alloc_ctor(1, 4, 1); +lean_ctor_set(x_87, 0, x_75); +lean_ctor_set(x_87, 1, x_77); +lean_ctor_set(x_87, 2, x_81); +lean_ctor_set(x_87, 3, x_84); +lean_ctor_set_uint8(x_87, sizeof(void*)*4, x_76); +if (lean_is_scalar(x_86)) { + x_88 = lean_alloc_ctor(0, 2, 0); +} else { + x_88 = x_86; +} +lean_ctor_set(x_88, 0, x_87); +lean_ctor_set(x_88, 1, x_85); +return x_88; +} +else +{ +lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; +lean_dec(x_81); +lean_dec(x_77); lean_dec(x_75); -x_88 = lean_ctor_get(x_82, 0); -lean_inc(x_88); -x_89 = lean_ctor_get(x_82, 1); +x_89 = lean_ctor_get(x_83, 0); lean_inc(x_89); -if (lean_is_exclusive(x_82)) { - lean_ctor_release(x_82, 0); - lean_ctor_release(x_82, 1); - x_90 = x_82; +x_90 = lean_ctor_get(x_83, 1); +lean_inc(x_90); +if (lean_is_exclusive(x_83)) { + lean_ctor_release(x_83, 0); + lean_ctor_release(x_83, 1); + x_91 = x_83; } else { - lean_dec_ref(x_82); - x_90 = lean_box(0); + lean_dec_ref(x_83); + x_91 = lean_box(0); } -if (lean_is_scalar(x_90)) { - x_91 = lean_alloc_ctor(1, 2, 0); +if (lean_is_scalar(x_91)) { + x_92 = lean_alloc_ctor(1, 2, 0); } else { - x_91 = x_90; + x_92 = x_91; } -lean_ctor_set(x_91, 0, x_88); -lean_ctor_set(x_91, 1, x_89); -return x_91; +lean_ctor_set(x_92, 0, x_89); +lean_ctor_set(x_92, 1, x_90); +return x_92; } } else { -lean_object* x_92; lean_object* x_93; lean_object* x_94; lean_object* x_95; -lean_dec(x_78); -lean_dec(x_76); +lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; +lean_dec(x_79); +lean_dec(x_77); lean_dec(x_75); lean_dec(x_8); lean_dec(x_7); @@ -9344,26 +9614,26 @@ lean_dec(x_5); lean_dec(x_4); lean_dec(x_3); lean_dec(x_1); -x_92 = lean_ctor_get(x_79, 0); -lean_inc(x_92); -x_93 = lean_ctor_get(x_79, 1); +x_93 = lean_ctor_get(x_80, 0); lean_inc(x_93); -if (lean_is_exclusive(x_79)) { - lean_ctor_release(x_79, 0); - lean_ctor_release(x_79, 1); - x_94 = x_79; +x_94 = lean_ctor_get(x_80, 1); +lean_inc(x_94); +if (lean_is_exclusive(x_80)) { + lean_ctor_release(x_80, 0); + lean_ctor_release(x_80, 1); + x_95 = x_80; } else { - lean_dec_ref(x_79); - x_94 = lean_box(0); + lean_dec_ref(x_80); + x_95 = lean_box(0); } -if (lean_is_scalar(x_94)) { - x_95 = lean_alloc_ctor(1, 2, 0); +if (lean_is_scalar(x_95)) { + x_96 = lean_alloc_ctor(1, 2, 0); } else { - x_95 = x_94; + x_96 = x_95; } -lean_ctor_set(x_95, 0, x_92); -lean_ctor_set(x_95, 1, x_93); -return x_95; +lean_ctor_set(x_96, 0, x_93); +lean_ctor_set(x_96, 1, x_94); +return x_96; } } } @@ -10225,6 +10495,52 @@ x_6 = l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(x_2, x_3, x_4, x_5, x_1); return x_6; } } +lean_object* l_Lean_Elab_Term_BinOp_elabBinOpLazy(lean_object* x_1, lean_object* x_2, lean_object* x_3, 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_Term_BinOp_elabBinOp(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9); +return x_10; +} +} +static lean_object* _init_l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string("elabBinOpLazy"); +return x_1; +} +} +static lean_object* _init_l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__2() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOp___closed__2; +x_2 = l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__1; +x_3 = lean_name_mk_string(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__3() { +_start: +{ +lean_object* x_1; +x_1 = lean_alloc_closure((void*)(l_Lean_Elab_Term_BinOp_elabBinOpLazy), 9, 0); +return x_1; +} +} +lean_object* l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy(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_Lean_Elab_Term_termElabAttribute; +x_3 = l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__4; +x_4 = l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__2; +x_5 = l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__3; +x_6 = l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(x_2, x_3, x_4, x_5, x_1); +return x_6; +} +} lean_object* l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_relation_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) { _start: { @@ -10622,7 +10938,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_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__4; x_2 = l_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__5; -x_3 = lean_unsigned_to_nat(263u); +x_3 = lean_unsigned_to_nat(270u); x_4 = lean_unsigned_to_nat(56u); x_5 = l_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__6; x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5); @@ -11301,7 +11617,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_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__4; x_2 = l_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__5; -x_3 = lean_unsigned_to_nat(273u); +x_3 = lean_unsigned_to_nat(280u); x_4 = lean_unsigned_to_nat(48u); x_5 = l_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__6; x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5); @@ -11314,7 +11630,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_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__4; x_2 = l_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__5; -x_3 = lean_unsigned_to_nat(274u); +x_3 = lean_unsigned_to_nat(281u); x_4 = lean_unsigned_to_nat(67u); x_5 = l_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__6; x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5); @@ -14549,7 +14865,7 @@ x_6 = l_Lean_KeyedDeclsAttribute_addBuiltin___rarg(x_2, x_3, x_4, x_5, x_1); return x_6; } } -lean_object* l_Lean_Elab_Term_BinOp_initFn____x40_Lean_Elab_Extra___hyg_3845_(lean_object* x_1) { +lean_object* l_Lean_Elab_Term_BinOp_initFn____x40_Lean_Elab_Extra___hyg_4004_(lean_object* x_1) { _start: { lean_object* x_2; lean_object* x_3; @@ -14719,6 +15035,10 @@ l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__3 = _ini lean_mark_persistent(l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__3); l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__4 = _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__4(); lean_mark_persistent(l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__4); +l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__5 = _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__5(); +lean_mark_persistent(l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__5); +l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__6 = _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__6(); +lean_mark_persistent(l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_toTree_go___closed__6); l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_hasCoe___closed__1 = _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_hasCoe___closed__1(); lean_mark_persistent(l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_hasCoe___closed__1); l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_hasCoe___closed__2 = _init_l___private_Lean_Elab_Extra_0__Lean_Elab_Term_BinOp_hasCoe___closed__2(); @@ -14831,6 +15151,15 @@ lean_mark_persistent(l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOp___closed__5); res = l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOp(lean_io_mk_world()); if (lean_io_result_is_error(res)) return res; lean_dec_ref(res); +l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__1 = _init_l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__1(); +lean_mark_persistent(l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__1); +l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__2 = _init_l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__2(); +lean_mark_persistent(l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__2); +l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__3 = _init_l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__3(); +lean_mark_persistent(l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy___closed__3); +res = l___regBuiltin_Lean_Elab_Term_BinOp_elabBinOpLazy(lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); l_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__1 = _init_l_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__1(); lean_mark_persistent(l_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__1); l_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__2 = _init_l_Array_forInUnsafe_loop___at_Lean_Elab_Term_BinOp_elabBinCalc___spec__1___closed__2(); @@ -14896,7 +15225,7 @@ lean_mark_persistent(l___regBuiltin_Lean_Elab_Term_BinOp_elabBinCalc___closed__5 res = l___regBuiltin_Lean_Elab_Term_BinOp_elabBinCalc(lean_io_mk_world()); if (lean_io_result_is_error(res)) return res; lean_dec_ref(res); -res = l_Lean_Elab_Term_BinOp_initFn____x40_Lean_Elab_Extra___hyg_3845_(lean_io_mk_world()); +res = l_Lean_Elab_Term_BinOp_initFn____x40_Lean_Elab_Extra___hyg_4004_(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/Basic.c b/stage0/stdlib/Lean/Meta/Basic.c index cdfffb3dd8..20faa14966 100644 --- a/stage0/stdlib/Lean/Meta/Basic.c +++ b/stage0/stdlib/Lean/Meta/Basic.c @@ -74,6 +74,7 @@ lean_object* lean_array_uget(lean_object*, size_t); lean_object* lean_io_error_to_string(lean_object*); lean_object* l___private_Lean_Meta_Basic_0__Lean_Meta_forallMetaTelescopeReducingAux___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Meta_isReadOnlyExprMVar___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Meta_mkFunUnit(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); uint64_t lean_uint64_of_nat(lean_object*); lean_object* l_Lean_ConstantInfo_numLevelParams(lean_object*); static lean_object* l_Lean_getConstInfo___at_Lean_Meta_mkConstWithFreshMVarLevels___spec__1___closed__3; @@ -89,6 +90,7 @@ lean_object* l_Lean_Meta_savingCache(lean_object*); lean_object* l_Lean_Meta_mkConstWithFreshMVarLevels(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Meta_mkFreshExprMVarAt___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_Meta_Basic_0__Lean_Meta_isClassExpensive_x3f_match__1(lean_object*); +static lean_object* l_Lean_Meta_mkFunUnit___closed__1; lean_object* l_Lean_Meta_withMCtx___rarg___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* lean_local_ctx_mk_let_decl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, uint8_t); lean_object* l_Lean_Meta_forallMetaTelescope___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -98,6 +100,7 @@ uint8_t l___private_Lean_Meta_TransparencyMode_0__Lean_Meta_beqTransparencyMode_ lean_object* l_Lean_Meta_ParamInfo_isInstImplicit___boxed(lean_object*); lean_object* l_Lean_Meta_mapError(lean_object*, lean_object*); extern lean_object* l_Lean_maxRecDepthErrorMessage; +lean_object* l_Lean_Meta_mkFunUnit___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Meta_instMonadMetaM___closed__1; lean_object* lean_array_uset(lean_object*, size_t, lean_object*); lean_object* l_Lean_Meta_mkLetFVars(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); @@ -151,6 +154,7 @@ lean_object* l_Lean_Meta_mkFreshExprMVarWithId___boxed(lean_object*, lean_object static lean_object* l_Lean_Meta_instAlternativeMetaM___lambda__1___closed__2; lean_object* l_Lean_Meta_fullApproxDefEq(lean_object*); lean_object* l_Lean_Meta_instAlternativeMetaM___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_Lean_Meta_mkFunUnit___closed__2; lean_object* l_Lean_throwError___at___private_Lean_Meta_Basic_0__Lean_Meta_getConstTemp_x3f___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Meta_withLocalDecls_loop_match__1___rarg(lean_object*, lean_object*); lean_object* l_Array_foldlMUnsafe_fold___at___private_Lean_Meta_Basic_0__Lean_Meta_withNewBinderInfosImp___spec__1(lean_object*, size_t, size_t, lean_object*); @@ -410,6 +414,7 @@ lean_object* l_Lean_Core_getMaxHeartbeats(lean_object*); lean_object* l_Lean_Meta_saveAndResetSynthInstanceCache___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Meta_liftMkBindingM___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Meta_instInhabitedSavedState; +static lean_object* l_Lean_Meta_mkFunUnit___closed__3; lean_object* l_Lean_Meta_instantiateLambda___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); lean_object* l_Lean_Meta_resettingSynthInstanceCacheWhen___rarg(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*); extern lean_object* l_Lean_Expr_instHashableExpr; @@ -471,6 +476,7 @@ lean_object* l_Lean_LocalDecl_toExpr(lean_object*); extern lean_object* l_Lean_firstFrontendMacroScope; lean_object* l_Lean_Meta_getLocalInstances(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); static lean_object* l_Lean_Meta_instInhabitedSavedState___closed__1; +lean_object* l_Lean_mkLambda(lean_object*, uint8_t, lean_object*, lean_object*); lean_object* l_Lean_Meta_ParamInfo_backDeps___default; uint8_t l_Lean_Meta_Config_quasiPatternApprox___default; lean_object* l_Lean_Meta_instAlternativeMetaM; @@ -14713,6 +14719,81 @@ lean_dec(x_3); return x_8; } } +static lean_object* _init_l_Lean_Meta_mkFunUnit___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string("Unit"); +return x_1; +} +} +static lean_object* _init_l_Lean_Meta_mkFunUnit___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_mkFunUnit___closed__1; +x_3 = lean_name_mk_string(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l_Lean_Meta_mkFunUnit___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_mkFunUnit___closed__2; +x_3 = l_Lean_mkConst(x_2, x_1); +return x_3; +} +} +lean_object* l_Lean_Meta_mkFunUnit(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 = l_Lean_Meta_mkArrow___closed__2; +x_8 = l___private_Lean_CoreM_0__Lean_Core_mkFreshNameImp(x_7, x_4, x_5, x_6); +x_9 = !lean_is_exclusive(x_8); +if (x_9 == 0) +{ +lean_object* x_10; uint8_t x_11; lean_object* x_12; lean_object* x_13; +x_10 = lean_ctor_get(x_8, 0); +x_11 = 0; +x_12 = l_Lean_Meta_mkFunUnit___closed__3; +x_13 = l_Lean_mkLambda(x_10, x_11, x_12, x_1); +lean_ctor_set(x_8, 0, x_13); +return x_8; +} +else +{ +lean_object* x_14; lean_object* x_15; uint8_t 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 = 0; +x_17 = l_Lean_Meta_mkFunUnit___closed__3; +x_18 = l_Lean_mkLambda(x_14, x_16, x_17, x_1); +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* l_Lean_Meta_mkFunUnit___boxed(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_Meta_mkFunUnit(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_object* l_Lean_Meta_elimMVarDeps(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: { @@ -29526,6 +29607,12 @@ l_Lean_Meta_mkArrow___closed__1 = _init_l_Lean_Meta_mkArrow___closed__1(); lean_mark_persistent(l_Lean_Meta_mkArrow___closed__1); l_Lean_Meta_mkArrow___closed__2 = _init_l_Lean_Meta_mkArrow___closed__2(); lean_mark_persistent(l_Lean_Meta_mkArrow___closed__2); +l_Lean_Meta_mkFunUnit___closed__1 = _init_l_Lean_Meta_mkFunUnit___closed__1(); +lean_mark_persistent(l_Lean_Meta_mkFunUnit___closed__1); +l_Lean_Meta_mkFunUnit___closed__2 = _init_l_Lean_Meta_mkFunUnit___closed__2(); +lean_mark_persistent(l_Lean_Meta_mkFunUnit___closed__2); +l_Lean_Meta_mkFunUnit___closed__3 = _init_l_Lean_Meta_mkFunUnit___closed__3(); +lean_mark_persistent(l_Lean_Meta_mkFunUnit___closed__3); l___private_Lean_Meta_Basic_0__Lean_Meta_isClassExpensive_x3f___closed__1 = _init_l___private_Lean_Meta_Basic_0__Lean_Meta_isClassExpensive_x3f___closed__1(); lean_mark_persistent(l___private_Lean_Meta_Basic_0__Lean_Meta_isClassExpensive_x3f___closed__1); l_Lean_Meta_getParamNames___lambda__1___boxed__const__1 = _init_l_Lean_Meta_getParamNames___lambda__1___boxed__const__1();