feat(library/init/data/list/basic): tail recursive length
This commit is contained in:
parent
2d55c3f73c
commit
efe64cb2d3
7 changed files with 4372 additions and 4404 deletions
|
|
@ -112,9 +112,12 @@ protected def diff {α} [decidable_eq α] : list α → list α → list α
|
|||
| l [] := l
|
||||
| l₁ (a::l₂) := if a ∈ l₁ then diff (l₁.erase a) l₂ else diff l₁ l₂
|
||||
|
||||
def length : list α → nat
|
||||
| [] := 0
|
||||
| (a :: l) := length l + 1
|
||||
def length_aux : list α → nat → nat
|
||||
| [] n := n
|
||||
| (a::as) n := length_aux as (n+1)
|
||||
|
||||
def length (as : list α) : nat :=
|
||||
length_aux as 0
|
||||
|
||||
def empty : list α → bool
|
||||
| [] := tt
|
||||
|
|
@ -127,11 +130,6 @@ def nth : list α → nat → option α
|
|||
| (a :: l) 0 := some a
|
||||
| (a :: l) (n+1) := nth l n
|
||||
|
||||
def nth_le : Π (l : list α) (n), n < l.length → α
|
||||
| [] n h := absurd h (not_lt_zero n)
|
||||
| (a :: l) 0 h := a
|
||||
| (a :: l) (n+1) h := nth_le l n (le_of_succ_le_succ h)
|
||||
|
||||
def head [inhabited α] : list α → α
|
||||
| [] := default α
|
||||
| (a :: l) := a
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ obj* l_list_empty(obj*);
|
|||
obj* l_list_foldr___main___at_list_any___spec__1___rarg(obj*, obj*);
|
||||
obj* l_list_remove__all___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_repeat___rarg(obj*, obj*);
|
||||
obj* l_list_length__aux(obj*);
|
||||
obj* l_list_inter___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_diff___main___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_assoc(obj*, obj*);
|
||||
|
|
@ -43,8 +44,10 @@ obj* l_list_drop__while___main___rarg(obj*, obj*);
|
|||
obj* l_list_intercalate(obj*);
|
||||
obj* l_list_reverse__core(obj*);
|
||||
obj* l_list_has__dec__eq(obj*);
|
||||
obj* l_list_length__aux___rarg(obj*, obj*);
|
||||
obj* l_list_union(obj*);
|
||||
obj* l_list_bag__inter___rarg(obj*, obj*, obj*);
|
||||
obj* l___private_3066977613__to__list__aux___main(obj*);
|
||||
obj* l_list_bor(obj*);
|
||||
obj* l_list_has__dec__eq___main___rarg___boxed(obj*, obj*, obj*);
|
||||
obj* l_list_assoc___main(obj*, obj*);
|
||||
|
|
@ -52,8 +55,6 @@ obj* l_nat_repeat__core___main___at_list_repeat___spec__1(obj*);
|
|||
obj* l_list_take___main___rarg(obj*, obj*);
|
||||
obj* l_list_init___rarg(obj*);
|
||||
obj* l_list_filter__map___main___rarg(obj*, obj*);
|
||||
obj* l_list_length___main___rarg(obj*);
|
||||
obj* l___private_3578956461__to__list__aux___main(obj*);
|
||||
uint8 l_list_empty___main___rarg(obj*);
|
||||
obj* l_list_filter___main___at_list_inter___spec__1___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_filter___rarg(obj*, obj*);
|
||||
|
|
@ -75,6 +76,7 @@ obj* l_list_enum__from___main___rarg(obj*, obj*);
|
|||
obj* l_list_remove__nth___rarg(obj*, obj*);
|
||||
obj* l_list_foldr1__opt___main(obj*);
|
||||
obj* l_list_unzip___main___rarg___closed__1;
|
||||
obj* l___private_3066977613__to__list__aux___rarg(obj*, obj*);
|
||||
obj* l_list_range__core(obj*, obj*);
|
||||
obj* l_list_tail___rarg(obj*);
|
||||
obj* l_list_has__inter___rarg(obj*);
|
||||
|
|
@ -112,7 +114,6 @@ obj* l_list_range(obj*);
|
|||
obj* l_list_init(obj*);
|
||||
obj* l_list_inhabited(obj*);
|
||||
obj* l_list_last___rarg(obj*, obj*);
|
||||
obj* l___private_3578956461__to__list__aux___main___rarg(obj*, obj*);
|
||||
obj* l_list_has__decidable__lt___rarg___boxed(obj*, obj*, obj*, obj*);
|
||||
obj* l_list_foldl___main(obj*, obj*);
|
||||
obj* l_list_erase(obj*);
|
||||
|
|
@ -140,7 +141,6 @@ obj* l_list_enum__from___main(obj*);
|
|||
obj* l_list_decidable__mem___main___rarg___boxed(obj*, obj*, obj*);
|
||||
obj* l_list_drop___main___rarg(obj*, obj*);
|
||||
obj* l_list_foldr___main___at_list_bor___spec__1(obj*);
|
||||
obj* l___private_3578956461__to__list__aux(obj*);
|
||||
obj* l_list_intersperse___main(obj*);
|
||||
obj* l_list_has__insert(obj*);
|
||||
uint8 l_list_has__dec__eq___rarg(obj*, obj*, obj*);
|
||||
|
|
@ -151,14 +151,12 @@ obj* l_list_filter(obj*, obj*);
|
|||
obj* l_list_ilast___main___rarg(obj*, obj*);
|
||||
obj* l_list_head___main___rarg(obj*, obj*);
|
||||
obj* l_list_foldr___main___at_list_band___spec__1(obj*);
|
||||
obj* l___private_3578956461__to__list__aux___rarg(obj*, obj*);
|
||||
obj* l_list_update__nth___main___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_zip__with___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_iota(obj*);
|
||||
obj* l_list_tail(obj*);
|
||||
obj* l_list_is__prefix__of___main(obj*);
|
||||
obj* l_list_has__mem(obj*);
|
||||
obj* l_list_length___main(obj*);
|
||||
obj* l_list_map_u_2082___main___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_foldl(obj*, obj*);
|
||||
obj* l_list_is__prefix__of___main___rarg(obj*, obj*, obj*);
|
||||
|
|
@ -186,7 +184,6 @@ obj* l_list_intercalate___rarg(obj*, obj*);
|
|||
obj* l_list_all___rarg(obj*, obj*);
|
||||
obj* l_list_foldr___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_intersperse___main___rarg(obj*, obj*);
|
||||
obj* l_list_nth__le(obj*);
|
||||
obj* l_list_zip(obj*, obj*);
|
||||
obj* l_list_foldr1(obj*);
|
||||
obj* l_list_decidable__mem___main(obj*);
|
||||
|
|
@ -198,6 +195,7 @@ obj* l_list_append(obj*);
|
|||
obj* l_list_diff___main(obj*);
|
||||
obj* l_list_update__nth___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_index__of___rarg(obj*, obj*, obj*);
|
||||
obj* l___private_3066977613__to__list__aux___main___rarg(obj*, obj*);
|
||||
obj* l_list_has__decidable__le(obj*);
|
||||
obj* l_list_drop__while(obj*, obj*);
|
||||
obj* l_list_has__le(obj*, obj*);
|
||||
|
|
@ -211,6 +209,7 @@ uint8 l_list_decidable__mem___main___rarg(obj*, obj*, obj*);
|
|||
obj* l_list_has__dec__eq___main(obj*);
|
||||
obj* l_list_empty___main___rarg___boxed(obj*);
|
||||
obj* l_list_take(obj*);
|
||||
obj* l_list_length__aux___main___rarg(obj*, obj*);
|
||||
obj* l_list_find__index___main___rarg(obj*, obj*);
|
||||
obj* l_list_ilast(obj*);
|
||||
obj* l_list_erase___rarg(obj*, obj*, obj*);
|
||||
|
|
@ -225,7 +224,6 @@ obj* l_list_band(obj*);
|
|||
obj* l_list_empty___main(obj*);
|
||||
obj* l_list_join(obj*);
|
||||
obj* l_list_reverse__core___main(obj*);
|
||||
obj* l_list_nth__le___main(obj*);
|
||||
obj* l_list_inter(obj*);
|
||||
obj* l_list_remove__nth___main(obj*);
|
||||
obj* l_list_map(obj*, obj*);
|
||||
|
|
@ -242,8 +240,10 @@ obj* l_list_mem___main;
|
|||
obj* l_list_foldr___main(obj*, obj*);
|
||||
obj* l_list_zip__with(obj*, obj*, obj*);
|
||||
obj* l_list_foldl___rarg(obj*, obj*, obj*);
|
||||
obj* l___private_3066977613__to__list__aux(obj*);
|
||||
obj* l_list_foldr1___main(obj*);
|
||||
obj* l_list_foldr___main___at_list_union___spec__1___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_length__aux___main(obj*);
|
||||
obj* l_list_reverse__core___main___rarg(obj*, obj*);
|
||||
obj* l_list_is__prefix__of___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_take___rarg(obj*, obj*);
|
||||
|
|
@ -252,12 +252,10 @@ obj* l_list_has__decidable__lt___main(obj*);
|
|||
obj* l_list_bind(obj*, obj*);
|
||||
obj* l_list_append___rarg(obj*, obj*);
|
||||
obj* l_list_bag__inter___main___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_nth__le___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_update__nth(obj*);
|
||||
obj* l_list_has__lt(obj*, obj*);
|
||||
obj* l_list_join___main(obj*);
|
||||
obj* l_list_find__index___main___at_list_index__of___spec__1___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_nth__le___main___rarg(obj*, obj*, obj*);
|
||||
obj* l_list_tail___main(obj*);
|
||||
obj* l_list_has__decidable__lt___main___at_list_has__decidable__le___spec__1(obj*);
|
||||
obj* l_list_drop__while___main(obj*, obj*);
|
||||
|
|
@ -908,46 +906,63 @@ x_2 = lean::alloc_closure(reinterpret_cast<void*>(l_list_diff___rarg), 3, 0);
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
obj* l_list_length___main___rarg(obj* x_0) {
|
||||
obj* l_list_length__aux___main___rarg(obj* x_0, obj* x_1) {
|
||||
_start:
|
||||
{
|
||||
if (lean::obj_tag(x_0) == 0)
|
||||
{
|
||||
obj* x_2;
|
||||
lean::dec(x_0);
|
||||
x_2 = lean::mk_nat_obj(0u);
|
||||
return x_2;
|
||||
return x_1;
|
||||
}
|
||||
else
|
||||
{
|
||||
obj* x_3; obj* x_6; obj* x_7; obj* x_8;
|
||||
obj* x_3; obj* x_6; obj* x_7;
|
||||
x_3 = lean::cnstr_get(x_0, 1);
|
||||
lean::inc(x_3);
|
||||
lean::dec(x_0);
|
||||
x_6 = l_list_length___main___rarg(x_3);
|
||||
x_7 = lean::mk_nat_obj(1u);
|
||||
x_8 = lean::nat_add(x_6, x_7);
|
||||
lean::dec(x_7);
|
||||
x_6 = lean::mk_nat_obj(1u);
|
||||
x_7 = lean::nat_add(x_1, x_6);
|
||||
lean::dec(x_6);
|
||||
return x_8;
|
||||
lean::dec(x_1);
|
||||
x_0 = x_3;
|
||||
x_1 = x_7;
|
||||
goto _start;
|
||||
}
|
||||
}
|
||||
}
|
||||
obj* l_list_length___main(obj* x_0) {
|
||||
obj* l_list_length__aux___main(obj* x_0) {
|
||||
_start:
|
||||
{
|
||||
obj* x_2;
|
||||
lean::dec(x_0);
|
||||
x_2 = lean::alloc_closure(reinterpret_cast<void*>(l_list_length___main___rarg), 1, 0);
|
||||
x_2 = lean::alloc_closure(reinterpret_cast<void*>(l_list_length__aux___main___rarg), 2, 0);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
obj* l_list_length__aux___rarg(obj* x_0, obj* x_1) {
|
||||
_start:
|
||||
{
|
||||
obj* x_2;
|
||||
x_2 = l_list_length__aux___main___rarg(x_0, x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
obj* l_list_length__aux(obj* x_0) {
|
||||
_start:
|
||||
{
|
||||
obj* x_2;
|
||||
lean::dec(x_0);
|
||||
x_2 = lean::alloc_closure(reinterpret_cast<void*>(l_list_length__aux___rarg), 2, 0);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
obj* l_list_length___rarg(obj* x_0) {
|
||||
_start:
|
||||
{
|
||||
obj* x_1;
|
||||
x_1 = l_list_length___main___rarg(x_0);
|
||||
return x_1;
|
||||
obj* x_1; obj* x_2;
|
||||
x_1 = lean::mk_nat_obj(0u);
|
||||
x_2 = l_list_length__aux___main___rarg(x_0, x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
obj* l_list_length(obj* x_0) {
|
||||
|
|
@ -1094,67 +1109,6 @@ x_2 = lean::alloc_closure(reinterpret_cast<void*>(l_list_nth___rarg), 2, 0);
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
obj* l_list_nth__le___main___rarg(obj* x_0, obj* x_1, obj* x_2) {
|
||||
_start:
|
||||
{
|
||||
obj* x_4; obj* x_6; obj* x_9; uint8 x_10;
|
||||
lean::dec(x_2);
|
||||
x_4 = lean::cnstr_get(x_0, 0);
|
||||
lean::inc(x_4);
|
||||
x_6 = lean::cnstr_get(x_0, 1);
|
||||
lean::inc(x_6);
|
||||
lean::dec(x_0);
|
||||
x_9 = lean::mk_nat_obj(0u);
|
||||
x_10 = lean::nat_dec_eq(x_1, x_9);
|
||||
lean::dec(x_9);
|
||||
if (x_10 == 0)
|
||||
{
|
||||
obj* x_13; obj* x_14;
|
||||
lean::dec(x_4);
|
||||
x_13 = lean::mk_nat_obj(1u);
|
||||
x_14 = lean::nat_sub(x_1, x_13);
|
||||
lean::dec(x_13);
|
||||
lean::dec(x_1);
|
||||
x_0 = x_6;
|
||||
x_1 = x_14;
|
||||
x_2 = x_0;
|
||||
goto _start;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean::dec(x_6);
|
||||
lean::dec(x_1);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
}
|
||||
obj* l_list_nth__le___main(obj* x_0) {
|
||||
_start:
|
||||
{
|
||||
obj* x_2;
|
||||
lean::dec(x_0);
|
||||
x_2 = lean::alloc_closure(reinterpret_cast<void*>(l_list_nth__le___main___rarg), 3, 0);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
obj* l_list_nth__le___rarg(obj* x_0, obj* x_1, obj* x_2) {
|
||||
_start:
|
||||
{
|
||||
obj* x_4;
|
||||
lean::dec(x_2);
|
||||
x_4 = l_list_nth__le___main___rarg(x_0, x_1, lean::box(0));
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
obj* l_list_nth__le(obj* x_0) {
|
||||
_start:
|
||||
{
|
||||
obj* x_2;
|
||||
lean::dec(x_0);
|
||||
x_2 = lean::alloc_closure(reinterpret_cast<void*>(l_list_nth__le___rarg), 3, 0);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
obj* l_list_head___main___rarg(obj* x_0, obj* x_1) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -4357,7 +4311,7 @@ x_2 = lean::alloc_closure(reinterpret_cast<void*>(l_list_is__suffix__of___rarg),
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
obj* l___private_3578956461__to__list__aux___main___rarg(obj* x_0, obj* x_1) {
|
||||
obj* l___private_3066977613__to__list__aux___main___rarg(obj* x_0, obj* x_1) {
|
||||
_start:
|
||||
{
|
||||
switch (lean::obj_tag(x_0)) {
|
||||
|
|
@ -4385,7 +4339,7 @@ lean::inc(x_7);
|
|||
x_9 = lean::cnstr_get(x_0, 1);
|
||||
lean::inc(x_9);
|
||||
lean::dec(x_0);
|
||||
x_12 = l___private_3578956461__to__list__aux___main___rarg(x_9, x_1);
|
||||
x_12 = l___private_3066977613__to__list__aux___main___rarg(x_9, x_1);
|
||||
x_0 = x_7;
|
||||
x_1 = x_12;
|
||||
goto _start;
|
||||
|
|
@ -4393,29 +4347,29 @@ goto _start;
|
|||
}
|
||||
}
|
||||
}
|
||||
obj* l___private_3578956461__to__list__aux___main(obj* x_0) {
|
||||
obj* l___private_3066977613__to__list__aux___main(obj* x_0) {
|
||||
_start:
|
||||
{
|
||||
obj* x_2;
|
||||
lean::dec(x_0);
|
||||
x_2 = lean::alloc_closure(reinterpret_cast<void*>(l___private_3578956461__to__list__aux___main___rarg), 2, 0);
|
||||
x_2 = lean::alloc_closure(reinterpret_cast<void*>(l___private_3066977613__to__list__aux___main___rarg), 2, 0);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
obj* l___private_3578956461__to__list__aux___rarg(obj* x_0, obj* x_1) {
|
||||
obj* l___private_3066977613__to__list__aux___rarg(obj* x_0, obj* x_1) {
|
||||
_start:
|
||||
{
|
||||
obj* x_2;
|
||||
x_2 = l___private_3578956461__to__list__aux___main___rarg(x_0, x_1);
|
||||
x_2 = l___private_3066977613__to__list__aux___main___rarg(x_0, x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
obj* l___private_3578956461__to__list__aux(obj* x_0) {
|
||||
obj* l___private_3066977613__to__list__aux(obj* x_0) {
|
||||
_start:
|
||||
{
|
||||
obj* x_2;
|
||||
lean::dec(x_0);
|
||||
x_2 = lean::alloc_closure(reinterpret_cast<void*>(l___private_3578956461__to__list__aux___rarg), 2, 0);
|
||||
x_2 = lean::alloc_closure(reinterpret_cast<void*>(l___private_3066977613__to__list__aux___rarg), 2, 0);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
|
|
@ -4424,7 +4378,7 @@ _start:
|
|||
{
|
||||
obj* x_1; obj* x_2;
|
||||
x_1 = lean::box(0);
|
||||
x_2 = l___private_3578956461__to__list__aux___main___rarg(x_0, x_1);
|
||||
x_2 = l___private_3066977613__to__list__aux___main___rarg(x_0, x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ obj* l___private_3344645481__to__nat__core(obj*, obj*, obj*);
|
|||
obj* l_string_iterator_forward(obj*, obj*);
|
||||
obj* l_string_iterator_extract___main___closed__1;
|
||||
obj* l_string_line__column___closed__1;
|
||||
obj* l_list_length___main___rarg(obj*);
|
||||
obj* l_string_singleton(uint32);
|
||||
obj* l_string_pushn(obj*, uint32, obj*);
|
||||
obj* l_list_as__string(obj*);
|
||||
|
|
@ -93,6 +92,7 @@ obj* l_string_iterator_extract__core___main(obj*, obj*);
|
|||
obj* l_string_push___main(obj*, uint32);
|
||||
obj* l_char_to__string(uint32);
|
||||
obj* l_list_map___main___at_string_intercalate___spec__1(obj*);
|
||||
obj* l_list_length__aux___main___rarg(obj*, obj*);
|
||||
obj* l_string_has__sizeof;
|
||||
obj* l_string_to__list(obj*);
|
||||
obj* l_string_trim(obj*);
|
||||
|
|
@ -149,10 +149,11 @@ return x_3;
|
|||
obj* l_string_length___main(obj* x_0) {
|
||||
_start:
|
||||
{
|
||||
obj* x_1; obj* x_2;
|
||||
obj* x_1; obj* x_2; obj* x_3;
|
||||
x_1 = lean::string_data(x_0);
|
||||
x_2 = l_list_length___main___rarg(x_1);
|
||||
return x_2;
|
||||
x_2 = lean::mk_nat_obj(0u);
|
||||
x_3 = l_list_length__aux___main___rarg(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
obj* l_string_push___main(obj* x_0, uint32 x_1) {
|
||||
|
|
@ -222,21 +223,23 @@ return x_3;
|
|||
obj* l_string_iterator_remaining___main(obj* x_0) {
|
||||
_start:
|
||||
{
|
||||
obj* x_1; obj* x_3;
|
||||
obj* x_1; obj* x_3; obj* x_4;
|
||||
x_1 = lean::string_iterator_snd(x_0);
|
||||
lean::dec(x_0);
|
||||
x_3 = l_list_length___main___rarg(x_1);
|
||||
return x_3;
|
||||
x_3 = lean::mk_nat_obj(0u);
|
||||
x_4 = l_list_length__aux___main___rarg(x_1, x_3);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
obj* l_string_iterator_offset___main(obj* x_0) {
|
||||
_start:
|
||||
{
|
||||
obj* x_1; obj* x_3;
|
||||
obj* x_1; obj* x_3; obj* x_4;
|
||||
x_1 = lean::string_iterator_fst(x_0);
|
||||
lean::dec(x_0);
|
||||
x_3 = l_list_length___main___rarg(x_1);
|
||||
return x_3;
|
||||
x_3 = lean::mk_nat_obj(0u);
|
||||
x_4 = l_list_length__aux___main___rarg(x_1, x_3);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
obj* l_string_iterator_curr___main(obj* x_0) {
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -35,7 +35,6 @@ obj* l_lean_ir_check__ne__type___boxed(obj*, obj*, obj*, obj*);
|
|||
obj* l_lean_ir_set__type___boxed(obj*, obj*, obj*, obj*);
|
||||
obj* l_lean_ir_phi_infer__types(obj*, obj*, obj*);
|
||||
obj* l_list_mmap_x_27___main___at_lean_ir_decl_check___main___spec__1(obj*, obj*, obj*);
|
||||
obj* l_list_length___main___rarg(obj*);
|
||||
obj* l_rbnode_insert___at_lean_ir_set__type___spec__2___boxed(obj*, obj*, obj*);
|
||||
obj* l_rbmap_find___main___at_lean_ir_get__type___spec__1(obj*, obj*);
|
||||
obj* l_lean_ir_check__arg__types___main(obj*, obj*, obj*, obj*);
|
||||
|
|
@ -112,6 +111,7 @@ extern obj* l_lean_ir_phi_decorate__error___rarg___lambda__1___closed__1;
|
|||
obj* l_lean_ir_phi_check(obj*, obj*, obj*);
|
||||
obj* l_lean_to__fmt___at_lean_ir_terminator_to__format___main___spec__4(obj*);
|
||||
obj* l_lean_ir_is__nonfloat__arith__ty___boxed(obj*);
|
||||
obj* l_list_length__aux___main___rarg(obj*, obj*);
|
||||
obj* l_rbmap_insert___main___at_lean_ir_set__type___spec__1___boxed(obj*, obj*, obj*);
|
||||
uint8 l_rbnode_get__color___main___rarg(obj*);
|
||||
obj* l_rbnode_find___main___at_lean_ir_get__type___spec__2(obj*);
|
||||
|
|
@ -5125,44 +5125,46 @@ goto lbl_4;
|
|||
}
|
||||
else
|
||||
{
|
||||
obj* x_257; obj* x_260; obj* x_261; obj* x_262; obj* x_266; uint8 x_267;
|
||||
obj* x_257; obj* x_260; obj* x_262; obj* x_263; obj* x_264; obj* x_268; uint8 x_269;
|
||||
lean::dec(x_241);
|
||||
x_257 = lean::cnstr_get(x_244, 0);
|
||||
lean::inc(x_257);
|
||||
lean::dec(x_244);
|
||||
x_260 = l_list_length___main___rarg(x_223);
|
||||
x_261 = l_lean_ir_decl_header___main(x_257);
|
||||
x_262 = lean::cnstr_get(x_261, 1);
|
||||
lean::inc(x_262);
|
||||
lean::dec(x_261);
|
||||
lean::inc(x_262);
|
||||
x_266 = l_list_length___main___rarg(x_262);
|
||||
x_267 = lean::nat_dec_le(x_260, x_266);
|
||||
lean::dec(x_266);
|
||||
lean::dec(x_260);
|
||||
if (x_267 == 0)
|
||||
{
|
||||
obj* x_272; obj* x_274;
|
||||
lean::dec(x_1);
|
||||
x_260 = lean::mk_nat_obj(0u);
|
||||
lean::inc(x_260);
|
||||
x_262 = l_list_length__aux___main___rarg(x_223, x_260);
|
||||
x_263 = l_lean_ir_decl_header___main(x_257);
|
||||
x_264 = lean::cnstr_get(x_263, 1);
|
||||
lean::inc(x_264);
|
||||
lean::dec(x_263);
|
||||
lean::inc(x_264);
|
||||
x_268 = l_list_length__aux___main___rarg(x_264, x_260);
|
||||
x_269 = lean::nat_dec_le(x_262, x_268);
|
||||
lean::dec(x_268);
|
||||
lean::dec(x_262);
|
||||
x_272 = l_lean_ir_instr_check___closed__4;
|
||||
lean::inc(x_272);
|
||||
if (x_269 == 0)
|
||||
{
|
||||
obj* x_274; obj* x_276;
|
||||
lean::dec(x_1);
|
||||
lean::dec(x_264);
|
||||
x_274 = l_lean_ir_instr_check___closed__4;
|
||||
lean::inc(x_274);
|
||||
if (lean::is_scalar(x_232)) {
|
||||
x_274 = lean::alloc_cnstr(0, 2, 0);
|
||||
x_276 = lean::alloc_cnstr(0, 2, 0);
|
||||
} else {
|
||||
x_274 = x_232;
|
||||
x_276 = x_232;
|
||||
}
|
||||
lean::cnstr_set(x_274, 0, x_272);
|
||||
lean::cnstr_set(x_274, 1, x_246);
|
||||
x_3 = x_274;
|
||||
lean::cnstr_set(x_276, 0, x_274);
|
||||
lean::cnstr_set(x_276, 1, x_246);
|
||||
x_3 = x_276;
|
||||
goto lbl_4;
|
||||
}
|
||||
else
|
||||
{
|
||||
obj* x_276;
|
||||
obj* x_278;
|
||||
lean::dec(x_232);
|
||||
x_276 = l_list_mmap_x_27___main___at_lean_ir_instr_check___spec__2(x_262, x_1, x_246);
|
||||
x_3 = x_276;
|
||||
x_278 = l_list_mmap_x_27___main___at_lean_ir_instr_check___spec__2(x_264, x_1, x_246);
|
||||
x_3 = x_278;
|
||||
goto lbl_4;
|
||||
}
|
||||
}
|
||||
|
|
@ -5170,295 +5172,295 @@ goto lbl_4;
|
|||
}
|
||||
case 12:
|
||||
{
|
||||
obj* x_277; obj* x_279;
|
||||
x_277 = lean::cnstr_get(x_0, 1);
|
||||
lean::inc(x_277);
|
||||
x_279 = l_list_mmap_x_27___main___at_lean_ir_instr_check___spec__3(x_277, x_1, x_2);
|
||||
x_3 = x_279;
|
||||
obj* x_279; obj* x_281;
|
||||
x_279 = lean::cnstr_get(x_0, 1);
|
||||
lean::inc(x_279);
|
||||
x_281 = l_list_mmap_x_27___main___at_lean_ir_instr_check___spec__3(x_279, x_1, x_2);
|
||||
x_3 = x_281;
|
||||
goto lbl_4;
|
||||
}
|
||||
case 13:
|
||||
{
|
||||
obj* x_280; obj* x_282; uint8 x_284; obj* x_286; obj* x_287; obj* x_289; obj* x_291;
|
||||
x_280 = lean::cnstr_get(x_0, 1);
|
||||
lean::inc(x_280);
|
||||
x_282 = lean::cnstr_get(x_0, 2);
|
||||
obj* x_282; obj* x_284; uint8 x_286; obj* x_288; obj* x_289; obj* x_291; obj* x_293;
|
||||
x_282 = lean::cnstr_get(x_0, 1);
|
||||
lean::inc(x_282);
|
||||
x_284 = 5;
|
||||
x_284 = lean::cnstr_get(x_0, 2);
|
||||
lean::inc(x_284);
|
||||
x_286 = 5;
|
||||
lean::inc(x_1);
|
||||
x_286 = l_lean_ir_check__type(x_280, x_284, x_1, x_2);
|
||||
x_287 = lean::cnstr_get(x_286, 0);
|
||||
lean::inc(x_287);
|
||||
x_289 = lean::cnstr_get(x_286, 1);
|
||||
x_288 = l_lean_ir_check__type(x_282, x_286, x_1, x_2);
|
||||
x_289 = lean::cnstr_get(x_288, 0);
|
||||
lean::inc(x_289);
|
||||
if (lean::is_shared(x_286)) {
|
||||
lean::dec(x_286);
|
||||
x_291 = lean::box(0);
|
||||
x_291 = lean::cnstr_get(x_288, 1);
|
||||
lean::inc(x_291);
|
||||
if (lean::is_shared(x_288)) {
|
||||
lean::dec(x_288);
|
||||
x_293 = lean::box(0);
|
||||
} else {
|
||||
lean::cnstr_release(x_286, 0);
|
||||
lean::cnstr_release(x_286, 1);
|
||||
x_291 = x_286;
|
||||
lean::cnstr_release(x_288, 0);
|
||||
lean::cnstr_release(x_288, 1);
|
||||
x_293 = x_288;
|
||||
}
|
||||
if (lean::obj_tag(x_287) == 0)
|
||||
if (lean::obj_tag(x_289) == 0)
|
||||
{
|
||||
obj* x_294; obj* x_296; obj* x_297; obj* x_298;
|
||||
lean::dec(x_282);
|
||||
obj* x_296; obj* x_298; obj* x_299; obj* x_300;
|
||||
lean::dec(x_284);
|
||||
lean::dec(x_1);
|
||||
x_294 = lean::cnstr_get(x_287, 0);
|
||||
lean::inc(x_294);
|
||||
if (lean::is_shared(x_287)) {
|
||||
lean::dec(x_287);
|
||||
x_296 = lean::box(0);
|
||||
x_296 = lean::cnstr_get(x_289, 0);
|
||||
lean::inc(x_296);
|
||||
if (lean::is_shared(x_289)) {
|
||||
lean::dec(x_289);
|
||||
x_298 = lean::box(0);
|
||||
} else {
|
||||
lean::cnstr_release(x_287, 0);
|
||||
x_296 = x_287;
|
||||
lean::cnstr_release(x_289, 0);
|
||||
x_298 = x_289;
|
||||
}
|
||||
if (lean::is_scalar(x_296)) {
|
||||
x_297 = lean::alloc_cnstr(0, 1, 0);
|
||||
if (lean::is_scalar(x_298)) {
|
||||
x_299 = lean::alloc_cnstr(0, 1, 0);
|
||||
} else {
|
||||
x_297 = x_296;
|
||||
x_299 = x_298;
|
||||
}
|
||||
lean::cnstr_set(x_297, 0, x_294);
|
||||
if (lean::is_scalar(x_291)) {
|
||||
x_298 = lean::alloc_cnstr(0, 2, 0);
|
||||
lean::cnstr_set(x_299, 0, x_296);
|
||||
if (lean::is_scalar(x_293)) {
|
||||
x_300 = lean::alloc_cnstr(0, 2, 0);
|
||||
} else {
|
||||
x_298 = x_291;
|
||||
x_300 = x_293;
|
||||
}
|
||||
lean::cnstr_set(x_298, 0, x_297);
|
||||
lean::cnstr_set(x_298, 1, x_289);
|
||||
x_3 = x_298;
|
||||
lean::cnstr_set(x_300, 0, x_299);
|
||||
lean::cnstr_set(x_300, 1, x_291);
|
||||
x_3 = x_300;
|
||||
goto lbl_4;
|
||||
}
|
||||
else
|
||||
{
|
||||
obj* x_301;
|
||||
lean::dec(x_287);
|
||||
lean::dec(x_291);
|
||||
x_301 = l_lean_ir_check__type(x_282, x_284, x_1, x_289);
|
||||
x_3 = x_301;
|
||||
obj* x_303;
|
||||
lean::dec(x_293);
|
||||
lean::dec(x_289);
|
||||
x_303 = l_lean_ir_check__type(x_284, x_286, x_1, x_291);
|
||||
x_3 = x_303;
|
||||
goto lbl_4;
|
||||
}
|
||||
}
|
||||
case 14:
|
||||
{
|
||||
uint8 x_302; obj* x_303; obj* x_305; obj* x_307; obj* x_308; uint8 x_309;
|
||||
x_302 = lean::cnstr_get_scalar<uint8>(x_0, sizeof(void*)*3);
|
||||
x_303 = lean::cnstr_get(x_0, 1);
|
||||
lean::inc(x_303);
|
||||
x_305 = lean::cnstr_get(x_0, 2);
|
||||
uint8 x_304; obj* x_305; obj* x_307; obj* x_309; obj* x_310; uint8 x_311;
|
||||
x_304 = lean::cnstr_get_scalar<uint8>(x_0, sizeof(void*)*3);
|
||||
x_305 = lean::cnstr_get(x_0, 1);
|
||||
lean::inc(x_305);
|
||||
x_307 = l_lean_ir_type2id___main(x_302);
|
||||
x_308 = l_lean_ir_valid__assign__unop__types___closed__1;
|
||||
x_309 = lean::nat_dec_eq(x_307, x_308);
|
||||
lean::dec(x_307);
|
||||
if (x_309 == 0)
|
||||
x_307 = lean::cnstr_get(x_0, 2);
|
||||
lean::inc(x_307);
|
||||
x_309 = l_lean_ir_type2id___main(x_304);
|
||||
x_310 = l_lean_ir_valid__assign__unop__types___closed__1;
|
||||
x_311 = lean::nat_dec_eq(x_309, x_310);
|
||||
lean::dec(x_309);
|
||||
if (x_311 == 0)
|
||||
{
|
||||
uint8 x_311; obj* x_313; obj* x_314; obj* x_316; obj* x_318;
|
||||
x_311 = 5;
|
||||
uint8 x_313; obj* x_315; obj* x_316; obj* x_318; obj* x_320;
|
||||
x_313 = 5;
|
||||
lean::inc(x_1);
|
||||
x_313 = l_lean_ir_check__type(x_303, x_311, x_1, x_2);
|
||||
x_314 = lean::cnstr_get(x_313, 0);
|
||||
lean::inc(x_314);
|
||||
x_316 = lean::cnstr_get(x_313, 1);
|
||||
x_315 = l_lean_ir_check__type(x_305, x_313, x_1, x_2);
|
||||
x_316 = lean::cnstr_get(x_315, 0);
|
||||
lean::inc(x_316);
|
||||
if (lean::is_shared(x_313)) {
|
||||
lean::dec(x_313);
|
||||
x_318 = lean::box(0);
|
||||
x_318 = lean::cnstr_get(x_315, 1);
|
||||
lean::inc(x_318);
|
||||
if (lean::is_shared(x_315)) {
|
||||
lean::dec(x_315);
|
||||
x_320 = lean::box(0);
|
||||
} else {
|
||||
lean::cnstr_release(x_313, 0);
|
||||
lean::cnstr_release(x_313, 1);
|
||||
x_318 = x_313;
|
||||
lean::cnstr_release(x_315, 0);
|
||||
lean::cnstr_release(x_315, 1);
|
||||
x_320 = x_315;
|
||||
}
|
||||
if (lean::obj_tag(x_314) == 0)
|
||||
if (lean::obj_tag(x_316) == 0)
|
||||
{
|
||||
obj* x_321; obj* x_323; obj* x_324; obj* x_325;
|
||||
lean::dec(x_305);
|
||||
obj* x_323; obj* x_325; obj* x_326; obj* x_327;
|
||||
lean::dec(x_1);
|
||||
x_321 = lean::cnstr_get(x_314, 0);
|
||||
lean::inc(x_321);
|
||||
if (lean::is_shared(x_314)) {
|
||||
lean::dec(x_314);
|
||||
x_323 = lean::box(0);
|
||||
lean::dec(x_307);
|
||||
x_323 = lean::cnstr_get(x_316, 0);
|
||||
lean::inc(x_323);
|
||||
if (lean::is_shared(x_316)) {
|
||||
lean::dec(x_316);
|
||||
x_325 = lean::box(0);
|
||||
} else {
|
||||
lean::cnstr_release(x_314, 0);
|
||||
x_323 = x_314;
|
||||
lean::cnstr_release(x_316, 0);
|
||||
x_325 = x_316;
|
||||
}
|
||||
if (lean::is_scalar(x_323)) {
|
||||
x_324 = lean::alloc_cnstr(0, 1, 0);
|
||||
if (lean::is_scalar(x_325)) {
|
||||
x_326 = lean::alloc_cnstr(0, 1, 0);
|
||||
} else {
|
||||
x_324 = x_323;
|
||||
x_326 = x_325;
|
||||
}
|
||||
lean::cnstr_set(x_324, 0, x_321);
|
||||
if (lean::is_scalar(x_318)) {
|
||||
x_325 = lean::alloc_cnstr(0, 2, 0);
|
||||
lean::cnstr_set(x_326, 0, x_323);
|
||||
if (lean::is_scalar(x_320)) {
|
||||
x_327 = lean::alloc_cnstr(0, 2, 0);
|
||||
} else {
|
||||
x_325 = x_318;
|
||||
x_327 = x_320;
|
||||
}
|
||||
lean::cnstr_set(x_325, 0, x_324);
|
||||
lean::cnstr_set(x_325, 1, x_316);
|
||||
x_3 = x_325;
|
||||
lean::cnstr_set(x_327, 0, x_326);
|
||||
lean::cnstr_set(x_327, 1, x_318);
|
||||
x_3 = x_327;
|
||||
goto lbl_4;
|
||||
}
|
||||
else
|
||||
{
|
||||
obj* x_326; obj* x_327; obj* x_328; obj* x_330;
|
||||
if (lean::is_shared(x_314)) {
|
||||
lean::dec(x_314);
|
||||
x_326 = lean::box(0);
|
||||
obj* x_328; obj* x_329; obj* x_330; obj* x_332;
|
||||
if (lean::is_shared(x_316)) {
|
||||
lean::dec(x_316);
|
||||
x_328 = lean::box(0);
|
||||
} else {
|
||||
lean::cnstr_release(x_314, 0);
|
||||
x_326 = x_314;
|
||||
lean::cnstr_release(x_316, 0);
|
||||
x_328 = x_316;
|
||||
}
|
||||
x_327 = l_lean_ir_check__type(x_305, x_311, x_1, x_316);
|
||||
x_328 = lean::cnstr_get(x_327, 0);
|
||||
lean::inc(x_328);
|
||||
x_330 = lean::cnstr_get(x_327, 1);
|
||||
x_329 = l_lean_ir_check__type(x_307, x_313, x_1, x_318);
|
||||
x_330 = lean::cnstr_get(x_329, 0);
|
||||
lean::inc(x_330);
|
||||
lean::dec(x_327);
|
||||
if (lean::obj_tag(x_328) == 0)
|
||||
x_332 = lean::cnstr_get(x_329, 1);
|
||||
lean::inc(x_332);
|
||||
lean::dec(x_329);
|
||||
if (lean::obj_tag(x_330) == 0)
|
||||
{
|
||||
obj* x_333; obj* x_336; obj* x_337;
|
||||
x_333 = lean::cnstr_get(x_328, 0);
|
||||
lean::inc(x_333);
|
||||
lean::dec(x_328);
|
||||
if (lean::is_scalar(x_326)) {
|
||||
x_336 = lean::alloc_cnstr(0, 1, 0);
|
||||
obj* x_335; obj* x_338; obj* x_339;
|
||||
x_335 = lean::cnstr_get(x_330, 0);
|
||||
lean::inc(x_335);
|
||||
lean::dec(x_330);
|
||||
if (lean::is_scalar(x_328)) {
|
||||
x_338 = lean::alloc_cnstr(0, 1, 0);
|
||||
} else {
|
||||
x_336 = x_326;
|
||||
lean::cnstr_set_tag(x_326, 0);
|
||||
x_338 = x_328;
|
||||
lean::cnstr_set_tag(x_328, 0);
|
||||
}
|
||||
lean::cnstr_set(x_336, 0, x_333);
|
||||
if (lean::is_scalar(x_318)) {
|
||||
x_337 = lean::alloc_cnstr(0, 2, 0);
|
||||
lean::cnstr_set(x_338, 0, x_335);
|
||||
if (lean::is_scalar(x_320)) {
|
||||
x_339 = lean::alloc_cnstr(0, 2, 0);
|
||||
} else {
|
||||
x_337 = x_318;
|
||||
x_339 = x_320;
|
||||
}
|
||||
lean::cnstr_set(x_337, 0, x_336);
|
||||
lean::cnstr_set(x_337, 1, x_330);
|
||||
x_3 = x_337;
|
||||
lean::cnstr_set(x_339, 0, x_338);
|
||||
lean::cnstr_set(x_339, 1, x_332);
|
||||
x_3 = x_339;
|
||||
goto lbl_4;
|
||||
}
|
||||
else
|
||||
{
|
||||
obj* x_340; obj* x_342;
|
||||
lean::dec(x_326);
|
||||
obj* x_342; obj* x_344;
|
||||
lean::dec(x_328);
|
||||
x_340 = l_lean_ir_match__type___closed__5;
|
||||
lean::inc(x_340);
|
||||
if (lean::is_scalar(x_318)) {
|
||||
x_342 = lean::alloc_cnstr(0, 2, 0);
|
||||
lean::dec(x_330);
|
||||
x_342 = l_lean_ir_match__type___closed__5;
|
||||
lean::inc(x_342);
|
||||
if (lean::is_scalar(x_320)) {
|
||||
x_344 = lean::alloc_cnstr(0, 2, 0);
|
||||
} else {
|
||||
x_342 = x_318;
|
||||
x_344 = x_320;
|
||||
}
|
||||
lean::cnstr_set(x_342, 0, x_340);
|
||||
lean::cnstr_set(x_342, 1, x_330);
|
||||
x_3 = x_342;
|
||||
lean::cnstr_set(x_344, 0, x_342);
|
||||
lean::cnstr_set(x_344, 1, x_332);
|
||||
x_3 = x_344;
|
||||
goto lbl_4;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8 x_343; obj* x_345; obj* x_346; obj* x_348; obj* x_350;
|
||||
x_343 = 5;
|
||||
uint8 x_345; obj* x_347; obj* x_348; obj* x_350; obj* x_352;
|
||||
x_345 = 5;
|
||||
lean::inc(x_1);
|
||||
x_345 = l_lean_ir_check__type(x_303, x_343, x_1, x_2);
|
||||
x_346 = lean::cnstr_get(x_345, 0);
|
||||
lean::inc(x_346);
|
||||
x_348 = lean::cnstr_get(x_345, 1);
|
||||
x_347 = l_lean_ir_check__type(x_305, x_345, x_1, x_2);
|
||||
x_348 = lean::cnstr_get(x_347, 0);
|
||||
lean::inc(x_348);
|
||||
if (lean::is_shared(x_345)) {
|
||||
lean::dec(x_345);
|
||||
x_350 = lean::box(0);
|
||||
x_350 = lean::cnstr_get(x_347, 1);
|
||||
lean::inc(x_350);
|
||||
if (lean::is_shared(x_347)) {
|
||||
lean::dec(x_347);
|
||||
x_352 = lean::box(0);
|
||||
} else {
|
||||
lean::cnstr_release(x_345, 0);
|
||||
lean::cnstr_release(x_345, 1);
|
||||
x_350 = x_345;
|
||||
lean::cnstr_release(x_347, 0);
|
||||
lean::cnstr_release(x_347, 1);
|
||||
x_352 = x_347;
|
||||
}
|
||||
if (lean::obj_tag(x_346) == 0)
|
||||
if (lean::obj_tag(x_348) == 0)
|
||||
{
|
||||
obj* x_353; obj* x_355; obj* x_356; obj* x_357;
|
||||
lean::dec(x_305);
|
||||
obj* x_355; obj* x_357; obj* x_358; obj* x_359;
|
||||
lean::dec(x_1);
|
||||
x_353 = lean::cnstr_get(x_346, 0);
|
||||
lean::inc(x_353);
|
||||
if (lean::is_shared(x_346)) {
|
||||
lean::dec(x_346);
|
||||
x_355 = lean::box(0);
|
||||
lean::dec(x_307);
|
||||
x_355 = lean::cnstr_get(x_348, 0);
|
||||
lean::inc(x_355);
|
||||
if (lean::is_shared(x_348)) {
|
||||
lean::dec(x_348);
|
||||
x_357 = lean::box(0);
|
||||
} else {
|
||||
lean::cnstr_release(x_346, 0);
|
||||
x_355 = x_346;
|
||||
lean::cnstr_release(x_348, 0);
|
||||
x_357 = x_348;
|
||||
}
|
||||
if (lean::is_scalar(x_355)) {
|
||||
x_356 = lean::alloc_cnstr(0, 1, 0);
|
||||
if (lean::is_scalar(x_357)) {
|
||||
x_358 = lean::alloc_cnstr(0, 1, 0);
|
||||
} else {
|
||||
x_356 = x_355;
|
||||
x_358 = x_357;
|
||||
}
|
||||
lean::cnstr_set(x_356, 0, x_353);
|
||||
if (lean::is_scalar(x_350)) {
|
||||
x_357 = lean::alloc_cnstr(0, 2, 0);
|
||||
lean::cnstr_set(x_358, 0, x_355);
|
||||
if (lean::is_scalar(x_352)) {
|
||||
x_359 = lean::alloc_cnstr(0, 2, 0);
|
||||
} else {
|
||||
x_357 = x_350;
|
||||
x_359 = x_352;
|
||||
}
|
||||
lean::cnstr_set(x_357, 0, x_356);
|
||||
lean::cnstr_set(x_357, 1, x_348);
|
||||
x_3 = x_357;
|
||||
lean::cnstr_set(x_359, 0, x_358);
|
||||
lean::cnstr_set(x_359, 1, x_350);
|
||||
x_3 = x_359;
|
||||
goto lbl_4;
|
||||
}
|
||||
else
|
||||
{
|
||||
obj* x_358; obj* x_359; obj* x_360; obj* x_362;
|
||||
if (lean::is_shared(x_346)) {
|
||||
lean::dec(x_346);
|
||||
x_358 = lean::box(0);
|
||||
obj* x_360; obj* x_361; obj* x_362; obj* x_364;
|
||||
if (lean::is_shared(x_348)) {
|
||||
lean::dec(x_348);
|
||||
x_360 = lean::box(0);
|
||||
} else {
|
||||
lean::cnstr_release(x_346, 0);
|
||||
x_358 = x_346;
|
||||
lean::cnstr_release(x_348, 0);
|
||||
x_360 = x_348;
|
||||
}
|
||||
x_359 = l_lean_ir_check__type(x_305, x_343, x_1, x_348);
|
||||
x_360 = lean::cnstr_get(x_359, 0);
|
||||
lean::inc(x_360);
|
||||
x_362 = lean::cnstr_get(x_359, 1);
|
||||
x_361 = l_lean_ir_check__type(x_307, x_345, x_1, x_350);
|
||||
x_362 = lean::cnstr_get(x_361, 0);
|
||||
lean::inc(x_362);
|
||||
lean::dec(x_359);
|
||||
if (lean::obj_tag(x_360) == 0)
|
||||
x_364 = lean::cnstr_get(x_361, 1);
|
||||
lean::inc(x_364);
|
||||
lean::dec(x_361);
|
||||
if (lean::obj_tag(x_362) == 0)
|
||||
{
|
||||
obj* x_365; obj* x_368; obj* x_369;
|
||||
x_365 = lean::cnstr_get(x_360, 0);
|
||||
lean::inc(x_365);
|
||||
lean::dec(x_360);
|
||||
if (lean::is_scalar(x_358)) {
|
||||
x_368 = lean::alloc_cnstr(0, 1, 0);
|
||||
obj* x_367; obj* x_370; obj* x_371;
|
||||
x_367 = lean::cnstr_get(x_362, 0);
|
||||
lean::inc(x_367);
|
||||
lean::dec(x_362);
|
||||
if (lean::is_scalar(x_360)) {
|
||||
x_370 = lean::alloc_cnstr(0, 1, 0);
|
||||
} else {
|
||||
x_368 = x_358;
|
||||
lean::cnstr_set_tag(x_358, 0);
|
||||
x_370 = x_360;
|
||||
lean::cnstr_set_tag(x_360, 0);
|
||||
}
|
||||
lean::cnstr_set(x_368, 0, x_365);
|
||||
if (lean::is_scalar(x_350)) {
|
||||
x_369 = lean::alloc_cnstr(0, 2, 0);
|
||||
lean::cnstr_set(x_370, 0, x_367);
|
||||
if (lean::is_scalar(x_352)) {
|
||||
x_371 = lean::alloc_cnstr(0, 2, 0);
|
||||
} else {
|
||||
x_369 = x_350;
|
||||
x_371 = x_352;
|
||||
}
|
||||
lean::cnstr_set(x_369, 0, x_368);
|
||||
lean::cnstr_set(x_369, 1, x_362);
|
||||
x_3 = x_369;
|
||||
lean::cnstr_set(x_371, 0, x_370);
|
||||
lean::cnstr_set(x_371, 1, x_364);
|
||||
x_3 = x_371;
|
||||
goto lbl_4;
|
||||
}
|
||||
else
|
||||
{
|
||||
obj* x_372; obj* x_374;
|
||||
obj* x_374; obj* x_376;
|
||||
lean::dec(x_362);
|
||||
lean::dec(x_360);
|
||||
lean::dec(x_358);
|
||||
x_372 = l_lean_ir_instr_check___closed__5;
|
||||
lean::inc(x_372);
|
||||
if (lean::is_scalar(x_350)) {
|
||||
x_374 = lean::alloc_cnstr(0, 2, 0);
|
||||
x_374 = l_lean_ir_instr_check___closed__5;
|
||||
lean::inc(x_374);
|
||||
if (lean::is_scalar(x_352)) {
|
||||
x_376 = lean::alloc_cnstr(0, 2, 0);
|
||||
} else {
|
||||
x_374 = x_350;
|
||||
x_376 = x_352;
|
||||
}
|
||||
lean::cnstr_set(x_374, 0, x_372);
|
||||
lean::cnstr_set(x_374, 1, x_362);
|
||||
x_3 = x_374;
|
||||
lean::cnstr_set(x_376, 0, x_374);
|
||||
lean::cnstr_set(x_376, 1, x_364);
|
||||
x_3 = x_376;
|
||||
goto lbl_4;
|
||||
}
|
||||
}
|
||||
|
|
@ -5466,149 +5468,149 @@ goto lbl_4;
|
|||
}
|
||||
default:
|
||||
{
|
||||
obj* x_375; obj* x_377; uint8 x_379; obj* x_381; obj* x_382; obj* x_384; obj* x_386;
|
||||
x_375 = lean::cnstr_get(x_0, 0);
|
||||
lean::inc(x_375);
|
||||
x_377 = lean::cnstr_get(x_0, 1);
|
||||
obj* x_377; obj* x_379; uint8 x_381; obj* x_383; obj* x_384; obj* x_386; obj* x_388;
|
||||
x_377 = lean::cnstr_get(x_0, 0);
|
||||
lean::inc(x_377);
|
||||
x_379 = 11;
|
||||
x_379 = lean::cnstr_get(x_0, 1);
|
||||
lean::inc(x_379);
|
||||
x_381 = 11;
|
||||
lean::inc(x_1);
|
||||
x_381 = l_lean_ir_check__type(x_375, x_379, x_1, x_2);
|
||||
x_382 = lean::cnstr_get(x_381, 0);
|
||||
lean::inc(x_382);
|
||||
x_384 = lean::cnstr_get(x_381, 1);
|
||||
x_383 = l_lean_ir_check__type(x_377, x_381, x_1, x_2);
|
||||
x_384 = lean::cnstr_get(x_383, 0);
|
||||
lean::inc(x_384);
|
||||
if (lean::is_shared(x_381)) {
|
||||
lean::dec(x_381);
|
||||
x_386 = lean::box(0);
|
||||
x_386 = lean::cnstr_get(x_383, 1);
|
||||
lean::inc(x_386);
|
||||
if (lean::is_shared(x_383)) {
|
||||
lean::dec(x_383);
|
||||
x_388 = lean::box(0);
|
||||
} else {
|
||||
lean::cnstr_release(x_381, 0);
|
||||
lean::cnstr_release(x_381, 1);
|
||||
x_386 = x_381;
|
||||
lean::cnstr_release(x_383, 0);
|
||||
lean::cnstr_release(x_383, 1);
|
||||
x_388 = x_383;
|
||||
}
|
||||
if (lean::obj_tag(x_382) == 0)
|
||||
if (lean::obj_tag(x_384) == 0)
|
||||
{
|
||||
obj* x_389; obj* x_391; obj* x_392; obj* x_393;
|
||||
obj* x_391; obj* x_393; obj* x_394; obj* x_395;
|
||||
lean::dec(x_1);
|
||||
lean::dec(x_377);
|
||||
x_389 = lean::cnstr_get(x_382, 0);
|
||||
lean::inc(x_389);
|
||||
if (lean::is_shared(x_382)) {
|
||||
lean::dec(x_382);
|
||||
x_391 = lean::box(0);
|
||||
lean::dec(x_379);
|
||||
x_391 = lean::cnstr_get(x_384, 0);
|
||||
lean::inc(x_391);
|
||||
if (lean::is_shared(x_384)) {
|
||||
lean::dec(x_384);
|
||||
x_393 = lean::box(0);
|
||||
} else {
|
||||
lean::cnstr_release(x_382, 0);
|
||||
x_391 = x_382;
|
||||
lean::cnstr_release(x_384, 0);
|
||||
x_393 = x_384;
|
||||
}
|
||||
if (lean::is_scalar(x_391)) {
|
||||
x_392 = lean::alloc_cnstr(0, 1, 0);
|
||||
if (lean::is_scalar(x_393)) {
|
||||
x_394 = lean::alloc_cnstr(0, 1, 0);
|
||||
} else {
|
||||
x_392 = x_391;
|
||||
x_394 = x_393;
|
||||
}
|
||||
lean::cnstr_set(x_392, 0, x_389);
|
||||
if (lean::is_scalar(x_386)) {
|
||||
x_393 = lean::alloc_cnstr(0, 2, 0);
|
||||
lean::cnstr_set(x_394, 0, x_391);
|
||||
if (lean::is_scalar(x_388)) {
|
||||
x_395 = lean::alloc_cnstr(0, 2, 0);
|
||||
} else {
|
||||
x_393 = x_386;
|
||||
x_395 = x_388;
|
||||
}
|
||||
lean::cnstr_set(x_393, 0, x_392);
|
||||
lean::cnstr_set(x_393, 1, x_384);
|
||||
x_3 = x_393;
|
||||
lean::cnstr_set(x_395, 0, x_394);
|
||||
lean::cnstr_set(x_395, 1, x_386);
|
||||
x_3 = x_395;
|
||||
goto lbl_4;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8 x_396; obj* x_397;
|
||||
lean::dec(x_382);
|
||||
lean::dec(x_386);
|
||||
x_396 = 5;
|
||||
x_397 = l_lean_ir_check__type(x_377, x_396, x_1, x_384);
|
||||
x_3 = x_397;
|
||||
uint8 x_398; obj* x_399;
|
||||
lean::dec(x_384);
|
||||
lean::dec(x_388);
|
||||
x_398 = 5;
|
||||
x_399 = l_lean_ir_check__type(x_379, x_398, x_1, x_386);
|
||||
x_3 = x_399;
|
||||
goto lbl_4;
|
||||
}
|
||||
}
|
||||
}
|
||||
lbl_4:
|
||||
{
|
||||
obj* x_398; obj* x_400; obj* x_402;
|
||||
x_398 = lean::cnstr_get(x_3, 0);
|
||||
lean::inc(x_398);
|
||||
x_400 = lean::cnstr_get(x_3, 1);
|
||||
obj* x_400; obj* x_402; obj* x_404;
|
||||
x_400 = lean::cnstr_get(x_3, 0);
|
||||
lean::inc(x_400);
|
||||
x_402 = lean::cnstr_get(x_3, 1);
|
||||
lean::inc(x_402);
|
||||
if (lean::is_shared(x_3)) {
|
||||
lean::dec(x_3);
|
||||
x_402 = lean::box(0);
|
||||
x_404 = lean::box(0);
|
||||
} else {
|
||||
lean::cnstr_release(x_3, 0);
|
||||
lean::cnstr_release(x_3, 1);
|
||||
x_402 = x_3;
|
||||
x_404 = x_3;
|
||||
}
|
||||
if (lean::obj_tag(x_398) == 0)
|
||||
if (lean::obj_tag(x_400) == 0)
|
||||
{
|
||||
obj* x_403; obj* x_405; obj* x_406; uint8 x_407; obj* x_408; obj* x_410; obj* x_411; obj* x_412; obj* x_414; obj* x_415; obj* x_416; obj* x_417; obj* x_418; obj* x_419; obj* x_420; obj* x_421; obj* x_422;
|
||||
x_403 = lean::cnstr_get(x_398, 0);
|
||||
lean::inc(x_403);
|
||||
if (lean::is_shared(x_398)) {
|
||||
lean::dec(x_398);
|
||||
x_405 = lean::box(0);
|
||||
obj* x_405; obj* x_407; obj* x_408; uint8 x_409; obj* x_410; obj* x_412; obj* x_413; obj* x_414; obj* x_416; obj* x_417; obj* x_418; obj* x_419; obj* x_420; obj* x_421; obj* x_422; obj* x_423; obj* x_424;
|
||||
x_405 = lean::cnstr_get(x_400, 0);
|
||||
lean::inc(x_405);
|
||||
if (lean::is_shared(x_400)) {
|
||||
lean::dec(x_400);
|
||||
x_407 = lean::box(0);
|
||||
} else {
|
||||
lean::cnstr_release(x_398, 0);
|
||||
x_405 = x_398;
|
||||
lean::cnstr_release(x_400, 0);
|
||||
x_407 = x_400;
|
||||
}
|
||||
x_406 = l_lean_ir_instr_to__format___main(x_0);
|
||||
x_407 = 0;
|
||||
x_408 = l_lean_ir_instr_decorate__error___rarg___lambda__1___closed__1;
|
||||
lean::inc(x_408);
|
||||
x_410 = lean::alloc_cnstr(4, 2, 1);
|
||||
lean::cnstr_set(x_410, 0, x_408);
|
||||
lean::cnstr_set(x_410, 1, x_406);
|
||||
lean::cnstr_set_scalar(x_410, sizeof(void*)*2, x_407);
|
||||
x_411 = x_410;
|
||||
x_412 = l_lean_ir_phi_decorate__error___rarg___lambda__1___closed__2;
|
||||
lean::inc(x_412);
|
||||
x_414 = lean::alloc_cnstr(4, 2, 1);
|
||||
lean::cnstr_set(x_414, 0, x_411);
|
||||
lean::cnstr_set(x_414, 1, x_412);
|
||||
lean::cnstr_set_scalar(x_414, sizeof(void*)*2, x_407);
|
||||
x_415 = x_414;
|
||||
x_416 = lean::box(1);
|
||||
x_417 = lean::alloc_cnstr(4, 2, 1);
|
||||
lean::cnstr_set(x_417, 0, x_415);
|
||||
lean::cnstr_set(x_417, 1, x_416);
|
||||
lean::cnstr_set_scalar(x_417, sizeof(void*)*2, x_407);
|
||||
x_418 = x_417;
|
||||
x_408 = l_lean_ir_instr_to__format___main(x_0);
|
||||
x_409 = 0;
|
||||
x_410 = l_lean_ir_instr_decorate__error___rarg___lambda__1___closed__1;
|
||||
lean::inc(x_410);
|
||||
x_412 = lean::alloc_cnstr(4, 2, 1);
|
||||
lean::cnstr_set(x_412, 0, x_410);
|
||||
lean::cnstr_set(x_412, 1, x_408);
|
||||
lean::cnstr_set_scalar(x_412, sizeof(void*)*2, x_409);
|
||||
x_413 = x_412;
|
||||
x_414 = l_lean_ir_phi_decorate__error___rarg___lambda__1___closed__2;
|
||||
lean::inc(x_414);
|
||||
x_416 = lean::alloc_cnstr(4, 2, 1);
|
||||
lean::cnstr_set(x_416, 0, x_413);
|
||||
lean::cnstr_set(x_416, 1, x_414);
|
||||
lean::cnstr_set_scalar(x_416, sizeof(void*)*2, x_409);
|
||||
x_417 = x_416;
|
||||
x_418 = lean::box(1);
|
||||
x_419 = lean::alloc_cnstr(4, 2, 1);
|
||||
lean::cnstr_set(x_419, 0, x_418);
|
||||
lean::cnstr_set(x_419, 1, x_403);
|
||||
lean::cnstr_set_scalar(x_419, sizeof(void*)*2, x_407);
|
||||
lean::cnstr_set(x_419, 0, x_417);
|
||||
lean::cnstr_set(x_419, 1, x_418);
|
||||
lean::cnstr_set_scalar(x_419, sizeof(void*)*2, x_409);
|
||||
x_420 = x_419;
|
||||
if (lean::is_scalar(x_405)) {
|
||||
x_421 = lean::alloc_cnstr(0, 1, 0);
|
||||
} else {
|
||||
x_421 = x_405;
|
||||
}
|
||||
x_421 = lean::alloc_cnstr(4, 2, 1);
|
||||
lean::cnstr_set(x_421, 0, x_420);
|
||||
if (lean::is_scalar(x_402)) {
|
||||
x_422 = lean::alloc_cnstr(0, 2, 0);
|
||||
lean::cnstr_set(x_421, 1, x_405);
|
||||
lean::cnstr_set_scalar(x_421, sizeof(void*)*2, x_409);
|
||||
x_422 = x_421;
|
||||
if (lean::is_scalar(x_407)) {
|
||||
x_423 = lean::alloc_cnstr(0, 1, 0);
|
||||
} else {
|
||||
x_422 = x_402;
|
||||
x_423 = x_407;
|
||||
}
|
||||
lean::cnstr_set(x_422, 0, x_421);
|
||||
lean::cnstr_set(x_422, 1, x_400);
|
||||
return x_422;
|
||||
lean::cnstr_set(x_423, 0, x_422);
|
||||
if (lean::is_scalar(x_404)) {
|
||||
x_424 = lean::alloc_cnstr(0, 2, 0);
|
||||
} else {
|
||||
x_424 = x_404;
|
||||
}
|
||||
lean::cnstr_set(x_424, 0, x_423);
|
||||
lean::cnstr_set(x_424, 1, x_402);
|
||||
return x_424;
|
||||
}
|
||||
else
|
||||
{
|
||||
obj* x_424;
|
||||
obj* x_426;
|
||||
lean::dec(x_0);
|
||||
if (lean::is_scalar(x_402)) {
|
||||
x_424 = lean::alloc_cnstr(0, 2, 0);
|
||||
if (lean::is_scalar(x_404)) {
|
||||
x_426 = lean::alloc_cnstr(0, 2, 0);
|
||||
} else {
|
||||
x_424 = x_402;
|
||||
x_426 = x_404;
|
||||
}
|
||||
lean::cnstr_set(x_424, 0, x_398);
|
||||
lean::cnstr_set(x_424, 1, x_400);
|
||||
return x_424;
|
||||
lean::cnstr_set(x_426, 0, x_400);
|
||||
lean::cnstr_set(x_426, 1, x_402);
|
||||
return x_426;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ obj* _init_l_lean_githash() {
|
|||
_start:
|
||||
{
|
||||
obj* x_0;
|
||||
x_0 = lean::mk_string("a4f305a4437b8cc8596570cce794622105dad149");
|
||||
x_0 = lean::mk_string("2d55c3f73cf26b483826a13606eda8621334f246");
|
||||
return x_0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue