sp_compile_fundef: fixes Finca_empty :: "'l"   and Finca_get :: "'l \<Rightarrow> 'm \<Rightarrow> ('n, 'o, 'm, 'p, 'q) Inca.instr fundef option"   and Finca_add :: "'l \<Rightarrow> 'm \<Rightarrow> ('n, 'o, 'm, 'p, 'q) Inca.instr fundef \<Rightarrow> 'l"   and Finca_to_list :: "'l \<Rightarrow> ('m \<times> ('n, 'o, 'm, 'p, 'q) Inca.instr fundef) list"   and Fubx_empty :: "'r"   and Fubx_get :: "'r \<Rightarrow> 'm \<Rightarrow> ('n, 'o, 'm, 'p, 'q, 's, 't, 'u) Ubx.instr fundef option"   and Fubx_add :: "'r \<Rightarrow> 'm \<Rightarrow> ('n, 'o, 'm, 'p, 'q, 's, 't, 'u) Ubx.instr fundef \<Rightarrow> 'r"   and Fubx_to_list :: "'r \<Rightarrow> ('m \<times> ('n, 'o, 'm, 'p, 'q, 's, 't, 'u) Ubx.instr fundef) list"   and heap_empty :: "'v"   and heap_get :: "'v \<Rightarrow> 'o \<times> 'n \<Rightarrow> 'n option"   and heap_add :: "'v \<Rightarrow> 'o \<times> 'n \<Rightarrow> 'n \<Rightarrow> 'v"   and heap_to_list :: "'v \<Rightarrow> (('o \<times> 'n) \<times> 'n) list"   and is_true :: "'n \<Rightarrow> bool"   and is_false :: "'n \<Rightarrow> bool"   and box_ubx1 :: "'t \<Rightarrow> 'n"   and unbox_ubx1 :: "'n \<Rightarrow> 't option"   and box_ubx2 :: "'u \<Rightarrow> 'n"   and unbox_ubx2 :: "'n \<Rightarrow> 'u option"   and \<OO>\<pp> :: "'p \<Rightarrow> 'n list \<Rightarrow> 'n"   and \<AA>\<rr>\<ii>\<tt>\<yy> :: "'p \<Rightarrow> nat"   and \<II>\<nn>\<ll>\<OO>\<pp> :: "'q \<Rightarrow> 'n list \<Rightarrow> 'n"   and \<II>\<nn>\<ll> :: "'p \<Rightarrow> 'n list \<Rightarrow> 'q option"   and \<II>\<ss>\<II>\<nn>\<ll> :: "'q \<Rightarrow> 'n list \<Rightarrow> bool"   and \<DD>\<ee>\<II>\<nn>\<ll> :: "'q \<Rightarrow> 'p"   and \<UU>\<bb>\<xx>\<OO>\<pp> :: "'s \<Rightarrow> ('n, 't, 'u) unboxed list \<Rightarrow> ('n, 't, 'u) unboxed option"   and \<UU>\<bb>\<xx> :: "'q \<Rightarrow> Unboxed.type option list \<Rightarrow> 's option"   and \<BB>\<oo>\<xx> :: "'s \<Rightarrow> 'q"   and \<TT>\<yy>\<pp>\<ee>\<OO>\<ff>\<OO>\<pp> :: "'s \<Rightarrow> Unboxed.type option list \<times> Unboxed.type option"   and get_arity :: "'m \<Rightarrow> nat option"   and load_oracle :: "nat \<Rightarrow> Unboxed.type option"   and fd1 :: "('n, 'w, 'm, 'p, 'q) Inca.instr fundef"   and fd2 :: "('n, 'w, 'm, 'p, 'q, 's, 't, 'u) Ubx.instr fundef"   and F :: "'m \<Rightarrow> 'x fundef option" assumes "inca_to_ubx_simulation Finca_empty Finca_get Finca_add Finca_to_list Fubx_empty Fubx_get Fubx_add Fubx_to_list heap_empty heap_get heap_add heap_to_list is_true is_false box_ubx1 unbox_ubx1 box_ubx2 unbox_ubx2 \<OO>\<pp> \<AA>\<rr>\<ii>\<tt>\<yy> \<II>\<nn>\<ll>\<OO>\<pp> \<II>\<nn>\<ll> \<II>\<ss>\<II>\<nn>\<ll> \<DD>\<ee>\<II>\<nn>\<ll> \<UU>\<bb>\<xx>\<OO>\<pp> \<UU>\<bb>\<xx> \<BB>\<oo>\<xx> \<TT>\<yy>\<pp>\<ee>\<OO>\<ff>\<OO>\<pp>"   and "inca_to_ubx_simulation.compile_fundef unbox_ubx1 unbox_ubx2 \<AA>\<rr>\<ii>\<tt>\<yy> \<DD>\<ee>\<II>\<nn>\<ll> \<UU>\<bb>\<xx> \<TT>\<yy>\<pp>\<ee>\<OO>\<ff>\<OO>\<pp> get_arity load_oracle fd1 = Ok fd2"   and "\<And>x. rel_option (\<lambda>ar fd. arity fd = ar) (get_arity x) (F x)" shows "inca_to_ubx_simulation.sp_fundef \<AA>\<rr>\<ii>\<tt>\<yy> \<DD>\<ee>\<II>\<nn>\<ll> \<TT>\<yy>\<pp>\<ee>\<OO>\<ff>\<OO>\<pp> F fd2 (body fd2) = Ok [None]"