signature TNet_typesTheory = sig type thm = Thm.thm (* Definitions *) val Delay2 : thm val EACCES : thm val EADDRINUSE : thm val EADDRNOTAVAIL : thm val EAGAIN : thm val EBADF : thm val ECONNREFUSED : thm val EEX : thm val EHOSTUNREACH : thm val EINTR : thm val EINVAL : thm val EMFILE : thm val EMSGSIZE : thm val ENFILE : thm val ENOBUFS : thm val ENOMEM : thm val ENOTCONN : thm val ENOTSOCK : thm val EOK : thm val ETH : thm val EX_match_failure : thm val EX_udp : thm val Exit : thm val FAIL : thm val FAIL'_def : thm val FD : thm val Flags_def : thm val ICMP_HOST_UNREACH : thm val ICMP_PORT_UNREACH : thm val IP_def : thm val LO : thm val Loc : thm val NETMASK : thm val NOTIN_def : thm val OK : thm val OK'_bool_def : thm val OK'_def : thm val OK'_err_def : thm val OK'_error_def : thm val OK'_errorlift_def : thm val OK'_fd_def : thm val OK'_fdlistpair_def : thm val OK'_getifaddrs_ret_def : thm val OK'_ifid_def : thm val OK'_int_def : thm val OK'_ip_def : thm val OK'_ipportlift_def : thm val OK'_list_def : thm val OK'_msglift_def : thm val OK'_netmask_def : thm val OK'_one_def : thm val OK'_option_def : thm val OK'_pair_def : thm val OK'_port_def : thm val OK'_sockopt_def : thm val OK'_string_def : thm val OK'_tid_def : thm val Port : thm val Print2 : thm val Recvfrom2 : thm val Ret : thm val Run : thm val SO_BSDCOMPAT : thm val SO_REUSEADDR : thm val Select2 : thm val Sendto2 : thm val Sock_def : thm val TID : thm val TL_bool : thm val TL_err : thm val TL_error : thm val TL_except : thm val TL_exn : thm val TL_fd : thm val TL_ifid : thm val TL_int : thm val TL_ip : thm val TL_list : thm val TL_netmask : thm val TL_one : thm val TL_option : thm val TL_pair : thm val TL_port : thm val TL_ref : thm val TL_sockopt : thm val TL_string : thm val TL_tid : thm val TLang_TY_DEF : thm val TLang_case_def : thm val TLang_repfns : thm val TLang_size_def : thm val TLang_type_TY_DEF : thm val TLang_type_case_def : thm val TLang_type_repfns : thm val TLang_type_size_def : thm val TLty_bool : thm val TLty_err : thm val TLty_error : thm val TLty_except : thm val TLty_exn : thm val TLty_fd : thm val TLty_ifid : thm val TLty_int : thm val TLty_ip : thm val TLty_lift : thm val TLty_list : thm val TLty_netmask : thm val TLty_one : thm val TLty_pair : thm val TLty_port : thm val TLty_ref : thm val TLty_sockopt : thm val TLty_string : thm val TLty_tid : thm val TLty_void : thm val TNet_types0_def : thm val TNet_types10_def : thm val TNet_types11_def : thm val TNet_types12_def : thm val TNet_types13_def : thm val TNet_types14_def : thm val TNet_types15_def : thm val TNet_types16_def : thm val TNet_types17_def : thm val TNet_types18_def : thm val TNet_types19_def : thm val TNet_types1_def : thm val TNet_types21_def : thm val TNet_types22_def : thm val TNet_types23_def : thm val TNet_types24_def : thm val TNet_types25_def : thm val TNet_types26_def : thm val TNet_types27_def : thm val TNet_types28_def : thm val TNet_types29_def : thm val TNet_types2_def : thm val TNet_types30_def : thm val TNet_types31_def : thm val TNet_types32_def : thm val TNet_types33_def : thm val TNet_types34_def : thm val TNet_types35_def : thm val TNet_types36_def : thm val TNet_types37_def : thm val TNet_types38_def : thm val TNet_types39_def : thm val TNet_types3_def : thm val TNet_types40_def : thm val TNet_types41_def : thm val TNet_types42 : thm val TNet_types43_def : thm val TNet_types49_def : thm val TNet_types4_def : thm val TNet_types50_def : thm val TNet_types51_def : thm val TNet_types52_def : thm val TNet_types53_def : thm val TNet_types54_def : thm val TNet_types55_def : thm val TNet_types56_def : thm val TNet_types57_def : thm val TNet_types58_def : thm val TNet_types59_def : thm val TNet_types5_def : thm val TNet_types60_def : thm val TNet_types61_def : thm val TNet_types62_def : thm val TNet_types63_def : thm val TNet_types64_def : thm val TNet_types65_def : thm val TNet_types66_def : thm val TNet_types67_def : thm val TNet_types68_def : thm val TNet_types69_def : thm val TNet_types6_def : thm val TNet_types70_def : thm val TNet_types71_def : thm val TNet_types72_def : thm val TNet_types73_def : thm val TNet_types74_def : thm val TNet_types75_def : thm val TNet_types76_def : thm val TNet_types77 : thm val TNet_types78 : thm val TNet_types79 : thm val TNet_types7_def : thm val TNet_types80 : thm val TNet_types81 : thm val TNet_types82_def : thm val TNet_types83_def : thm val TNet_types84_def : thm val TNet_types85_def : thm val TNet_types86_def : thm val TNet_types87_def : thm val TNet_types88_def : thm val TNet_types89_def : thm val TNet_types8_def : thm val TNet_types90_def : thm val TNet_types91_def : thm val TNet_types92_def : thm val TNet_types9_def : thm val Timed : thm val UDP : thm val Zombie : thm val errTNet_types46_TY_DEF : thm val errTNet_types46_repfns : thm val err_TY_DEF : thm val err_case_def : thm val err_repfns : thm val err_size_def : thm val error_BIJ : thm val error_TY_DEF : thm val error_case_def : thm val error_size_def : thm val exceptTNet_types45_TY_DEF : thm val exceptTNet_types45_repfns : thm val except_TY_DEF : thm val except_case_def : thm val except_repfns : thm val except_size_def : thm val exn_TY_DEF : thm val exn_case_def : thm val exn_repfns : thm val exn_size_def : thm val fd_TY_DEF : thm val fd_case_def : thm val fd_repfns : thm val fd_size_def : thm val flags : thm val flags_TY_DEF : thm val flags_bsdcompat : thm val flags_bsdcompat_fupd : thm val flags_bsdcompat_update : thm val flags_case_def : thm val flags_repfns : thm val flags_reuseaddr : thm val flags_reuseaddr_fupd : thm val flags_reuseaddr_update : thm val flags_size_def : thm val host : thm val hostThreadState_TY_DEF : thm val hostThreadState_case_def : thm val hostThreadState_repfns : thm val hostThreadState_size_def : thm val host_TY_DEF : thm val host_case_def : thm val host_ifds : thm val host_ifds_fupd : thm val host_ifds_update : thm val host_oq : thm val host_oq_fupd : thm val host_oq_update : thm val host_oqf : thm val host_oqf_fupd : thm val host_oqf_update : thm val host_repfns : thm val host_s : thm val host_s_fupd : thm val host_s_update : thm val host_size_def : thm val host_ts : thm val host_ts_fupd : thm val host_ts_update : thm val ifd : thm val ifd_TY_DEF : thm val ifd_case_def : thm val ifd_ifid : thm val ifd_ifid_fupd : thm val ifd_ifid_update : thm val ifd_ipset : thm val ifd_ipset_fupd : thm val ifd_ipset_update : thm val ifd_netmask : thm val ifd_netmask_fupd : thm val ifd_netmask_update : thm val ifd_primary : thm val ifd_primary_fupd : thm val ifd_primary_update : thm val ifd_repfns : thm val ifd_size_def : thm val ifid_TY_DEF : thm val ifid_case_def : thm val ifid_repfns : thm val ifid_size_def : thm val ip : thm val ipBody_TY_DEF : thm val ipBody_case_def : thm val ipBody_repfns : thm val ipBody_size_def : thm val ip_TY_DEF : thm val ip_case_def : thm val ip_repfns : thm val ip_size_def : thm val listTNet_types48_TY_DEF : thm val listTNet_types48_repfns : thm val location_TY_DEF : thm val location_case_def : thm val location_repfns : thm val location_size_def : thm val msg : thm val msg_TY_DEF : thm val msg_body : thm val msg_body_fupd : thm val msg_body_update : thm val msg_case_def : thm val msg_dest : thm val msg_dest_fupd : thm val msg_dest_update : thm val msg_repfns : thm val msg_size_def : thm val msg_src : thm val msg_src_fupd : thm val msg_src_update : thm val neq_def : thm val netmask_TY_DEF : thm val netmask_case_def : thm val netmask_repfns : thm val netmask_size_def : thm val optionTNet_types47_TY_DEF : thm val optionTNet_types47_repfns : thm val port_TY_DEF : thm val port_case_def : thm val port_repfns : thm val port_size_def : thm val prodTNet_types20_TY_DEF : thm val prodTNet_types20_repfns : thm val prodTNet_types44_TY_DEF : thm val prodTNet_types44_repfns : thm val socket : thm val socket_TY_DEF : thm val socket_case_def : thm val socket_es : thm val socket_es_fupd : thm val socket_es_update : thm val socket_f : thm val socket_f_fupd : thm val socket_f_update : thm val socket_fd : thm val socket_fd_fupd : thm val socket_fd_update : thm val socket_is1 : thm val socket_is1_fupd : thm val socket_is1_update : thm val socket_is2 : thm val socket_is2_fupd : thm val socket_is2_update : thm val socket_mq : thm val socket_mq_fupd : thm val socket_mq_update : thm val socket_ps1 : thm val socket_ps1_fupd : thm val socket_ps1_update : thm val socket_ps2 : thm val socket_ps2_fupd : thm val socket_ps2_update : thm val socket_repfns : thm val socket_size_def : thm val sockopt_BIJ : thm val sockopt_TY_DEF : thm val sockopt_case_def : thm val sockopt_size_def : thm val tid_TY_DEF : thm val tid_case_def : thm val tid_repfns : thm val tid_size_def : thm val time_def : thm val time_gt_def : thm val time_gte_def : thm val time_infty_def : thm val time_lt_arg_munge_def : thm val time_lt_tupled_primitive_def : thm val time_lte_def : thm val time_minus_dur_def : thm val time_plus_dur_def : thm val time_zero_def : thm val timed_TY_DEF : thm val timed_case_def : thm val timed_repfns : thm val timed_size_def : thm val tlang_typing : thm (* Theorems *) val TLang_11 : thm val TLang_Axiom : thm val TLang_case_cong : thm val TLang_distinct : thm val TLang_induction : thm val TLang_nchotomy : thm val TLang_type_11 : thm val TLang_type_Axiom : thm val TLang_type_case_cong : thm val TLang_type_distinct : thm val TLang_type_induction : thm val TLang_type_nchotomy : thm val TLang_typing_thm : thm val err_11 : thm val err_Axiom : thm val err_case_cong : thm val err_distinct : thm val err_induction : thm val err_nchotomy : thm val error2num_11 : thm val error2num_EACCES : thm val error2num_EADDRINUSE : thm val error2num_EADDRNOTAVAIL : thm val error2num_EAGAIN : thm val error2num_EBADF : thm val error2num_ECONNREFUSED : thm val error2num_EHOSTUNREACH : thm val error2num_EINTR : thm val error2num_EINVAL : thm val error2num_EMFILE : thm val error2num_EMSGSIZE : thm val error2num_ENFILE : thm val error2num_ENOBUFS : thm val error2num_ENOMEM : thm val error2num_ENOTCONN : thm val error2num_ENOTSOCK : thm val error2num_ONTO : thm val error2num_num2error : thm val error_Axiom : thm val error_EQ_error : thm val error_case_cong : thm val error_distinct : thm val error_induction : thm val error_nchotomy : thm val except_11 : thm val except_Axiom : thm val except_case_cong : thm val except_distinct : thm val except_induction : thm val except_nchotomy : thm val exn_11 : thm val exn_Axiom : thm val exn_case_cong : thm val exn_distinct : thm val exn_induction : thm val exn_nchotomy : thm val fd_11 : thm val fd_Axiom : thm val fd_case_cong : thm val fd_induction : thm val fd_nchotomy : thm val flags_11 : thm val flags_Axiom : thm val flags_accessors : thm val flags_accfupds : thm val flags_accupds : thm val flags_bsdcompat_update_semi11 : thm val flags_case_cong : thm val flags_component_equality : thm val flags_cupdaccs : thm val flags_fn_updates : thm val flags_induction : thm val flags_nchotomy : thm val flags_reuseaddr_update_semi11 : thm val flags_updaccs : thm val flags_updates : thm val flags_updates_eq_literal : thm val flags_updcanon : thm val flags_updupds : thm val hostThreadState_11 : thm val hostThreadState_Axiom : thm val hostThreadState_case_cong : thm val hostThreadState_distinct : thm val hostThreadState_induction : thm val hostThreadState_nchotomy : thm val host_11 : thm val host_Axiom : thm val host_accessors : thm val host_accfupds : thm val host_accupds : thm val host_case_cong : thm val host_component_equality : thm val host_cupdaccs : thm val host_fn_updates : thm val host_ifds_update_semi11 : thm val host_induction : thm val host_nchotomy : thm val host_oq_update_semi11 : thm val host_oqf_update_semi11 : thm val host_s_update_semi11 : thm val host_ts_update_semi11 : thm val host_updaccs : thm val host_updates : thm val host_updates_eq_literal : thm val host_updcanon : thm val host_updupds : thm val ifd_11 : thm val ifd_Axiom : thm val ifd_accessors : thm val ifd_accfupds : thm val ifd_accupds : thm val ifd_case_cong : thm val ifd_component_equality : thm val ifd_cupdaccs : thm val ifd_fn_updates : thm val ifd_ifid_update_semi11 : thm val ifd_induction : thm val ifd_ipset_update_semi11 : thm val ifd_nchotomy : thm val ifd_netmask_update_semi11 : thm val ifd_primary_update_semi11 : thm val ifd_updaccs : thm val ifd_updates : thm val ifd_updates_eq_literal : thm val ifd_updcanon : thm val ifd_updupds : thm val ifid_11 : thm val ifid_Axiom : thm val ifid_case_cong : thm val ifid_distinct : thm val ifid_induction : thm val ifid_nchotomy : thm val ipBody_11 : thm val ipBody_Axiom : thm val ipBody_case_cong : thm val ipBody_distinct : thm val ipBody_induction : thm val ipBody_nchotomy : thm val ip_11 : thm val ip_Axiom : thm val ip_case_cong : thm val ip_induction : thm val ip_nchotomy : thm val location_11 : thm val location_Axiom : thm val location_case_cong : thm val location_induction : thm val location_nchotomy : thm val msg_11 : thm val msg_Axiom : thm val msg_accessors : thm val msg_accfupds : thm val msg_accupds : thm val msg_body_update_semi11 : thm val msg_case_cong : thm val msg_component_equality : thm val msg_cupdaccs : thm val msg_dest_update_semi11 : thm val msg_fn_updates : thm val msg_induction : thm val msg_nchotomy : thm val msg_src_update_semi11 : thm val msg_updaccs : thm val msg_updates : thm val msg_updates_eq_literal : thm val msg_updcanon : thm val msg_updupds : thm val netmask_11 : thm val netmask_Axiom : thm val netmask_case_cong : thm val netmask_induction : thm val netmask_nchotomy : thm val num2error_11 : thm val num2error_ONTO : thm val num2error_error2num : thm val num2sockopt_11 : thm val num2sockopt_ONTO : thm val num2sockopt_sockopt2num : thm val port_11 : thm val port_Axiom : thm val port_case_cong : thm val port_induction : thm val port_nchotomy : thm val socket_11 : thm val socket_Axiom : thm val socket_accessors : thm val socket_accfupds : thm val socket_accupds : thm val socket_case_cong : thm val socket_component_equality : thm val socket_cupdaccs : thm val socket_es_update_semi11 : thm val socket_f_update_semi11 : thm val socket_fd_update_semi11 : thm val socket_fn_updates : thm val socket_induction : thm val socket_is1_update_semi11 : thm val socket_is2_update_semi11 : thm val socket_mq_update_semi11 : thm val socket_nchotomy : thm val socket_ps1_update_semi11 : thm val socket_ps2_update_semi11 : thm val socket_updaccs : thm val socket_updates : thm val socket_updates_eq_literal : thm val socket_updcanon : thm val socket_updupds : thm val sockopt2num_11 : thm val sockopt2num_ONTO : thm val sockopt2num_SO_BSDCOMPAT : thm val sockopt2num_SO_REUSEADDR : thm val sockopt2num_num2sockopt : thm val sockopt_Axiom : thm val sockopt_EQ_sockopt : thm val sockopt_case_cong : thm val sockopt_distinct : thm val sockopt_induction : thm val sockopt_nchotomy : thm val tid_11 : thm val tid_Axiom : thm val tid_case_cong : thm val tid_induction : thm val tid_nchotomy : thm val time_lt_def : thm val time_lt_ind : thm val timed_11 : thm val timed_Axiom : thm val timed_case_cong : thm val timed_induction : thm val timed_nchotomy : thm val tlang_typing_cases : thm val tlang_typing_ind : thm val tlang_typing_rules : thm val TNet_types_grammars : parse_type.grammar * term_grammar.grammar val time_ty : Type.hol_type val time_aty : Term.term val duration_ty : Type.hol_type val duration_aty : Term.term (* [finite_map] Parent theory of "TNet_types" [integer] Parent theory of "TNet_types" [pred_set] Parent theory of "TNet_types" [real] Parent theory of "TNet_types" [string] Parent theory of "TNet_types" [Delay2] Definition |- Delay2 = TNet_types90 [EACCES] Definition |- EACCES = num2error 0 [EADDRINUSE] Definition |- EADDRINUSE = num2error 1 [EADDRNOTAVAIL] Definition |- EADDRNOTAVAIL = num2error 2 [EAGAIN] Definition |- EAGAIN = num2error 3 [EBADF] Definition |- EBADF = num2error 4 [ECONNREFUSED] Definition |- ECONNREFUSED = num2error 5 [EEX] Definition |- EEX = TNet_types18 [EHOSTUNREACH] Definition |- EHOSTUNREACH = num2error 6 [EINTR] Definition |- EINTR = num2error 7 [EINVAL] Definition |- EINVAL = num2error 8 [EMFILE] Definition |- EMFILE = num2error 9 [EMSGSIZE] Definition |- EMSGSIZE = num2error 10 [ENFILE] Definition |- ENFILE = num2error 11 [ENOBUFS] Definition |- ENOBUFS = num2error 12 [ENOMEM] Definition |- ENOMEM = num2error 13 [ENOTCONN] Definition |- ENOTCONN = num2error 14 [ENOTSOCK] Definition |- ENOTSOCK = num2error 15 [EOK] Definition |- EOK = TNet_types17 [ETH] Definition |- ETH = TNet_types7 [EX_match_failure] Definition |- EX_match_failure = TNet_types16 [EX_udp] Definition |- EX_udp = TNet_types15 [Exit] Definition |- Exit = TNet_types84 [FAIL] Definition |- FAIL = TNet_types12 [FAIL'_def] Definition |- !e. FAIL e = TL_err (FAIL e) [FD] Definition |- FD = TNet_types10 [Flags_def] Definition |- !bsdcompat reuseaddr. Flags (bsdcompat,reuseaddr) = <|bsdcompat := bsdcompat; reuseaddr := reuseaddr|> [ICMP_HOST_UNREACH] Definition |- ICMP_HOST_UNREACH = TNet_types3 [ICMP_PORT_UNREACH] Definition |- ICMP_PORT_UNREACH = TNet_types4 [IP_def] Definition |- !src dest body. IP (src,dest,body) = <|src := src; dest := dest; body := body|> [LO] Definition |- LO = TNet_types6 [Loc] Definition |- Loc = TNet_types43 [NETMASK] Definition |- NETMASK = TNet_types8 [NOTIN_def] Definition |- !x s. x NOTIN s = ~(x IN s) [OK] Definition |- OK = TNet_types11 [OK'_bool_def] Definition |- !v. OK v = OK' (TL_bool v) [OK'_def] Definition |- !v. OK' v = TL_err (OK v) [OK'_err_def] Definition |- !v. OK v = OK' (TL_err v) [OK'_error_def] Definition |- !v. OK v = OK' (TL_error v) [OK'_errorlift_def] Definition |- !e. OK e = OK (OPTION_MAP TL_error e) [OK'_fd_def] Definition |- !v. OK v = OK' (TL_fd v) [OK'_fdlistpair_def] Definition |- !fdl1 fdl2. OK (fdl1,fdl2) = TL_err (OK (TL_pair (TL_list (MAP TL_fd fdl1),TL_list (MAP TL_fd fdl2)))) [OK'_getifaddrs_ret_def] Definition |- !retlist. OK retlist = TL_err (OK (TL_list (MAP (\(ifid,i,ipl,nm). TL_pair (TL_ifid ifid, TL_pair (TL_ip i, TL_pair (TL_list (MAP TL_ip ipl),TL_netmask nm)))) retlist))) [OK'_ifid_def] Definition |- !v. OK v = OK' (TL_ifid v) [OK'_int_def] Definition |- !v. OK v = OK' (TL_int v) [OK'_ip_def] Definition |- !v. OK v = OK' (TL_ip v) [OK'_ipportlift_def] Definition |- !is1 ps1. OK (is1,ps1) = OK (TL_option (OPTION_MAP TL_ip is1), TL_option (OPTION_MAP TL_port ps1)) [OK'_list_def] Definition |- !v. OK v = OK' (TL_list v) [OK'_msglift_def] Definition |- !i1 ps1 data. OK (i1,ps1,data) = TL_err (OK (TL_pair (TL_ip i1, TL_pair (TL_option (OPTION_MAP TL_port ps1),TL_string data)))) [OK'_netmask_def] Definition |- !v. OK v = OK' (TL_netmask v) [OK'_one_def] Definition |- !v. OK v = OK' (TL_one v) [OK'_option_def] Definition |- !v. OK v = OK' (TL_option v) [OK'_pair_def] Definition |- !v. OK v = OK' (TL_pair v) [OK'_port_def] Definition |- !v. OK v = OK' (TL_port v) [OK'_sockopt_def] Definition |- !v. OK v = OK' (TL_sockopt v) [OK'_string_def] Definition |- !v. OK v = OK' (TL_string v) [OK'_tid_def] Definition |- !v. OK v = OK' (TL_tid v) [Port] Definition |- Port = TNet_types0 [Print2] Definition |- Print2 = TNet_types91 [Recvfrom2] Definition |- Recvfrom2 = TNet_types88 [Ret] Definition |- Ret = TNet_types86 [Run] Definition |- Run = TNet_types83 [SO_BSDCOMPAT] Definition |- SO_BSDCOMPAT = num2sockopt 0 [SO_REUSEADDR] Definition |- SO_REUSEADDR = num2sockopt 1 [Select2] Definition |- Select2 = TNet_types89 [Sendto2] Definition |- Sendto2 = TNet_types87 [Sock_def] Definition |- !fd is1 ps1 is2 ps2 es f mq. Sock (fd,is1,ps1,is2,ps2,es,f,mq) = <|fd := fd; is1 := is1; ps1 := ps1; is2 := is2; ps2 := ps2; es := es; f := f; mq := mq|> [TID] Definition |- TID = TNet_types19 [TL_bool] Definition |- TL_bool = TNet_types50 [TL_err] Definition |- TL_err = TNet_types79 [TL_error] Definition |- TL_error = TNet_types60 [TL_except] Definition |- TL_except = TNet_types80 [TL_exn] Definition |- TL_exn = TNet_types66 [TL_fd] Definition |- TL_fd = TNet_types57 [TL_ifid] Definition |- TL_ifid = TNet_types62 [TL_int] Definition |- TL_int = TNet_types49 [TL_ip] Definition |- TL_ip = TNet_types58 [TL_list] Definition |- TL_list = TNet_types77 [TL_netmask] Definition |- TL_netmask = TNet_types61 [TL_one] Definition |- TL_one = TNet_types52 [TL_option] Definition |- TL_option = TNet_types78 [TL_pair] Definition |- TL_pair = TNet_types81 [TL_port] Definition |- TL_port = TNet_types59 [TL_ref] Definition |- TL_ref = TNet_types65 [TL_sockopt] Definition |- TL_sockopt = TNet_types63 [TL_string] Definition |- TL_string = TNet_types51 [TL_tid] Definition |- TL_tid = TNet_types64 [TLang_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0'. !'TLang' 'prodTNet_types44' 'exceptTNet_types45' 'errTNet_types46' 'optionTNet_types47' 'listTNet_types48'. (!a0'. (?a. a0' = (\a. CONSTR 0 (a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC 0) ((@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC 0))) ((@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types44' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'listTNet_types48' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'optionTNet_types47' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'errTNet_types46' a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), a,@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'exceptTNet_types45' a) ==> 'TLang' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'TLang' a1) ==> 'prodTNet_types44' a1') /\ (!a2. (?a. (a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) ==> 'exceptTNet_types45' a2) /\ (!a3. (?a. (a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) ==> 'errTNet_types46' a3) /\ (!a4. (?a. (a4 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (a4 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) ==> 'optionTNet_types47' a4) /\ (!a5. (a5 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) \/ (?a0 a1. (a5 = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'listTNet_types48' a1) ==> 'listTNet_types48' a5) ==> 'TLang' a0') rep' [TLang_case_def] Definition |- (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_int a) = f a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_bool a) = f1 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_string a) = f2 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_one a) = f3 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_pair a) = f4 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_list a) = f5 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_option a) = f6 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_err a) = f7 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_fd a) = f8 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_ip a) = f9 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_port a) = f10 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_error a) = f11 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_netmask a) = f12 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_ifid a) = f13 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_sockopt a) = f14 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_tid a) = f15 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_ref a) = f16 a) /\ (!f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_exn a) = f17 a) /\ !f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 a. case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 (TL_except a) = f18 a [TLang_repfns] Definition |- (!a. mk_TLang (dest_TLang a) = a) /\ !r. (\a0'. !'TLang' 'prodTNet_types44' 'exceptTNet_types45' 'errTNet_types46' 'optionTNet_types47' 'listTNet_types48'. (!a0'. (?a. a0' = (\a. CONSTR 0 (a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC 0) ((@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC 0))) ((@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types44' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'listTNet_types48' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'optionTNet_types47' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'errTNet_types46' a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'exceptTNet_types45' a) ==> 'TLang' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'TLang' a1) ==> 'prodTNet_types44' a1') /\ (!a2. (?a. (a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) ==> 'exceptTNet_types45' a2) /\ (!a3. (?a. (a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) ==> 'errTNet_types46' a3) /\ (!a4. (?a. (a4 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (a4 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) ==> 'optionTNet_types47' a4) /\ (!a5. (a5 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) \/ (?a0 a1. (a5 = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'listTNet_types48' a1) ==> 'listTNet_types48' a5) ==> 'TLang' a0') r = (dest_TLang (mk_TLang r) = r) [TLang_size_def] Definition |- (!a. TLang_size (TL_int a) = 1) /\ (!a. TLang_size (TL_bool a) = 1 + case a of T -> 0 || F -> 0) /\ (!a. TLang_size (TL_string a) = 1 + string_size a) /\ (!a. TLang_size (TL_one a) = 1) /\ (!a. TLang_size (TL_pair a) = 1 + TLang1_size a) /\ (!a. TLang_size (TL_list a) = 1 + TLang5_size a) /\ (!a. TLang_size (TL_option a) = 1 + TLang4_size a) /\ (!a. TLang_size (TL_err a) = 1 + TLang3_size a) /\ (!a. TLang_size (TL_fd a) = 1 + fd_size a) /\ (!a. TLang_size (TL_ip a) = 1 + ip_size a) /\ (!a. TLang_size (TL_port a) = 1 + port_size a) /\ (!a. TLang_size (TL_error a) = 1 + error_size a) /\ (!a. TLang_size (TL_netmask a) = 1 + netmask_size a) /\ (!a. TLang_size (TL_ifid a) = 1 + ifid_size a) /\ (!a. TLang_size (TL_sockopt a) = 1 + sockopt_size a) /\ (!a. TLang_size (TL_tid a) = 1 + tid_size a) /\ (!a. TLang_size (TL_ref a) = 1 + location_size a) /\ (!a. TLang_size (TL_exn a) = 1 + exn_size a) /\ (!a. TLang_size (TL_except a) = 1 + TLang2_size a) /\ (!a0 a1. TLang1_size (a0,a1) = 1 + (TLang_size a0 + TLang_size a1)) /\ (!a. TLang2_size (EOK a) = 1 + TLang_size a) /\ (!a. TLang2_size (EEX a) = 1 + exn_size a) /\ (!a. TLang3_size (OK a) = 1 + TLang_size a) /\ (!a. TLang3_size (FAIL a) = 1 + error_size a) /\ (!a. TLang4_size (SOME a) = 1 + TLang_size a) /\ (TLang4_size NONE = 0) /\ (TLang5_size [] = 0) /\ !a0 a1. TLang5_size (a0::a1) = 1 + (TLang_size a0 + TLang5_size a1) [TLang_type_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0'. !'TLang_type' 'prodTNet_types20'. (!a0'. (a0' = CONSTR 0 (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC 0) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC 0)) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC 0))) (@x. T) (\n. BOTTOM)) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types20' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) (@x. T) (\n. BOTTOM)) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) (@x. T) (\n. BOTTOM)) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) ==> 'TLang_type' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) (@x. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang_type' a0 /\ 'TLang_type' a1) ==> 'prodTNet_types20' a1') ==> 'TLang_type' a0') rep' [TLang_type_case_def] Definition |- (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 TLty_int = v) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 TLty_bool = v1) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 TLty_string = v2) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 TLty_one = v3) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 a. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 (TLty_pair a) = f a) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 a. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 (TLty_list a) = f1 a) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 a. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 (TLty_lift a) = f2 a) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 a. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 (TLty_err a) = f3 a) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 TLty_fd = v4) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 TLty_ip = v5) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 TLty_port = v6) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 TLty_error = v7) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 TLty_netmask = v8) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 TLty_ifid = v9) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 TLty_sockopt = v10) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 TLty_tid = v11) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 TLty_void = v12) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 a. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 (TLty_ref a) = f4 a) /\ (!v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 TLty_exn = v13) /\ !v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 a. case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 (TLty_except a) = f5 a [TLang_type_repfns] Definition |- (!a. mk_TLang_type (dest_TLang_type a) = a) /\ !r. (\a0'. !'TLang_type' 'prodTNet_types20'. (!a0'. (a0' = CONSTR 0 (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC 0) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC 0)) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC 0))) (@x. T) (\n. BOTTOM)) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types20' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) (@x. T) (\n. BOTTOM)) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) (@x. T) (\n. BOTTOM)) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) ==> 'TLang_type' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) (@x. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang_type' a0 /\ 'TLang_type' a1) ==> 'prodTNet_types20' a1') ==> 'TLang_type' a0') r = (dest_TLang_type (mk_TLang_type r) = r) [TLang_type_size_def] Definition |- (TLang_type_size TLty_int = 0) /\ (TLang_type_size TLty_bool = 0) /\ (TLang_type_size TLty_string = 0) /\ (TLang_type_size TLty_one = 0) /\ (!a. TLang_type_size (TLty_pair a) = 1 + TLang_type1_size a) /\ (!a. TLang_type_size (TLty_list a) = 1 + TLang_type_size a) /\ (!a. TLang_type_size (TLty_lift a) = 1 + TLang_type_size a) /\ (!a. TLang_type_size (TLty_err a) = 1 + TLang_type_size a) /\ (TLang_type_size TLty_fd = 0) /\ (TLang_type_size TLty_ip = 0) /\ (TLang_type_size TLty_port = 0) /\ (TLang_type_size TLty_error = 0) /\ (TLang_type_size TLty_netmask = 0) /\ (TLang_type_size TLty_ifid = 0) /\ (TLang_type_size TLty_sockopt = 0) /\ (TLang_type_size TLty_tid = 0) /\ (TLang_type_size TLty_void = 0) /\ (!a. TLang_type_size (TLty_ref a) = 1 + TLang_type_size a) /\ (TLang_type_size TLty_exn = 0) /\ (!a. TLang_type_size (TLty_except a) = 1 + TLang_type_size a) /\ !a0 a1. TLang_type1_size (a0,a1) = 1 + (TLang_type_size a0 + TLang_type_size a1) [TLty_bool] Definition |- TLty_bool = TNet_types22 [TLty_err] Definition |- TLty_err = TNet_types28 [TLty_error] Definition |- TLty_error = TNet_types32 [TLty_except] Definition |- TLty_except = TNet_types40 [TLty_exn] Definition |- TLty_exn = TNet_types39 [TLty_fd] Definition |- TLty_fd = TNet_types29 [TLty_ifid] Definition |- TLty_ifid = TNet_types34 [TLty_int] Definition |- TLty_int = TNet_types21 [TLty_ip] Definition |- TLty_ip = TNet_types30 [TLty_lift] Definition |- TLty_lift = TNet_types27 [TLty_list] Definition |- TLty_list = TNet_types26 [TLty_netmask] Definition |- TLty_netmask = TNet_types33 [TLty_one] Definition |- TLty_one = TNet_types24 [TLty_pair] Definition |- TLty_pair = TNet_types42 [TLty_port] Definition |- TLty_port = TNet_types31 [TLty_ref] Definition |- TLty_ref = TNet_types38 [TLty_sockopt] Definition |- TLty_sockopt = TNet_types35 [TLty_string] Definition |- TLty_string = TNet_types23 [TLty_tid] Definition |- TLty_tid = TNet_types36 [TLty_void] Definition |- TLty_void = TNet_types37 [TNet_types0_def] Definition |- TNet_types0 = (\a. mk_port ((\a. CONSTR 0 a (\n. BOTTOM)) a)) [TNet_types10_def] Definition |- TNet_types10 = (\a. mk_fd ((\a. CONSTR 0 a (\n. BOTTOM)) a)) [TNet_types11_def] Definition |- TNet_types11 = (\a. mk_err ((\a. CONSTR 0 (a,@v. T) (\n. BOTTOM)) a)) [TNet_types12_def] Definition |- TNet_types12 = (\a. mk_err ((\a. CONSTR (SUC 0) ((@v. T),a) (\n. BOTTOM)) a)) [TNet_types13_def] Definition |- TNet_types13 = (\a0 a1. mk_flags ((\a0 a1. CONSTR 0 (a0,a1) (\n. BOTTOM)) a0 a1)) [TNet_types14_def] Definition |- TNet_types14 = (\a0 a1 a2 a3 a4 a5 a6 a7. mk_socket ((\a0 a1 a2 a3 a4 a5 a6 a7. CONSTR 0 (a0,a1,a2,a3,a4,a5,a6,a7) (\n. BOTTOM)) a0 a1 a2 a3 a4 a5 a6 a7)) [TNet_types15_def] Definition |- TNet_types15 = (\a. mk_exn ((\a. CONSTR 0 (a,@v. T) (\n. BOTTOM)) a)) [TNet_types16_def] Definition |- TNet_types16 = (\a. mk_exn ((\a. CONSTR (SUC 0) ((@v. T),a) (\n. BOTTOM)) a)) [TNet_types17_def] Definition |- TNet_types17 = (\a. mk_except ((\a. CONSTR 0 (a,@v. T) (\n. BOTTOM)) a)) [TNet_types18_def] Definition |- TNet_types18 = (\a. mk_except ((\a. CONSTR (SUC 0) ((@v. T),a) (\n. BOTTOM)) a)) [TNet_types19_def] Definition |- TNet_types19 = (\a. mk_tid ((\a. CONSTR 0 a (\n. BOTTOM)) a)) [TNet_types1_def] Definition |- TNet_types1 = (\a. mk_ip ((\a. CONSTR 0 a (\n. BOTTOM)) a)) [TNet_types21_def] Definition |- TNet_types21 = mk_TLang_type (CONSTR 0 (@x. T) (\n. BOTTOM)) [TNet_types22_def] Definition |- TNet_types22 = mk_TLang_type (CONSTR (SUC 0) (@x. T) (\n. BOTTOM)) [TNet_types23_def] Definition |- TNet_types23 = mk_TLang_type (CONSTR (SUC (SUC 0)) (@x. T) (\n. BOTTOM)) [TNet_types24_def] Definition |- TNet_types24 = mk_TLang_type (CONSTR (SUC (SUC (SUC 0))) (@x. T) (\n. BOTTOM)) [TNet_types25_def] Definition |- TNet_types25 = (\a. mk_TLang_type ((\a. CONSTR (SUC (SUC (SUC (SUC 0)))) (@x. T) (FCONS a (\n. BOTTOM))) (dest_prodTNet_types20 a))) [TNet_types26_def] Definition |- TNet_types26 = (\a. mk_TLang_type ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) (@x. T) (FCONS a (\n. BOTTOM))) (dest_TLang_type a))) [TNet_types27_def] Definition |- TNet_types27 = (\a. mk_TLang_type ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) (@x. T) (FCONS a (\n. BOTTOM))) (dest_TLang_type a))) [TNet_types28_def] Definition |- TNet_types28 = (\a. mk_TLang_type ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) (@x. T) (FCONS a (\n. BOTTOM))) (dest_TLang_type a))) [TNet_types29_def] Definition |- TNet_types29 = mk_TLang_type (CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) (@x. T) (\n. BOTTOM)) [TNet_types2_def] Definition |- TNet_types2 = (\a. mk_ipBody ((\a. CONSTR 0 (a,@v. T) (\n. BOTTOM)) a)) [TNet_types30_def] Definition |- TNet_types30 = mk_TLang_type (CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) (@x. T) (\n. BOTTOM)) [TNet_types31_def] Definition |- TNet_types31 = mk_TLang_type (CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) (@x. T) (\n. BOTTOM)) [TNet_types32_def] Definition |- TNet_types32 = mk_TLang_type (CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) (@x. T) (\n. BOTTOM)) [TNet_types33_def] Definition |- TNet_types33 = mk_TLang_type (CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) (@x. T) (\n. BOTTOM)) [TNet_types34_def] Definition |- TNet_types34 = mk_TLang_type (CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) (@x. T) (\n. BOTTOM)) [TNet_types35_def] Definition |- TNet_types35 = mk_TLang_type (CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) (@x. T) (\n. BOTTOM)) [TNet_types36_def] Definition |- TNet_types36 = mk_TLang_type (CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) (@x. T) (\n. BOTTOM)) [TNet_types37_def] Definition |- TNet_types37 = mk_TLang_type (CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) (@x. T) (\n. BOTTOM)) [TNet_types38_def] Definition |- TNet_types38 = (\a. mk_TLang_type ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) (@x. T) (FCONS a (\n. BOTTOM))) (dest_TLang_type a))) [TNet_types39_def] Definition |- TNet_types39 = mk_TLang_type (CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) (@x. T) (\n. BOTTOM)) [TNet_types3_def] Definition |- TNet_types3 = (\a. mk_ipBody ((\a. CONSTR (SUC 0) ((@v. T),a) (\n. BOTTOM)) a)) [TNet_types40_def] Definition |- TNet_types40 = (\a. mk_TLang_type ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) (@x. T) (FCONS a (\n. BOTTOM))) (dest_TLang_type a))) [TNet_types41_def] Definition |- TNet_types41 = (\a0 a1. mk_prodTNet_types20 ((\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) (@x. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) (dest_TLang_type a0) (dest_TLang_type a1))) [TNet_types42] Definition |- TNet_types42 = (\a. TNet_types25 ((@fn. !x y. fn (x,y) = TNet_types41 x y) a)) [TNet_types43_def] Definition |- TNet_types43 = (\a. mk_location ((\a. CONSTR 0 a (\n. BOTTOM)) a)) [TNet_types49_def] Definition |- TNet_types49 = (\a. mk_TLang ((\a. CONSTR 0 (a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types4_def] Definition |- TNet_types4 = (\a. mk_ipBody ((\a. CONSTR (SUC (SUC 0)) ((@v. T),a) (\n. BOTTOM)) a)) [TNet_types50_def] Definition |- TNet_types50 = (\a. mk_TLang ((\a. CONSTR (SUC 0) ((@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types51_def] Definition |- TNet_types51 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types52_def] Definition |- TNet_types52 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC 0))) ((@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types53_def] Definition |- TNet_types53 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) (dest_prodTNet_types44 a))) [TNet_types54_def] Definition |- TNet_types54 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) (dest_listTNet_types48 a))) [TNet_types55_def] Definition |- TNet_types55 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) (dest_optionTNet_types47 a))) [TNet_types56_def] Definition |- TNet_types56 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) (dest_errTNet_types46 a))) [TNet_types57_def] Definition |- TNet_types57 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types58_def] Definition |- TNet_types58 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types59_def] Definition |- TNet_types59 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types5_def] Definition |- TNet_types5 = (\a0 a1 a2. mk_msg ((\a0 a1 a2. CONSTR 0 (a0,a1,a2) (\n. BOTTOM)) a0 a1 a2)) [TNet_types60_def] Definition |- TNet_types60 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types61_def] Definition |- TNet_types61 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types62_def] Definition |- TNet_types62 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types63_def] Definition |- TNet_types63 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types64_def] Definition |- TNet_types64 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types65_def] Definition |- TNet_types65 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a,@v. T) (\n. BOTTOM)) a)) [TNet_types66_def] Definition |- TNet_types66 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a) (\n. BOTTOM)) a)) [TNet_types67_def] Definition |- TNet_types67 = (\a. mk_TLang ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) (dest_exceptTNet_types45 a))) [TNet_types68_def] Definition |- TNet_types68 = (\a0 a1. mk_prodTNet_types44 ((\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) (dest_TLang a0) (dest_TLang a1))) [TNet_types69_def] Definition |- TNet_types69 = (\a. mk_exceptTNet_types45 ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) (dest_TLang a))) [TNet_types6_def] Definition |- TNet_types6 = mk_ifid (CONSTR 0 (@v. T) (\n. BOTTOM)) [TNet_types70_def] Definition |- TNet_types70 = (\a. mk_exceptTNet_types45 ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a) (\n. BOTTOM)) a)) [TNet_types71_def] Definition |- TNet_types71 = (\a. mk_errTNet_types46 ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) (dest_TLang a))) [TNet_types72_def] Definition |- TNet_types72 = (\a. mk_errTNet_types46 ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types73_def] Definition |- TNet_types73 = (\a. mk_optionTNet_types47 ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) (dest_TLang a))) [TNet_types74_def] Definition |- TNet_types74 = mk_optionTNet_types47 (CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) [TNet_types75_def] Definition |- TNet_types75 = mk_listTNet_types48 (CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) [TNet_types76_def] Definition |- TNet_types76 = (\a0 a1. mk_listTNet_types48 ((\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) (dest_TLang a0) (dest_listTNet_types48 a1))) [TNet_types77] Definition |- TNet_types77 = (\a. TNet_types54 ((@fn. (fn [] = TNet_types75) /\ !a0 a1. fn (a0::a1) = TNet_types76 a0 (fn a1)) a)) [TNet_types78] Definition |- TNet_types78 = (\a. TNet_types55 ((@fn. (!x. fn (SOME x) = TNet_types73 x) /\ (fn NONE = TNet_types74)) a)) [TNet_types79] Definition |- TNet_types79 = (\a. TNet_types56 ((@fn. (!a. fn (OK a) = TNet_types71 a) /\ !a. fn (FAIL a) = TNet_types72 a) a)) [TNet_types7_def] Definition |- TNet_types7 = (\a. mk_ifid ((\a. CONSTR (SUC 0) a (\n. BOTTOM)) a)) [TNet_types80] Definition |- TNet_types80 = (\a. TNet_types67 ((@fn. (!a. fn (EOK a) = TNet_types69 a) /\ !a. fn (EEX a) = TNet_types70 a) a)) [TNet_types81] Definition |- TNet_types81 = (\a. TNet_types53 ((@fn. !x y. fn (x,y) = TNet_types68 x y) a)) [TNet_types82_def] Definition |- TNet_types82 = (\a. mk_timed ((\a. CONSTR 0 a (\n. BOTTOM)) a)) [TNet_types83_def] Definition |- TNet_types83 = mk_hostThreadState (CONSTR 0 ((@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) [TNet_types84_def] Definition |- TNet_types84 = mk_hostThreadState (CONSTR (SUC 0) ((@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) [TNet_types85_def] Definition |- TNet_types85 = mk_hostThreadState (CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) [TNet_types86_def] Definition |- TNet_types86 = (\a. mk_hostThreadState ((\a. CONSTR (SUC (SUC (SUC 0))) (a,(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types87_def] Definition |- TNet_types87 = (\a. mk_hostThreadState ((\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),a,(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types88_def] Definition |- TNet_types88 = (\a. mk_hostThreadState ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),a,(@v. T),@v. T) (\n. BOTTOM)) a)) [TNet_types89_def] Definition |- TNet_types89 = (\a. mk_hostThreadState ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),a,@v. T) (\n. BOTTOM)) a)) [TNet_types8_def] Definition |- TNet_types8 = (\a. mk_netmask ((\a. CONSTR 0 a (\n. BOTTOM)) a)) [TNet_types90_def] Definition |- TNet_types90 = mk_hostThreadState (CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) [TNet_types91_def] Definition |- TNet_types91 = (\a. mk_hostThreadState ((\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a) (\n. BOTTOM)) a)) [TNet_types92_def] Definition |- TNet_types92 = (\a0 a1 a2 a3 a4. mk_host ((\a0 a1 a2 a3 a4. CONSTR 0 (a0,a1,a2,a3,a4) (\n. BOTTOM)) a0 a1 a2 a3 a4)) [TNet_types9_def] Definition |- TNet_types9 = (\a0 a1 a2 a3. mk_ifd ((\a0 a1 a2 a3. CONSTR 0 (a0,a1,a2,a3) (\n. BOTTOM)) a0 a1 a2 a3)) [Timed] Definition |- Timed = TNet_types82 [UDP] Definition |- UDP = TNet_types2 [Zombie] Definition |- Zombie = TNet_types85 [errTNet_types46_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a3. !'TLang' 'prodTNet_types44' 'exceptTNet_types45' 'errTNet_types46' 'optionTNet_types47' 'listTNet_types48'. (!a0'. (?a. a0' = (\a. CONSTR 0 (a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC 0) ((@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC 0))) ((@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types44' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'listTNet_types48' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'optionTNet_types47' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'errTNet_types46' a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), a,@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'exceptTNet_types45' a) ==> 'TLang' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'TLang' a1) ==> 'prodTNet_types44' a1') /\ (!a2. (?a. (a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) ==> 'exceptTNet_types45' a2) /\ (!a3. (?a. (a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) ==> 'errTNet_types46' a3) /\ (!a4. (?a. (a4 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (a4 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) ==> 'optionTNet_types47' a4) /\ (!a5. (a5 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) \/ (?a0 a1. (a5 = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'listTNet_types48' a1) ==> 'listTNet_types48' a5) ==> 'errTNet_types46' a3) rep' [errTNet_types46_repfns] Definition |- (!a. mk_errTNet_types46 (dest_errTNet_types46 a) = a) /\ !r. (\a3. !'TLang' 'prodTNet_types44' 'exceptTNet_types45' 'errTNet_types46' 'optionTNet_types47' 'listTNet_types48'. (!a0'. (?a. a0' = (\a. CONSTR 0 (a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC 0) ((@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC 0))) ((@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types44' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'listTNet_types48' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'optionTNet_types47' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'errTNet_types46' a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'exceptTNet_types45' a) ==> 'TLang' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'TLang' a1) ==> 'prodTNet_types44' a1') /\ (!a2. (?a. (a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) ==> 'exceptTNet_types45' a2) /\ (!a3. (?a. (a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) ==> 'errTNet_types46' a3) /\ (!a4. (?a. (a4 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (a4 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) ==> 'optionTNet_types47' a4) /\ (!a5. (a5 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) \/ (?a0 a1. (a5 = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'listTNet_types48' a1) ==> 'listTNet_types48' a5) ==> 'errTNet_types46' a3) r = (dest_errTNet_types46 (mk_errTNet_types46 r) = r) [err_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0. !'err'. (!a0. (?a. a0 = (\a. CONSTR 0 (a,@v. T) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC 0) ((@v. T),a) (\n. BOTTOM)) a) ==> 'err' a0) ==> 'err' a0) rep' [err_case_def] Definition |- (!f f1 a. case f f1 (OK a) = f a) /\ !f f1 a. case f f1 (FAIL a) = f1 a [err_repfns] Definition |- (!a. mk_err (dest_err a) = a) /\ !r. (\a0. !'err'. (!a0. (?a. a0 = (\a. CONSTR 0 (a,@v. T) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC 0) ((@v. T),a) (\n. BOTTOM)) a) ==> 'err' a0) ==> 'err' a0) r = (dest_err (mk_err r) = r) [err_size_def] Definition |- (!f a. err_size f (OK a) = 1 + f a) /\ !f a. err_size f (FAIL a) = 1 + error_size a [error_BIJ] Definition |- (!a. num2error (error2num a) = a) /\ !r. (\n. n < 16) r = (error2num (num2error r) = r) [error_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\n. n < 16) rep' [error_case_def] Definition |- (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case EACCES of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x0) /\ (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case EADDRINUSE of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x1) /\ (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case EADDRNOTAVAIL of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x2) /\ (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case EAGAIN of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x3) /\ (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case EBADF of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x4) /\ (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case ECONNREFUSED of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x5) /\ (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case EHOSTUNREACH of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x6) /\ (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case EINTR of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x7) /\ (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case EINVAL of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x8) /\ (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case EMFILE of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x9) /\ (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case EMSGSIZE of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x10) /\ (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case ENFILE of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x11) /\ (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case ENOBUFS of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x12) /\ (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case ENOMEM of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x13) /\ (!x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case ENOTCONN of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x14) /\ !x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (case ENOTSOCK of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = x15 [error_size_def] Definition |- !x. error_size x = 0 [exceptTNet_types45_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a2. !'TLang' 'prodTNet_types44' 'exceptTNet_types45' 'errTNet_types46' 'optionTNet_types47' 'listTNet_types48'. (!a0'. (?a. a0' = (\a. CONSTR 0 (a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC 0) ((@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC 0))) ((@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types44' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'listTNet_types48' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'optionTNet_types47' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'errTNet_types46' a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), a,@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'exceptTNet_types45' a) ==> 'TLang' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'TLang' a1) ==> 'prodTNet_types44' a1') /\ (!a2. (?a. (a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) ==> 'exceptTNet_types45' a2) /\ (!a3. (?a. (a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) ==> 'errTNet_types46' a3) /\ (!a4. (?a. (a4 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (a4 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) ==> 'optionTNet_types47' a4) /\ (!a5. (a5 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) \/ (?a0 a1. (a5 = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'listTNet_types48' a1) ==> 'listTNet_types48' a5) ==> 'exceptTNet_types45' a2) rep' [exceptTNet_types45_repfns] Definition |- (!a. mk_exceptTNet_types45 (dest_exceptTNet_types45 a) = a) /\ !r. (\a2. !'TLang' 'prodTNet_types44' 'exceptTNet_types45' 'errTNet_types46' 'optionTNet_types47' 'listTNet_types48'. (!a0'. (?a. a0' = (\a. CONSTR 0 (a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC 0) ((@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC 0))) ((@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types44' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'listTNet_types48' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'optionTNet_types47' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'errTNet_types46' a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'exceptTNet_types45' a) ==> 'TLang' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'TLang' a1) ==> 'prodTNet_types44' a1') /\ (!a2. (?a. (a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) ==> 'exceptTNet_types45' a2) /\ (!a3. (?a. (a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) ==> 'errTNet_types46' a3) /\ (!a4. (?a. (a4 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (a4 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) ==> 'optionTNet_types47' a4) /\ (!a5. (a5 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) \/ (?a0 a1. (a5 = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'listTNet_types48' a1) ==> 'listTNet_types48' a5) ==> 'exceptTNet_types45' a2) r = (dest_exceptTNet_types45 (mk_exceptTNet_types45 r) = r) [except_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0. !'except'. (!a0. (?a. a0 = (\a. CONSTR 0 (a,@v. T) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC 0) ((@v. T),a) (\n. BOTTOM)) a) ==> 'except' a0) ==> 'except' a0) rep' [except_case_def] Definition |- (!f f1 a. case f f1 (EOK a) = f a) /\ !f f1 a. case f f1 (EEX a) = f1 a [except_repfns] Definition |- (!a. mk_except (dest_except a) = a) /\ !r. (\a0. !'except'. (!a0. (?a. a0 = (\a. CONSTR 0 (a,@v. T) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC 0) ((@v. T),a) (\n. BOTTOM)) a) ==> 'except' a0) ==> 'except' a0) r = (dest_except (mk_except r) = r) [except_size_def] Definition |- (!f a. except_size f (EOK a) = 1 + f a) /\ !f a. except_size f (EEX a) = 1 + exn_size a [exn_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0. !'exn'. (!a0. (?a. a0 = (\a. CONSTR 0 (a,@v. T) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC 0) ((@v. T),a) (\n. BOTTOM)) a) ==> 'exn' a0) ==> 'exn' a0) rep' [exn_case_def] Definition |- (!f f1 a. case f f1 (EX_udp a) = f a) /\ !f f1 a. case f f1 (EX_match_failure a) = f1 a [exn_repfns] Definition |- (!a. mk_exn (dest_exn a) = a) /\ !r. (\a0. !'exn'. (!a0. (?a. a0 = (\a. CONSTR 0 (a,@v. T) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC 0) ((@v. T),a) (\n. BOTTOM)) a) ==> 'exn' a0) ==> 'exn' a0) r = (dest_exn (mk_exn r) = r) [exn_size_def] Definition |- (!a. exn_size (EX_udp a) = 1 + error_size a) /\ !a. exn_size (EX_match_failure a) = 1 + (\(x,y). string_size x + (\(x,y). (\x. x) x + (\x. x) y) y) a [fd_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0. !'fd'. (!a0. (?a. a0 = (\a. CONSTR 0 a (\n. BOTTOM)) a) ==> 'fd' a0) ==> 'fd' a0) rep' [fd_case_def] Definition |- !f a. case f (FD a) = f a [fd_repfns] Definition |- (!a. mk_fd (dest_fd a) = a) /\ !r. (\a0. !'fd'. (!a0. (?a. a0 = (\a. CONSTR 0 a (\n. BOTTOM)) a) ==> 'fd' a0) ==> 'fd' a0) r = (dest_fd (mk_fd r) = r) [fd_size_def] Definition |- !a. fd_size (FD a) = 1 [flags] Definition |- flags = TNet_types13 [flags_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0'. !'flags'. (!a0'. (?a0 a1. a0' = (\a0 a1. CONSTR 0 (a0,a1) (\n. BOTTOM)) a0 a1) ==> 'flags' a0') ==> 'flags' a0') rep' [flags_bsdcompat] Definition |- !b b0. (flags b b0).bsdcompat = b [flags_bsdcompat_fupd] Definition |- !f x. x with bsdcompat updated_by f = x with bsdcompat := f x.bsdcompat [flags_bsdcompat_update] Definition |- !b1 b b0. flags b b0 with bsdcompat := b1 = flags b1 b0 [flags_case_def] Definition |- !f a0 a1. case f (flags a0 a1) = f a0 a1 [flags_repfns] Definition |- (!a. mk_flags (dest_flags a) = a) /\ !r. (\a0'. !'flags'. (!a0'. (?a0 a1. a0' = (\a0 a1. CONSTR 0 (a0,a1) (\n. BOTTOM)) a0 a1) ==> 'flags' a0') ==> 'flags' a0') r = (dest_flags (mk_flags r) = r) [flags_reuseaddr] Definition |- !b b0. (flags b b0).reuseaddr = b0 [flags_reuseaddr_fupd] Definition |- !f x. x with reuseaddr updated_by f = x with reuseaddr := f x.reuseaddr [flags_reuseaddr_update] Definition |- !b1 b b0. flags b b0 with reuseaddr := b1 = flags b b1 [flags_size_def] Definition |- !a0 a1. flags_size (flags a0 a1) = 1 + ((case a0 of T -> 0 || F -> 0) + case a1 of T -> 0 || F -> 0) [host] Definition |- host = TNet_types92 [hostThreadState_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0. !'hostThreadState'. (!a0. (a0 = CONSTR 0 ((@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) \/ (a0 = CONSTR (SUC 0) ((@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) \/ (a0 = CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) \/ (?a. a0 = (\a. CONSTR (SUC (SUC (SUC 0))) (a,(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),a,(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),a,(@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),a,@v. T) (\n. BOTTOM)) a) \/ (a0 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) \/ (?a. a0 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a) (\n. BOTTOM)) a) ==> 'hostThreadState' a0) ==> 'hostThreadState' a0) rep' [hostThreadState_case_def] Definition |- (!v v1 v2 f f1 f2 f3 v3 f4. case v v1 v2 f f1 f2 f3 v3 f4 Run = v) /\ (!v v1 v2 f f1 f2 f3 v3 f4. case v v1 v2 f f1 f2 f3 v3 f4 Exit = v1) /\ (!v v1 v2 f f1 f2 f3 v3 f4. case v v1 v2 f f1 f2 f3 v3 f4 Zombie = v2) /\ (!v v1 v2 f f1 f2 f3 v3 f4 a. case v v1 v2 f f1 f2 f3 v3 f4 (Ret a) = f a) /\ (!v v1 v2 f f1 f2 f3 v3 f4 a. case v v1 v2 f f1 f2 f3 v3 f4 (Sendto2 a) = f1 a) /\ (!v v1 v2 f f1 f2 f3 v3 f4 a. case v v1 v2 f f1 f2 f3 v3 f4 (Recvfrom2 a) = f2 a) /\ (!v v1 v2 f f1 f2 f3 v3 f4 a. case v v1 v2 f f1 f2 f3 v3 f4 (Select2 a) = f3 a) /\ (!v v1 v2 f f1 f2 f3 v3 f4. case v v1 v2 f f1 f2 f3 v3 f4 Delay2 = v3) /\ !v v1 v2 f f1 f2 f3 v3 f4 a. case v v1 v2 f f1 f2 f3 v3 f4 (Print2 a) = f4 a [hostThreadState_repfns] Definition |- (!a. mk_hostThreadState (dest_hostThreadState a) = a) /\ !r. (\a0. !'hostThreadState'. (!a0. (a0 = CONSTR 0 ((@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) \/ (a0 = CONSTR (SUC 0) ((@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) \/ (a0 = CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) \/ (?a. a0 = (\a. CONSTR (SUC (SUC (SUC 0))) (a,(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),a,(@v. T),(@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),a,(@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),a,@v. T) (\n. BOTTOM)) a) \/ (a0 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),@v. T) (\n. BOTTOM)) \/ (?a. a0 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a) (\n. BOTTOM)) a) ==> 'hostThreadState' a0) ==> 'hostThreadState' a0) r = (dest_hostThreadState (mk_hostThreadState r) = r) [hostThreadState_size_def] Definition |- (hostThreadState_size Run = 0) /\ (hostThreadState_size Exit = 0) /\ (hostThreadState_size Zombie = 0) /\ (!a. hostThreadState_size (Ret a) = 1 + TLang_size a) /\ (!a. hostThreadState_size (Sendto2 a) = 1 + (\(x,y). fd_size x + (\(x,y). (case x of NONE -> 0 || SOME x -> SUC ((\(x,y). ip_size x + port_size y) x)) + (\(x,y). (case x of NONE -> 0 || SOME x -> SUC (ip_size x)) + (\(x,y). (case x of NONE -> 0 || SOME x -> SUC (port_size x)) + (\(x,y). (case x of NONE -> 0 || SOME x -> SUC (ip_size x)) + (\(x,y). (case x of NONE -> 0 || SOME x -> SUC (port_size x)) + string_size y) y) y) y) y) y) a) /\ (!a. hostThreadState_size (Recvfrom2 a) = 1 + fd_size a) /\ (!a. hostThreadState_size (Select2 a) = 1 + (\(x,y). list_size fd_size x + list_size fd_size y) a) /\ (hostThreadState_size Delay2 = 0) /\ !a. hostThreadState_size (Print2 a) = 1 + string_size a [host_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0'. !'host'. (!a0'. (?a0 a1 a2 a3 a4. a0' = (\a0 a1 a2 a3 a4. CONSTR 0 (a0,a1,a2,a3,a4) (\n. BOTTOM)) a0 a1 a2 a3 a4) ==> 'host' a0') ==> 'host' a0') rep' [host_case_def] Definition |- !f a0 a1 a2 a3 a4. case f (host a0 a1 a2 a3 a4) = f a0 a1 a2 a3 a4 [host_ifds] Definition |- !f f0 l t b. (host f f0 l t b).ifds = f [host_ifds_fupd] Definition |- !f x. x with ifds updated_by f = x with ifds := f x.ifds [host_ifds_update] Definition |- !f1 f f0 l t b. host f f0 l t b with ifds := f1 = host f1 f0 l t b [host_oq] Definition |- !f f0 l t b. (host f f0 l t b).oq = t [host_oq_fupd] Definition |- !f x. x with oq updated_by f = x with oq := f x.oq [host_oq_update] Definition |- !t0 f f0 l t b. host f f0 l t b with oq := t0 = host f f0 l t0 b [host_oqf] Definition |- !f f0 l t b. (host f f0 l t b).oqf = b [host_oqf_fupd] Definition |- !f x. x with oqf updated_by f = x with oqf := f x.oqf [host_oqf_update] Definition |- !b0 f f0 l t b. host f f0 l t b with oqf := b0 = host f f0 l t b0 [host_repfns] Definition |- (!a. mk_host (dest_host a) = a) /\ !r. (\a0'. !'host'. (!a0'. (?a0 a1 a2 a3 a4. a0' = (\a0 a1 a2 a3 a4. CONSTR 0 (a0,a1,a2,a3,a4) (\n. BOTTOM)) a0 a1 a2 a3 a4) ==> 'host' a0') ==> 'host' a0') r = (dest_host (mk_host r) = r) [host_s] Definition |- !f f0 l t b. (host f f0 l t b).s = l [host_s_fupd] Definition |- !f x. x with s updated_by f = x with s := f x.s [host_s_update] Definition |- !l0 f f0 l t b. host f f0 l t b with s := l0 = host f f0 l0 t b [host_size_def] Definition |- !a0 a1 a2 a3 a4. host_size (host a0 a1 a2 a3 a4) = 1 + (list_size socket_size a2 + (timed_size (list_size msg_size) a3 + case a4 of T -> 0 || F -> 0)) [host_ts] Definition |- !f f0 l t b. (host f f0 l t b).ts = f0 [host_ts_fupd] Definition |- !f x. x with ts updated_by f = x with ts := f x.ts [host_ts_update] Definition |- !f1 f f0 l t b. host f f0 l t b with ts := f1 = host f f1 l t b [ifd] Definition |- ifd = TNet_types9 [ifd_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0'. !'ifd'. (!a0'. (?a0 a1 a2 a3. a0' = (\a0 a1 a2 a3. CONSTR 0 (a0,a1,a2,a3) (\n. BOTTOM)) a0 a1 a2 a3) ==> 'ifd' a0') ==> 'ifd' a0') rep' [ifd_case_def] Definition |- !f a0 a1 a2 a3. case f (ifd a0 a1 a2 a3) = f a0 a1 a2 a3 [ifd_ifid] Definition |- !i f i0 n. (ifd i f i0 n).ifid = i [ifd_ifid_fupd] Definition |- !f x. x with ifid updated_by f = x with ifid := f x.ifid [ifd_ifid_update] Definition |- !i1 i f i0 n. ifd i f i0 n with ifid := i1 = ifd i1 f i0 n [ifd_ipset] Definition |- !i f i0 n. (ifd i f i0 n).ipset = f [ifd_ipset_fupd] Definition |- !f x. x with ipset updated_by f = x with ipset := f x.ipset [ifd_ipset_update] Definition |- !f0 i f i0 n. ifd i f i0 n with ipset := f0 = ifd i f0 i0 n [ifd_netmask] Definition |- !i f i0 n. (ifd i f i0 n).netmask = n [ifd_netmask_fupd] Definition |- !f x. x with netmask updated_by f = x with netmask := f x.netmask [ifd_netmask_update] Definition |- !n0 i f i0 n. ifd i f i0 n with netmask := n0 = ifd i f i0 n0 [ifd_primary] Definition |- !i f i0 n. (ifd i f i0 n).primary = i0 [ifd_primary_fupd] Definition |- !f x. x with primary updated_by f = x with primary := f x.primary [ifd_primary_update] Definition |- !i1 i f i0 n. ifd i f i0 n with primary := i1 = ifd i f i1 n [ifd_repfns] Definition |- (!a. mk_ifd (dest_ifd a) = a) /\ !r. (\a0'. !'ifd'. (!a0'. (?a0 a1 a2 a3. a0' = (\a0 a1 a2 a3. CONSTR 0 (a0,a1,a2,a3) (\n. BOTTOM)) a0 a1 a2 a3) ==> 'ifd' a0') ==> 'ifd' a0') r = (dest_ifd (mk_ifd r) = r) [ifd_size_def] Definition |- !a0 a1 a2 a3. ifd_size (ifd a0 a1 a2 a3) = 1 + (ifid_size a0 + (ip_size a2 + netmask_size a3)) [ifid_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0. !'ifid'. (!a0. (a0 = CONSTR 0 (@v. T) (\n. BOTTOM)) \/ (?a. a0 = (\a. CONSTR (SUC 0) a (\n. BOTTOM)) a) ==> 'ifid' a0) ==> 'ifid' a0) rep' [ifid_case_def] Definition |- (!v f. case v f LO = v) /\ !v f a. case v f (ETH a) = f a [ifid_repfns] Definition |- (!a. mk_ifid (dest_ifid a) = a) /\ !r. (\a0. !'ifid'. (!a0. (a0 = CONSTR 0 (@v. T) (\n. BOTTOM)) \/ (?a. a0 = (\a. CONSTR (SUC 0) a (\n. BOTTOM)) a) ==> 'ifid' a0) ==> 'ifid' a0) r = (dest_ifid (mk_ifid r) = r) [ifid_size_def] Definition |- (ifid_size LO = 0) /\ !a. ifid_size (ETH a) = 1 + a [ip] Definition |- ip = TNet_types1 [ipBody_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0. !'ipBody'. (!a0. (?a. a0 = (\a. CONSTR 0 (a,@v. T) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC 0) ((@v. T),a) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC (SUC 0)) ((@v. T),a) (\n. BOTTOM)) a) ==> 'ipBody' a0) ==> 'ipBody' a0) rep' [ipBody_case_def] Definition |- (!f f1 f2 a. case f f1 f2 (UDP a) = f a) /\ (!f f1 f2 a. case f f1 f2 (ICMP_HOST_UNREACH a) = f1 a) /\ !f f1 f2 a. case f f1 f2 (ICMP_PORT_UNREACH a) = f2 a [ipBody_repfns] Definition |- (!a. mk_ipBody (dest_ipBody a) = a) /\ !r. (\a0. !'ipBody'. (!a0. (?a. a0 = (\a. CONSTR 0 (a,@v. T) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC 0) ((@v. T),a) (\n. BOTTOM)) a) \/ (?a. a0 = (\a. CONSTR (SUC (SUC 0)) ((@v. T),a) (\n. BOTTOM)) a) ==> 'ipBody' a0) ==> 'ipBody' a0) r = (dest_ipBody (mk_ipBody r) = r) [ipBody_size_def] Definition |- (!a. ipBody_size (UDP a) = 1 + (\(x,y). (case x of NONE -> 0 || SOME x -> SUC (port_size x)) + (\(x,y). (case x of NONE -> 0 || SOME x -> SUC (port_size x)) + string_size y) y) a) /\ (!a. ipBody_size (ICMP_HOST_UNREACH a) = 1 + (\(x,y). ip_size x + (\(x,y). (case x of NONE -> 0 || SOME x -> SUC (port_size x)) + (\(x,y). ip_size x + case y of NONE -> 0 || SOME x -> SUC (port_size x)) y) y) a) /\ !a. ipBody_size (ICMP_PORT_UNREACH a) = 1 + (\(x,y). ip_size x + (\(x,y). (case x of NONE -> 0 || SOME x -> SUC (port_size x)) + (\(x,y). ip_size x + case y of NONE -> 0 || SOME x -> SUC (port_size x)) y) y) a [ip_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0. !'ip'. (!a0. (?a. a0 = (\a. CONSTR 0 a (\n. BOTTOM)) a) ==> 'ip' a0) ==> 'ip' a0) rep' [ip_case_def] Definition |- !f a. case f (ip a) = f a [ip_repfns] Definition |- (!a. mk_ip (dest_ip a) = a) /\ !r. (\a0. !'ip'. (!a0. (?a. a0 = (\a. CONSTR 0 a (\n. BOTTOM)) a) ==> 'ip' a0) ==> 'ip' a0) r = (dest_ip (mk_ip r) = r) [ip_size_def] Definition |- !a. ip_size (ip a) = 1 + a [listTNet_types48_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a5. !'TLang' 'prodTNet_types44' 'exceptTNet_types45' 'errTNet_types46' 'optionTNet_types47' 'listTNet_types48'. (!a0'. (?a. a0' = (\a. CONSTR 0 (a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC 0) ((@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC 0))) ((@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types44' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'listTNet_types48' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'optionTNet_types47' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'errTNet_types46' a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), a,@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'exceptTNet_types45' a) ==> 'TLang' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'TLang' a1) ==> 'prodTNet_types44' a1') /\ (!a2. (?a. (a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) ==> 'exceptTNet_types45' a2) /\ (!a3. (?a. (a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) ==> 'errTNet_types46' a3) /\ (!a4. (?a. (a4 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (a4 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) ==> 'optionTNet_types47' a4) /\ (!a5. (a5 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) \/ (?a0 a1. (a5 = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'listTNet_types48' a1) ==> 'listTNet_types48' a5) ==> 'listTNet_types48' a5) rep' [listTNet_types48_repfns] Definition |- (!a. mk_listTNet_types48 (dest_listTNet_types48 a) = a) /\ !r. (\a5. !'TLang' 'prodTNet_types44' 'exceptTNet_types45' 'errTNet_types46' 'optionTNet_types47' 'listTNet_types48'. (!a0'. (?a. a0' = (\a. CONSTR 0 (a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC 0) ((@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC 0))) ((@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types44' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'listTNet_types48' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'optionTNet_types47' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'errTNet_types46' a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'exceptTNet_types45' a) ==> 'TLang' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'TLang' a1) ==> 'prodTNet_types44' a1') /\ (!a2. (?a. (a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) ==> 'exceptTNet_types45' a2) /\ (!a3. (?a. (a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) ==> 'errTNet_types46' a3) /\ (!a4. (?a. (a4 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (a4 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) ==> 'optionTNet_types47' a4) /\ (!a5. (a5 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) \/ (?a0 a1. (a5 = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'listTNet_types48' a1) ==> 'listTNet_types48' a5) ==> 'listTNet_types48' a5) r = (dest_listTNet_types48 (mk_listTNet_types48 r) = r) [location_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0. !'location'. (!a0. (?a. a0 = (\a. CONSTR 0 a (\n. BOTTOM)) a) ==> 'location' a0) ==> 'location' a0) rep' [location_case_def] Definition |- !f a. case f (Loc a) = f a [location_repfns] Definition |- (!a. mk_location (dest_location a) = a) /\ !r. (\a0. !'location'. (!a0. (?a. a0 = (\a. CONSTR 0 a (\n. BOTTOM)) a) ==> 'location' a0) ==> 'location' a0) r = (dest_location (mk_location r) = r) [location_size_def] Definition |- !a. location_size (Loc a) = 1 + (\(x,y). TLang_type_size x + (\x. x) y) a [msg] Definition |- msg = TNet_types5 [msg_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0'. !'msg'. (!a0'. (?a0 a1 a2. a0' = (\a0 a1 a2. CONSTR 0 (a0,a1,a2) (\n. BOTTOM)) a0 a1 a2) ==> 'msg' a0') ==> 'msg' a0') rep' [msg_body] Definition |- !i i0 i1. (msg i i0 i1).body = i1 [msg_body_fupd] Definition |- !f x. x with body updated_by f = x with body := f x.body [msg_body_update] Definition |- !i2 i i0 i1. msg i i0 i1 with body := i2 = msg i i0 i2 [msg_case_def] Definition |- !f a0 a1 a2. case f (msg a0 a1 a2) = f a0 a1 a2 [msg_dest] Definition |- !i i0 i1. (msg i i0 i1).dest = i0 [msg_dest_fupd] Definition |- !f x. x with dest updated_by f = x with dest := f x.dest [msg_dest_update] Definition |- !i2 i i0 i1. msg i i0 i1 with dest := i2 = msg i i2 i1 [msg_repfns] Definition |- (!a. mk_msg (dest_msg a) = a) /\ !r. (\a0'. !'msg'. (!a0'. (?a0 a1 a2. a0' = (\a0 a1 a2. CONSTR 0 (a0,a1,a2) (\n. BOTTOM)) a0 a1 a2) ==> 'msg' a0') ==> 'msg' a0') r = (dest_msg (mk_msg r) = r) [msg_size_def] Definition |- !a0 a1 a2. msg_size (msg a0 a1 a2) = 1 + (ip_size a0 + (ip_size a1 + ipBody_size a2)) [msg_src] Definition |- !i i0 i1. (msg i i0 i1).src = i [msg_src_fupd] Definition |- !f x. x with src updated_by f = x with src := f x.src [msg_src_update] Definition |- !i2 i i0 i1. msg i i0 i1 with src := i2 = msg i2 i0 i1 [neq_def] Definition |- !x y. (x <> y) = ~(x = y) [netmask_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0. !'netmask'. (!a0. (?a. a0 = (\a. CONSTR 0 a (\n. BOTTOM)) a) ==> 'netmask' a0) ==> 'netmask' a0) rep' [netmask_case_def] Definition |- !f a. case f (NETMASK a) = f a [netmask_repfns] Definition |- (!a. mk_netmask (dest_netmask a) = a) /\ !r. (\a0. !'netmask'. (!a0. (?a. a0 = (\a. CONSTR 0 a (\n. BOTTOM)) a) ==> 'netmask' a0) ==> 'netmask' a0) r = (dest_netmask (mk_netmask r) = r) [netmask_size_def] Definition |- !a. netmask_size (NETMASK a) = 1 + a [optionTNet_types47_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a4. !'TLang' 'prodTNet_types44' 'exceptTNet_types45' 'errTNet_types46' 'optionTNet_types47' 'listTNet_types48'. (!a0'. (?a. a0' = (\a. CONSTR 0 (a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC 0) ((@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC 0))) ((@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types44' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'listTNet_types48' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'optionTNet_types47' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'errTNet_types46' a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), a,@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'exceptTNet_types45' a) ==> 'TLang' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'TLang' a1) ==> 'prodTNet_types44' a1') /\ (!a2. (?a. (a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) ==> 'exceptTNet_types45' a2) /\ (!a3. (?a. (a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) ==> 'errTNet_types46' a3) /\ (!a4. (?a. (a4 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (a4 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) ==> 'optionTNet_types47' a4) /\ (!a5. (a5 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) \/ (?a0 a1. (a5 = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'listTNet_types48' a1) ==> 'listTNet_types48' a5) ==> 'optionTNet_types47' a4) rep' [optionTNet_types47_repfns] Definition |- (!a. mk_optionTNet_types47 (dest_optionTNet_types47 a) = a) /\ !r. (\a4. !'TLang' 'prodTNet_types44' 'exceptTNet_types45' 'errTNet_types46' 'optionTNet_types47' 'listTNet_types48'. (!a0'. (?a. a0' = (\a. CONSTR 0 (a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC 0) ((@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC 0))) ((@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types44' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'listTNet_types48' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'optionTNet_types47' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'errTNet_types46' a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'exceptTNet_types45' a) ==> 'TLang' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'TLang' a1) ==> 'prodTNet_types44' a1') /\ (!a2. (?a. (a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) ==> 'exceptTNet_types45' a2) /\ (!a3. (?a. (a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) ==> 'errTNet_types46' a3) /\ (!a4. (?a. (a4 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (a4 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) ==> 'optionTNet_types47' a4) /\ (!a5. (a5 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) \/ (?a0 a1. (a5 = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'listTNet_types48' a1) ==> 'listTNet_types48' a5) ==> 'optionTNet_types47' a4) r = (dest_optionTNet_types47 (mk_optionTNet_types47 r) = r) [port_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0. !'port'. (!a0. (?a. a0 = (\a. CONSTR 0 a (\n. BOTTOM)) a) ==> 'port' a0) ==> 'port' a0) rep' [port_case_def] Definition |- !f a. case f (Port a) = f a [port_repfns] Definition |- (!a. mk_port (dest_port a) = a) /\ !r. (\a0. !'port'. (!a0. (?a. a0 = (\a. CONSTR 0 a (\n. BOTTOM)) a) ==> 'port' a0) ==> 'port' a0) r = (dest_port (mk_port r) = r) [port_size_def] Definition |- !a. port_size (Port a) = 1 + a [prodTNet_types20_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a1'. !'TLang_type' 'prodTNet_types20'. (!a0'. (a0' = CONSTR 0 (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC 0) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC 0)) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC 0))) (@x. T) (\n. BOTTOM)) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types20' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) (@x. T) (\n. BOTTOM)) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) (@x. T) (\n. BOTTOM)) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) ==> 'TLang_type' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) (@x. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang_type' a0 /\ 'TLang_type' a1) ==> 'prodTNet_types20' a1') ==> 'prodTNet_types20' a1') rep' [prodTNet_types20_repfns] Definition |- (!a. mk_prodTNet_types20 (dest_prodTNet_types20 a) = a) /\ !r. (\a1'. !'TLang_type' 'prodTNet_types20'. (!a0'. (a0' = CONSTR 0 (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC 0) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC 0)) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC 0))) (@x. T) (\n. BOTTOM)) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types20' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) (@x. T) (\n. BOTTOM)) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) (@x. T) (\n. BOTTOM)) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) \/ (a0' = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) (@x. T) (\n. BOTTOM)) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) (@x. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang_type' a) ==> 'TLang_type' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) (@x. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang_type' a0 /\ 'TLang_type' a1) ==> 'prodTNet_types20' a1') ==> 'prodTNet_types20' a1') r = (dest_prodTNet_types20 (mk_prodTNet_types20 r) = r) [prodTNet_types44_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a1'. !'TLang' 'prodTNet_types44' 'exceptTNet_types45' 'errTNet_types46' 'optionTNet_types47' 'listTNet_types48'. (!a0'. (?a. a0' = (\a. CONSTR 0 (a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC 0) ((@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC 0))) ((@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types44' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'listTNet_types48' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'optionTNet_types47' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'errTNet_types46' a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), a,@v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'exceptTNet_types45' a) ==> 'TLang' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'TLang' a1) ==> 'prodTNet_types44' a1') /\ (!a2. (?a. (a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) ==> 'exceptTNet_types45' a2) /\ (!a3. (?a. (a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) a) ==> 'errTNet_types46' a3) /\ (!a4. (?a. (a4 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (a4 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) ==> 'optionTNet_types47' a4) /\ (!a5. (a5 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) \/ (?a0 a1. (a5 = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'listTNet_types48' a1) ==> 'listTNet_types48' a5) ==> 'prodTNet_types44' a1') rep' [prodTNet_types44_repfns] Definition |- (!a. mk_prodTNet_types44 (dest_prodTNet_types44 a) = a) /\ !r. (\a1'. !'TLang' 'prodTNet_types44' 'exceptTNet_types45' 'errTNet_types46' 'optionTNet_types47' 'listTNet_types48'. (!a0'. (?a. a0' = (\a. CONSTR 0 (a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC 0) ((@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC 0)) ((@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC 0))) ((@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC 0)))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'prodTNet_types44' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC 0))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'listTNet_types48' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC 0)))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'optionTNet_types47' a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'errTNet_types46' a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))) ((@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a,(@v. T), @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T),a, @v. T) (\n. BOTTOM)) a) \/ (?a. a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) \/ (?a. (a0' = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'exceptTNet_types45' a) ==> 'TLang' a0') /\ (!a1'. (?a0 a1. (a1' = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'TLang' a1) ==> 'prodTNet_types44' a1') /\ (!a2. (?a. (a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a2 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a) (\n. BOTTOM)) a) ==> 'exceptTNet_types45' a2) /\ (!a3. (?a. (a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (?a. a3 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),a,(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), @v. T) (\n. BOTTOM)) a) ==> 'errTNet_types46' a3) /\ (!a4. (?a. (a4 = (\a. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a (\n. BOTTOM))) a) /\ 'TLang' a) \/ (a4 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) ==> 'optionTNet_types47' a4) /\ (!a5. (a5 = CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0)))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (\n. BOTTOM)) \/ (?a0 a1. (a5 = (\a0 a1. CONSTR (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC (SUC 0))))))))))))))))))))))))))) ((@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),(@v. T),(@v. T),(@v. T),(@v. T),(@v. T), (@v. T),@v. T) (FCONS a0 (FCONS a1 (\n. BOTTOM)))) a0 a1) /\ 'TLang' a0 /\ 'listTNet_types48' a1) ==> 'listTNet_types48' a5) ==> 'prodTNet_types44' a1') r = (dest_prodTNet_types44 (mk_prodTNet_types44 r) = r) [socket] Definition |- socket = TNet_types14 [socket_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0'. !'socket'. (!a0'. (?a0 a1 a2 a3 a4 a5 a6 a7. a0' = (\a0 a1 a2 a3 a4 a5 a6 a7. CONSTR 0 (a0,a1,a2,a3,a4,a5,a6,a7) (\n. BOTTOM)) a0 a1 a2 a3 a4 a5 a6 a7) ==> 'socket' a0') ==> 'socket' a0') rep' [socket_case_def] Definition |- !f a0 a1 a2 a3 a4 a5 a6 a7. case f (socket a0 a1 a2 a3 a4 a5 a6 a7) = f a0 a1 a2 a3 a4 a5 a6 a7 [socket_es] Definition |- !f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).es = o3 [socket_es_fupd] Definition |- !f x. x with es updated_by f = x with es := f x.es [socket_es_update] Definition |- !o4 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with es := o4 = socket f $o o0 o1 o2 o4 f0 l [socket_f] Definition |- !f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).f = f0 [socket_f_fupd] Definition |- !f x. x with f updated_by f = x with f := f x.f [socket_f_update] Definition |- !f1 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with f := f1 = socket f $o o0 o1 o2 o3 f1 l [socket_fd] Definition |- !f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).fd = f [socket_fd_fupd] Definition |- !f x. x with fd updated_by f = x with fd := f x.fd [socket_fd_update] Definition |- !f1 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with fd := f1 = socket f1 $o o0 o1 o2 o3 f0 l [socket_is1] Definition |- !f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).is1 = $o [socket_is1_fupd] Definition |- !f x. x with is1 updated_by f = x with is1 := f x.is1 [socket_is1_update] Definition |- !o4 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with is1 := o4 = socket f o4 o0 o1 o2 o3 f0 l [socket_is2] Definition |- !f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).is2 = o1 [socket_is2_fupd] Definition |- !f x. x with is2 updated_by f = x with is2 := f x.is2 [socket_is2_update] Definition |- !o4 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with is2 := o4 = socket f $o o0 o4 o2 o3 f0 l [socket_mq] Definition |- !f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).mq = l [socket_mq_fupd] Definition |- !f x. x with mq updated_by f = x with mq := f x.mq [socket_mq_update] Definition |- !l0 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with mq := l0 = socket f $o o0 o1 o2 o3 f0 l0 [socket_ps1] Definition |- !f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).ps1 = o0 [socket_ps1_fupd] Definition |- !f x. x with ps1 updated_by f = x with ps1 := f x.ps1 [socket_ps1_update] Definition |- !o4 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with ps1 := o4 = socket f $o o4 o1 o2 o3 f0 l [socket_ps2] Definition |- !f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).ps2 = o2 [socket_ps2_fupd] Definition |- !f x. x with ps2 updated_by f = x with ps2 := f x.ps2 [socket_ps2_update] Definition |- !o4 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with ps2 := o4 = socket f $o o0 o1 o4 o3 f0 l [socket_repfns] Definition |- (!a. mk_socket (dest_socket a) = a) /\ !r. (\a0'. !'socket'. (!a0'. (?a0 a1 a2 a3 a4 a5 a6 a7. a0' = (\a0 a1 a2 a3 a4 a5 a6 a7. CONSTR 0 (a0,a1,a2,a3,a4,a5,a6,a7) (\n. BOTTOM)) a0 a1 a2 a3 a4 a5 a6 a7) ==> 'socket' a0') ==> 'socket' a0') r = (dest_socket (mk_socket r) = r) [socket_size_def] Definition |- !a0 a1 a2 a3 a4 a5 a6 a7. socket_size (socket a0 a1 a2 a3 a4 a5 a6 a7) = 1 + (fd_size a0 + ((case a1 of NONE -> 0 || SOME x -> SUC (ip_size x)) + ((case a2 of NONE -> 0 || SOME x -> SUC (port_size x)) + ((case a3 of NONE -> 0 || SOME x -> SUC (ip_size x)) + ((case a4 of NONE -> 0 || SOME x -> SUC (port_size x)) + ((case a5 of NONE -> 0 || SOME x -> SUC (error_size x)) + (flags_size a6 + list_size (\(x,y). msg_size x + ifid_size y) a7))))))) [sockopt_BIJ] Definition |- (!a. num2sockopt (sockopt2num a) = a) /\ !r. (\n. n < 2) r = (sockopt2num (num2sockopt r) = r) [sockopt_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\n. n < 2) rep' [sockopt_case_def] Definition |- (!x0 x1. (case SO_BSDCOMPAT of SO_BSDCOMPAT -> x0 || SO_REUSEADDR -> x1) = x0) /\ !x0 x1. (case SO_REUSEADDR of SO_BSDCOMPAT -> x0 || SO_REUSEADDR -> x1) = x1 [sockopt_size_def] Definition |- !x. sockopt_size x = 0 [tid_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0. !'tid'. (!a0. (?a. a0 = (\a. CONSTR 0 a (\n. BOTTOM)) a) ==> 'tid' a0) ==> 'tid' a0) rep' [tid_case_def] Definition |- !f a. case f (TID a) = f a [tid_repfns] Definition |- (!a. mk_tid (dest_tid a) = a) /\ !r. (\a0. !'tid'. (!a0. (?a. a0 = (\a. CONSTR 0 a (\n. BOTTOM)) a) ==> 'tid' a0) ==> 'tid' a0) r = (dest_tid (mk_tid r) = r) [tid_size_def] Definition |- !a. tid_size (TID a) = 1 + a [time_def] Definition |- !x. time x = SOME x [time_gt_def] Definition |- !xs ys. xs > ys = ys < xs [time_gte_def] Definition |- !xs ys. xs >= ys = (xs = ys) \/ ys < xs [time_infty_def] Definition |- time_infty = NONE [time_lt_arg_munge_def] Definition |- !x x1. x < x1 = time_lt_tupled (x,x1) [time_lt_tupled_primitive_def] Definition |- time_lt_tupled = WFREC (@R. WF R) (\time_lt_tupled a. case a of (v,v1) -> case v of NONE -> (case v1 of NONE -> F || SOME v5 -> F) || SOME v3 -> case v1 of NONE -> T || SOME v6 -> v3 < v6) [time_lte_def] Definition |- !xs ys. xs <= ys = (xs = ys) \/ xs < ys [time_minus_dur_def] Definition |- (!x y. SOME x - y = SOME (x - y)) /\ !y. NONE - y = NONE [time_plus_dur_def] Definition |- (!x y. SOME x + y = SOME (x + y)) /\ !y. NONE + y = NONE [time_zero_def] Definition |- time_zero = SOME 0 [timed_TY_DEF] Definition |- ?rep'. TYPE_DEFINITION (\a0. !'timed'. (!a0. (?a. a0 = (\a. CONSTR 0 a (\n. BOTTOM)) a) ==> 'timed' a0) ==> 'timed' a0) rep' [timed_case_def] Definition |- !f a. case f (Timed a) = f a [timed_repfns] Definition |- (!a. mk_timed (dest_timed a) = a) /\ !r. (\a0. !'timed'. (!a0. (?a. a0 = (\a. CONSTR 0 a (\n. BOTTOM)) a) ==> 'timed' a0) ==> 'timed' a0) r = (dest_timed (mk_timed r) = r) [timed_size_def] Definition |- !f a. timed_size f (Timed a) = 1 + (\(x,y). f x + case y of NONE -> 0 || SOME x -> SUC ((\v. 0) x)) a [tlang_typing] Definition |- tlang_typing = (\a0 a1. !tlang_typing'. (!a0 a1. (?i. (a0 = TL_int i) /\ (a1 = TLty_int)) \/ (?b. (a0 = TL_bool b) /\ (a1 = TLty_bool)) \/ (?s. (a0 = TL_string s) /\ (a1 = TLty_string)) \/ (a0 = TL_one ()) /\ (a1 = TLty_one) \/ (?p1 p2 ty1 ty2. (a0 = TL_pair (p1,p2)) /\ (a1 = TLty_pair (ty1,ty2)) /\ tlang_typing' p1 ty1 /\ tlang_typing' p2 ty2) \/ (?tl ty. (a0 = TL_list tl) /\ (a1 = TLty_list ty) /\ !e. MEM e tl ==> tlang_typing' e ty) \/ (?p ty. (a0 = TL_option (SOME p)) /\ (a1 = TLty_lift ty) /\ tlang_typing' p ty) \/ (?ty. (a0 = TL_option NONE) /\ (a1 = TLty_lift ty)) \/ (?e ty. (a0 = TL_err (FAIL e)) /\ (a1 = TLty_err ty)) \/ (?p ty. (a0 = TL_err (OK p)) /\ (a1 = TLty_err ty) /\ tlang_typing' p ty) \/ (?fd. (a0 = TL_fd fd) /\ (a1 = TLty_fd)) \/ (?i. (a0 = TL_ip i) /\ (a1 = TLty_ip)) \/ (?p. (a0 = TL_port p) /\ (a1 = TLty_port)) \/ (?e. (a0 = TL_error e) /\ (a1 = TLty_error)) \/ (?nm. (a0 = TL_netmask nm) /\ (a1 = TLty_netmask)) \/ (?ifid. (a0 = TL_ifid ifid) /\ (a1 = TLty_ifid)) \/ (?s. (a0 = TL_sockopt s) /\ (a1 = TLty_sockopt)) \/ (?tid. (a0 = TL_tid tid) /\ (a1 = TLty_tid)) \/ (?l ty. (a0 = TL_ref (Loc (ty,l))) /\ (a1 = TLty_ref ty)) \/ (?ex. (a0 = TL_exn ex) /\ (a1 = TLty_exn)) \/ (?p ty. (a0 = TL_except (EOK p)) /\ (a1 = TLty_except ty) /\ tlang_typing' p ty) \/ (?ex ty. (a0 = TL_except (EEX ex)) /\ (a1 = TLty_except ty) /\ tlang_typing' (TL_exn ex) TLty_exn) ==> tlang_typing' a0 a1) ==> tlang_typing' a0 a1) [TLang_11] Theorem |- (!a a'. (TL_int a = TL_int a') = (a = a')) /\ (!a a'. (TL_bool a = TL_bool a') = (a = a')) /\ (!a a'. (TL_string a = TL_string a') = (a = a')) /\ (!a a'. (TL_one a = TL_one a') = (a = a')) /\ (!a a'. (TL_pair a = TL_pair a') = (a = a')) /\ (!a a'. (TL_list a = TL_list a') = (a = a')) /\ (!a a'. (TL_option a = TL_option a') = (a = a')) /\ (!a a'. (TL_err a = TL_err a') = (a = a')) /\ (!a a'. (TL_fd a = TL_fd a') = (a = a')) /\ (!a a'. (TL_ip a = TL_ip a') = (a = a')) /\ (!a a'. (TL_port a = TL_port a') = (a = a')) /\ (!a a'. (TL_error a = TL_error a') = (a = a')) /\ (!a a'. (TL_netmask a = TL_netmask a') = (a = a')) /\ (!a a'. (TL_ifid a = TL_ifid a') = (a = a')) /\ (!a a'. (TL_sockopt a = TL_sockopt a') = (a = a')) /\ (!a a'. (TL_tid a = TL_tid a') = (a = a')) /\ (!a a'. (TL_ref a = TL_ref a') = (a = a')) /\ (!a a'. (TL_exn a = TL_exn a') = (a = a')) /\ !a a'. (TL_except a = TL_except a') = (a = a') [TLang_Axiom] Theorem |- !f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 f19 f20 f21 f22 f23 f24 f25 f26 f27. ?fn0 fn1 fn2 fn3 fn4 fn5. (!a. fn0 (TL_int a) = f0 a) /\ (!a. fn0 (TL_bool a) = f1 a) /\ (!a. fn0 (TL_string a) = f2 a) /\ (!a. fn0 (TL_one a) = f3 a) /\ (!a. fn0 (TL_pair a) = f4 a (fn1 a)) /\ (!a. fn0 (TL_list a) = f5 a (fn5 a)) /\ (!a. fn0 (TL_option a) = f6 a (fn4 a)) /\ (!a. fn0 (TL_err a) = f7 a (fn3 a)) /\ (!a. fn0 (TL_fd a) = f8 a) /\ (!a. fn0 (TL_ip a) = f9 a) /\ (!a. fn0 (TL_port a) = f10 a) /\ (!a. fn0 (TL_error a) = f11 a) /\ (!a. fn0 (TL_netmask a) = f12 a) /\ (!a. fn0 (TL_ifid a) = f13 a) /\ (!a. fn0 (TL_sockopt a) = f14 a) /\ (!a. fn0 (TL_tid a) = f15 a) /\ (!a. fn0 (TL_ref a) = f16 a) /\ (!a. fn0 (TL_exn a) = f17 a) /\ (!a. fn0 (TL_except a) = f18 a (fn2 a)) /\ (!a0 a1. fn1 (a0,a1) = f19 a0 a1 (fn0 a0) (fn0 a1)) /\ (!a. fn2 (EOK a) = f20 a (fn0 a)) /\ (!a. fn2 (EEX a) = f21 a) /\ (!a. fn3 (OK a) = f22 a (fn0 a)) /\ (!a. fn3 (FAIL a) = f23 a) /\ (!a. fn4 (SOME a) = f24 a (fn0 a)) /\ (fn4 NONE = f25) /\ (fn5 [] = f26) /\ !a0 a1. fn5 (a0::a1) = f27 a0 a1 (fn0 a0) (fn5 a1) [TLang_case_cong] Theorem |- !M M' f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18. (M = M') /\ (!a. (M' = TL_int a) ==> (f a = f' a)) /\ (!a. (M' = TL_bool a) ==> (f1 a = f1' a)) /\ (!a. (M' = TL_string a) ==> (f2 a = f2' a)) /\ (!a. (M' = TL_one a) ==> (f3 a = f3' a)) /\ (!a. (M' = TL_pair a) ==> (f4 a = f4' a)) /\ (!a. (M' = TL_list a) ==> (f5 a = f5' a)) /\ (!a. (M' = TL_option a) ==> (f6 a = f6' a)) /\ (!a. (M' = TL_err a) ==> (f7 a = f7' a)) /\ (!a. (M' = TL_fd a) ==> (f8 a = f8' a)) /\ (!a. (M' = TL_ip a) ==> (f9 a = f9' a)) /\ (!a. (M' = TL_port a) ==> (f10 a = f10' a)) /\ (!a. (M' = TL_error a) ==> (f11 a = f11' a)) /\ (!a. (M' = TL_netmask a) ==> (f12 a = f12' a)) /\ (!a. (M' = TL_ifid a) ==> (f13 a = f13' a)) /\ (!a. (M' = TL_sockopt a) ==> (f14 a = f14' a)) /\ (!a. (M' = TL_tid a) ==> (f15 a = f15' a)) /\ (!a. (M' = TL_ref a) ==> (f16 a = f16' a)) /\ (!a. (M' = TL_exn a) ==> (f17 a = f17' a)) /\ (!a. (M' = TL_except a) ==> (f18 a = f18' a)) ==> (case f f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 M = case f' f1' f2' f3' f4' f5' f6' f7' f8' f9' f10' f11' f12' f13' f14' f15' f16' f17' f18' M') [TLang_distinct] Theorem |- (!a' a. ~(TL_int a = TL_bool a')) /\ (!a' a. ~(TL_int a = TL_string a')) /\ (!a' a. ~(TL_int a = TL_one a')) /\ (!a' a. ~(TL_int a = TL_pair a')) /\ (!a' a. ~(TL_int a = TL_list a')) /\ (!a' a. ~(TL_int a = TL_option a')) /\ (!a' a. ~(TL_int a = TL_err a')) /\ (!a' a. ~(TL_int a = TL_fd a')) /\ (!a' a. ~(TL_int a = TL_ip a')) /\ (!a' a. ~(TL_int a = TL_port a')) /\ (!a' a. ~(TL_int a = TL_error a')) /\ (!a' a. ~(TL_int a = TL_netmask a')) /\ (!a' a. ~(TL_int a = TL_ifid a')) /\ (!a' a. ~(TL_int a = TL_sockopt a')) /\ (!a' a. ~(TL_int a = TL_tid a')) /\ (!a' a. ~(TL_int a = TL_ref a')) /\ (!a' a. ~(TL_int a = TL_exn a')) /\ (!a' a. ~(TL_int a = TL_except a')) /\ (!a' a. ~(TL_bool a = TL_string a')) /\ (!a' a. ~(TL_bool a = TL_one a')) /\ (!a' a. ~(TL_bool a = TL_pair a')) /\ (!a' a. ~(TL_bool a = TL_list a')) /\ (!a' a. ~(TL_bool a = TL_option a')) /\ (!a' a. ~(TL_bool a = TL_err a')) /\ (!a' a. ~(TL_bool a = TL_fd a')) /\ (!a' a. ~(TL_bool a = TL_ip a')) /\ (!a' a. ~(TL_bool a = TL_port a')) /\ (!a' a. ~(TL_bool a = TL_error a')) /\ (!a' a. ~(TL_bool a = TL_netmask a')) /\ (!a' a. ~(TL_bool a = TL_ifid a')) /\ (!a' a. ~(TL_bool a = TL_sockopt a')) /\ (!a' a. ~(TL_bool a = TL_tid a')) /\ (!a' a. ~(TL_bool a = TL_ref a')) /\ (!a' a. ~(TL_bool a = TL_exn a')) /\ (!a' a. ~(TL_bool a = TL_except a')) /\ (!a' a. ~(TL_string a = TL_one a')) /\ (!a' a. ~(TL_string a = TL_pair a')) /\ (!a' a. ~(TL_string a = TL_list a')) /\ (!a' a. ~(TL_string a = TL_option a')) /\ (!a' a. ~(TL_string a = TL_err a')) /\ (!a' a. ~(TL_string a = TL_fd a')) /\ (!a' a. ~(TL_string a = TL_ip a')) /\ (!a' a. ~(TL_string a = TL_port a')) /\ (!a' a. ~(TL_string a = TL_error a')) /\ (!a' a. ~(TL_string a = TL_netmask a')) /\ (!a' a. ~(TL_string a = TL_ifid a')) /\ (!a' a. ~(TL_string a = TL_sockopt a')) /\ (!a' a. ~(TL_string a = TL_tid a')) /\ (!a' a. ~(TL_string a = TL_ref a')) /\ (!a' a. ~(TL_string a = TL_exn a')) /\ (!a' a. ~(TL_string a = TL_except a')) /\ (!a' a. ~(TL_one a = TL_pair a')) /\ (!a' a. ~(TL_one a = TL_list a')) /\ (!a' a. ~(TL_one a = TL_option a')) /\ (!a' a. ~(TL_one a = TL_err a')) /\ (!a' a. ~(TL_one a = TL_fd a')) /\ (!a' a. ~(TL_one a = TL_ip a')) /\ (!a' a. ~(TL_one a = TL_port a')) /\ (!a' a. ~(TL_one a = TL_error a')) /\ (!a' a. ~(TL_one a = TL_netmask a')) /\ (!a' a. ~(TL_one a = TL_ifid a')) /\ (!a' a. ~(TL_one a = TL_sockopt a')) /\ (!a' a. ~(TL_one a = TL_tid a')) /\ (!a' a. ~(TL_one a = TL_ref a')) /\ (!a' a. ~(TL_one a = TL_exn a')) /\ (!a' a. ~(TL_one a = TL_except a')) /\ (!a' a. ~(TL_pair a = TL_list a')) /\ (!a' a. ~(TL_pair a = TL_option a')) /\ (!a' a. ~(TL_pair a = TL_err a')) /\ (!a' a. ~(TL_pair a = TL_fd a')) /\ (!a' a. ~(TL_pair a = TL_ip a')) /\ (!a' a. ~(TL_pair a = TL_port a')) /\ (!a' a. ~(TL_pair a = TL_error a')) /\ (!a' a. ~(TL_pair a = TL_netmask a')) /\ (!a' a. ~(TL_pair a = TL_ifid a')) /\ (!a' a. ~(TL_pair a = TL_sockopt a')) /\ (!a' a. ~(TL_pair a = TL_tid a')) /\ (!a' a. ~(TL_pair a = TL_ref a')) /\ (!a' a. ~(TL_pair a = TL_exn a')) /\ (!a' a. ~(TL_pair a = TL_except a')) /\ (!a' a. ~(TL_list a = TL_option a')) /\ (!a' a. ~(TL_list a = TL_err a')) /\ (!a' a. ~(TL_list a = TL_fd a')) /\ (!a' a. ~(TL_list a = TL_ip a')) /\ (!a' a. ~(TL_list a = TL_port a')) /\ (!a' a. ~(TL_list a = TL_error a')) /\ (!a' a. ~(TL_list a = TL_netmask a')) /\ (!a' a. ~(TL_list a = TL_ifid a')) /\ (!a' a. ~(TL_list a = TL_sockopt a')) /\ (!a' a. ~(TL_list a = TL_tid a')) /\ (!a' a. ~(TL_list a = TL_ref a')) /\ (!a' a. ~(TL_list a = TL_exn a')) /\ (!a' a. ~(TL_list a = TL_except a')) /\ (!a' a. ~(TL_option a = TL_err a')) /\ (!a' a. ~(TL_option a = TL_fd a')) /\ (!a' a. ~(TL_option a = TL_ip a')) /\ (!a' a. ~(TL_option a = TL_port a')) /\ (!a' a. ~(TL_option a = TL_error a')) /\ (!a' a. ~(TL_option a = TL_netmask a')) /\ (!a' a. ~(TL_option a = TL_ifid a')) /\ (!a' a. ~(TL_option a = TL_sockopt a')) /\ (!a' a. ~(TL_option a = TL_tid a')) /\ (!a' a. ~(TL_option a = TL_ref a')) /\ (!a' a. ~(TL_option a = TL_exn a')) /\ (!a' a. ~(TL_option a = TL_except a')) /\ (!a' a. ~(TL_err a = TL_fd a')) /\ (!a' a. ~(TL_err a = TL_ip a')) /\ (!a' a. ~(TL_err a = TL_port a')) /\ (!a' a. ~(TL_err a = TL_error a')) /\ (!a' a. ~(TL_err a = TL_netmask a')) /\ (!a' a. ~(TL_err a = TL_ifid a')) /\ (!a' a. ~(TL_err a = TL_sockopt a')) /\ (!a' a. ~(TL_err a = TL_tid a')) /\ (!a' a. ~(TL_err a = TL_ref a')) /\ (!a' a. ~(TL_err a = TL_exn a')) /\ (!a' a. ~(TL_err a = TL_except a')) /\ (!a' a. ~(TL_fd a = TL_ip a')) /\ (!a' a. ~(TL_fd a = TL_port a')) /\ (!a' a. ~(TL_fd a = TL_error a')) /\ (!a' a. ~(TL_fd a = TL_netmask a')) /\ (!a' a. ~(TL_fd a = TL_ifid a')) /\ (!a' a. ~(TL_fd a = TL_sockopt a')) /\ (!a' a. ~(TL_fd a = TL_tid a')) /\ (!a' a. ~(TL_fd a = TL_ref a')) /\ (!a' a. ~(TL_fd a = TL_exn a')) /\ (!a' a. ~(TL_fd a = TL_except a')) /\ (!a' a. ~(TL_ip a = TL_port a')) /\ (!a' a. ~(TL_ip a = TL_error a')) /\ (!a' a. ~(TL_ip a = TL_netmask a')) /\ (!a' a. ~(TL_ip a = TL_ifid a')) /\ (!a' a. ~(TL_ip a = TL_sockopt a')) /\ (!a' a. ~(TL_ip a = TL_tid a')) /\ (!a' a. ~(TL_ip a = TL_ref a')) /\ (!a' a. ~(TL_ip a = TL_exn a')) /\ (!a' a. ~(TL_ip a = TL_except a')) /\ (!a' a. ~(TL_port a = TL_error a')) /\ (!a' a. ~(TL_port a = TL_netmask a')) /\ (!a' a. ~(TL_port a = TL_ifid a')) /\ (!a' a. ~(TL_port a = TL_sockopt a')) /\ (!a' a. ~(TL_port a = TL_tid a')) /\ (!a' a. ~(TL_port a = TL_ref a')) /\ (!a' a. ~(TL_port a = TL_exn a')) /\ (!a' a. ~(TL_port a = TL_except a')) /\ (!a' a. ~(TL_error a = TL_netmask a')) /\ (!a' a. ~(TL_error a = TL_ifid a')) /\ (!a' a. ~(TL_error a = TL_sockopt a')) /\ (!a' a. ~(TL_error a = TL_tid a')) /\ (!a' a. ~(TL_error a = TL_ref a')) /\ (!a' a. ~(TL_error a = TL_exn a')) /\ (!a' a. ~(TL_error a = TL_except a')) /\ (!a' a. ~(TL_netmask a = TL_ifid a')) /\ (!a' a. ~(TL_netmask a = TL_sockopt a')) /\ (!a' a. ~(TL_netmask a = TL_tid a')) /\ (!a' a. ~(TL_netmask a = TL_ref a')) /\ (!a' a. ~(TL_netmask a = TL_exn a')) /\ (!a' a. ~(TL_netmask a = TL_except a')) /\ (!a' a. ~(TL_ifid a = TL_sockopt a')) /\ (!a' a. ~(TL_ifid a = TL_tid a')) /\ (!a' a. ~(TL_ifid a = TL_ref a')) /\ (!a' a. ~(TL_ifid a = TL_exn a')) /\ (!a' a. ~(TL_ifid a = TL_except a')) /\ (!a' a. ~(TL_sockopt a = TL_tid a')) /\ (!a' a. ~(TL_sockopt a = TL_ref a')) /\ (!a' a. ~(TL_sockopt a = TL_exn a')) /\ (!a' a. ~(TL_sockopt a = TL_except a')) /\ (!a' a. ~(TL_tid a = TL_ref a')) /\ (!a' a. ~(TL_tid a = TL_exn a')) /\ (!a' a. ~(TL_tid a = TL_except a')) /\ (!a' a. ~(TL_ref a = TL_exn a')) /\ (!a' a. ~(TL_ref a = TL_except a')) /\ !a' a. ~(TL_exn a = TL_except a') [TLang_induction] Theorem |- !P0 P1 P2 P3 P4 P5. (!i. P0 (TL_int i)) /\ (!b. P0 (TL_bool b)) /\ (!s. P0 (TL_string s)) /\ (!$o. P0 (TL_one $o)) /\ (!p. P1 p ==> P0 (TL_pair p)) /\ (!l. P5 l ==> P0 (TL_list l)) /\ (!$o. P4 $o ==> P0 (TL_option $o)) /\ (!e. P3 e ==> P0 (TL_err e)) /\ (!f. P0 (TL_fd f)) /\ (!i. P0 (TL_ip i)) /\ (!p. P0 (TL_port p)) /\ (!e. P0 (TL_error e)) /\ (!n. P0 (TL_netmask n)) /\ (!i. P0 (TL_ifid i)) /\ (!s. P0 (TL_sockopt s)) /\ (!t. P0 (TL_tid t)) /\ (!l. P0 (TL_ref l)) /\ (!e. P0 (TL_exn e)) /\ (!e. P2 e ==> P0 (TL_except e)) /\ (!T T0. P0 T /\ P0 T0 ==> P1 (T,T0)) /\ (!T. P0 T ==> P2 (EOK T)) /\ (!e. P2 (EEX e)) /\ (!T. P0 T ==> P3 (OK T)) /\ (!e. P3 (FAIL e)) /\ (!T. P0 T ==> P4 (SOME T)) /\ P4 NONE /\ P5 [] /\ (!T l. P0 T /\ P5 l ==> P5 (T::l)) ==> (!T. P0 T) /\ (!p. P1 p) /\ (!e. P2 e) /\ (!e. P3 e) /\ (!$o. P4 $o) /\ !l. P5 l [TLang_nchotomy] Theorem |- !T. (?i. T = TL_int i) \/ (?b. T = TL_bool b) \/ (?s. T = TL_string s) \/ (?$o. T = TL_one $o) \/ (?p. T = TL_pair p) \/ (?l. T = TL_list l) \/ (?$o. T = TL_option $o) \/ (?e. T = TL_err e) \/ (?f. T = TL_fd f) \/ (?i. T = TL_ip i) \/ (?p. T = TL_port p) \/ (?e. T = TL_error e) \/ (?n. T = TL_netmask n) \/ (?i. T = TL_ifid i) \/ (?s. T = TL_sockopt s) \/ (?t. T = TL_tid t) \/ (?l. T = TL_ref l) \/ (?e. T = TL_exn e) \/ ?e. T = TL_except e [TLang_type_11] Theorem |- (!a a'. (TLty_pair a = TLty_pair a') = (a = a')) /\ (!a a'. (TLty_list a = TLty_list a') = (a = a')) /\ (!a a'. (TLty_lift a = TLty_lift a') = (a = a')) /\ (!a a'. (TLty_err a = TLty_err a') = (a = a')) /\ (!a a'. (TLty_ref a = TLty_ref a') = (a = a')) /\ !a a'. (TLty_except a = TLty_except a') = (a = a') [TLang_type_Axiom] Theorem |- !f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 f19 f20. ?fn0 fn1. (fn0 TLty_int = f0) /\ (fn0 TLty_bool = f1) /\ (fn0 TLty_string = f2) /\ (fn0 TLty_one = f3) /\ (!a. fn0 (TLty_pair a) = f4 a (fn1 a)) /\ (!a. fn0 (TLty_list a) = f5 a (fn0 a)) /\ (!a. fn0 (TLty_lift a) = f6 a (fn0 a)) /\ (!a. fn0 (TLty_err a) = f7 a (fn0 a)) /\ (fn0 TLty_fd = f8) /\ (fn0 TLty_ip = f9) /\ (fn0 TLty_port = f10) /\ (fn0 TLty_error = f11) /\ (fn0 TLty_netmask = f12) /\ (fn0 TLty_ifid = f13) /\ (fn0 TLty_sockopt = f14) /\ (fn0 TLty_tid = f15) /\ (fn0 TLty_void = f16) /\ (!a. fn0 (TLty_ref a) = f17 a (fn0 a)) /\ (fn0 TLty_exn = f18) /\ (!a. fn0 (TLty_except a) = f19 a (fn0 a)) /\ !a0 a1. fn1 (a0,a1) = f20 a0 a1 (fn0 a0) (fn0 a1) [TLang_type_case_cong] Theorem |- !M M' v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5. (M = M') /\ ((M' = TLty_int) ==> (v = v')) /\ ((M' = TLty_bool) ==> (v1 = v1')) /\ ((M' = TLty_string) ==> (v2 = v2')) /\ ((M' = TLty_one) ==> (v3 = v3')) /\ (!a. (M' = TLty_pair a) ==> (f a = f' a)) /\ (!a. (M' = TLty_list a) ==> (f1 a = f1' a)) /\ (!a. (M' = TLty_lift a) ==> (f2 a = f2' a)) /\ (!a. (M' = TLty_err a) ==> (f3 a = f3' a)) /\ ((M' = TLty_fd) ==> (v4 = v4')) /\ ((M' = TLty_ip) ==> (v5 = v5')) /\ ((M' = TLty_port) ==> (v6 = v6')) /\ ((M' = TLty_error) ==> (v7 = v7')) /\ ((M' = TLty_netmask) ==> (v8 = v8')) /\ ((M' = TLty_ifid) ==> (v9 = v9')) /\ ((M' = TLty_sockopt) ==> (v10 = v10')) /\ ((M' = TLty_tid) ==> (v11 = v11')) /\ ((M' = TLty_void) ==> (v12 = v12')) /\ (!a. (M' = TLty_ref a) ==> (f4 a = f4' a)) /\ ((M' = TLty_exn) ==> (v13 = v13')) /\ (!a. (M' = TLty_except a) ==> (f5 a = f5' a)) ==> (case v v1 v2 v3 f f1 f2 f3 v4 v5 v6 v7 v8 v9 v10 v11 v12 f4 v13 f5 M = case v' v1' v2' v3' f' f1' f2' f3' v4' v5' v6' v7' v8' v9' v10' v11' v12' f4' v13' f5' M') [TLang_type_distinct] Theorem |- ~(TLty_int = TLty_bool) /\ ~(TLty_int = TLty_string) /\ ~(TLty_int = TLty_one) /\ (!a. ~(TLty_int = TLty_pair a)) /\ (!a. ~(TLty_int = TLty_list a)) /\ (!a. ~(TLty_int = TLty_lift a)) /\ (!a. ~(TLty_int = TLty_err a)) /\ ~(TLty_int = TLty_fd) /\ ~(TLty_int = TLty_ip) /\ ~(TLty_int = TLty_port) /\ ~(TLty_int = TLty_error) /\ ~(TLty_int = TLty_netmask) /\ ~(TLty_int = TLty_ifid) /\ ~(TLty_int = TLty_sockopt) /\ ~(TLty_int = TLty_tid) /\ ~(TLty_int = TLty_void) /\ (!a. ~(TLty_int = TLty_ref a)) /\ ~(TLty_int = TLty_exn) /\ (!a. ~(TLty_int = TLty_except a)) /\ ~(TLty_bool = TLty_string) /\ ~(TLty_bool = TLty_one) /\ (!a. ~(TLty_bool = TLty_pair a)) /\ (!a. ~(TLty_bool = TLty_list a)) /\ (!a. ~(TLty_bool = TLty_lift a)) /\ (!a. ~(TLty_bool = TLty_err a)) /\ ~(TLty_bool = TLty_fd) /\ ~(TLty_bool = TLty_ip) /\ ~(TLty_bool = TLty_port) /\ ~(TLty_bool = TLty_error) /\ ~(TLty_bool = TLty_netmask) /\ ~(TLty_bool = TLty_ifid) /\ ~(TLty_bool = TLty_sockopt) /\ ~(TLty_bool = TLty_tid) /\ ~(TLty_bool = TLty_void) /\ (!a. ~(TLty_bool = TLty_ref a)) /\ ~(TLty_bool = TLty_exn) /\ (!a. ~(TLty_bool = TLty_except a)) /\ ~(TLty_string = TLty_one) /\ (!a. ~(TLty_string = TLty_pair a)) /\ (!a. ~(TLty_string = TLty_list a)) /\ (!a. ~(TLty_string = TLty_lift a)) /\ (!a. ~(TLty_string = TLty_err a)) /\ ~(TLty_string = TLty_fd) /\ ~(TLty_string = TLty_ip) /\ ~(TLty_string = TLty_port) /\ ~(TLty_string = TLty_error) /\ ~(TLty_string = TLty_netmask) /\ ~(TLty_string = TLty_ifid) /\ ~(TLty_string = TLty_sockopt) /\ ~(TLty_string = TLty_tid) /\ ~(TLty_string = TLty_void) /\ (!a. ~(TLty_string = TLty_ref a)) /\ ~(TLty_string = TLty_exn) /\ (!a. ~(TLty_string = TLty_except a)) /\ (!a. ~(TLty_one = TLty_pair a)) /\ (!a. ~(TLty_one = TLty_list a)) /\ (!a. ~(TLty_one = TLty_lift a)) /\ (!a. ~(TLty_one = TLty_err a)) /\ ~(TLty_one = TLty_fd) /\ ~(TLty_one = TLty_ip) /\ ~(TLty_one = TLty_port) /\ ~(TLty_one = TLty_error) /\ ~(TLty_one = TLty_netmask) /\ ~(TLty_one = TLty_ifid) /\ ~(TLty_one = TLty_sockopt) /\ ~(TLty_one = TLty_tid) /\ ~(TLty_one = TLty_void) /\ (!a. ~(TLty_one = TLty_ref a)) /\ ~(TLty_one = TLty_exn) /\ (!a. ~(TLty_one = TLty_except a)) /\ (!a' a. ~(TLty_pair a = TLty_list a')) /\ (!a' a. ~(TLty_pair a = TLty_lift a')) /\ (!a' a. ~(TLty_pair a = TLty_err a')) /\ (!a. ~(TLty_pair a = TLty_fd)) /\ (!a. ~(TLty_pair a = TLty_ip)) /\ (!a. ~(TLty_pair a = TLty_port)) /\ (!a. ~(TLty_pair a = TLty_error)) /\ (!a. ~(TLty_pair a = TLty_netmask)) /\ (!a. ~(TLty_pair a = TLty_ifid)) /\ (!a. ~(TLty_pair a = TLty_sockopt)) /\ (!a. ~(TLty_pair a = TLty_tid)) /\ (!a. ~(TLty_pair a = TLty_void)) /\ (!a' a. ~(TLty_pair a = TLty_ref a')) /\ (!a. ~(TLty_pair a = TLty_exn)) /\ (!a' a. ~(TLty_pair a = TLty_except a')) /\ (!a' a. ~(TLty_list a = TLty_lift a')) /\ (!a' a. ~(TLty_list a = TLty_err a')) /\ (!a. ~(TLty_list a = TLty_fd)) /\ (!a. ~(TLty_list a = TLty_ip)) /\ (!a. ~(TLty_list a = TLty_port)) /\ (!a. ~(TLty_list a = TLty_error)) /\ (!a. ~(TLty_list a = TLty_netmask)) /\ (!a. ~(TLty_list a = TLty_ifid)) /\ (!a. ~(TLty_list a = TLty_sockopt)) /\ (!a. ~(TLty_list a = TLty_tid)) /\ (!a. ~(TLty_list a = TLty_void)) /\ (!a' a. ~(TLty_list a = TLty_ref a')) /\ (!a. ~(TLty_list a = TLty_exn)) /\ (!a' a. ~(TLty_list a = TLty_except a')) /\ (!a' a. ~(TLty_lift a = TLty_err a')) /\ (!a. ~(TLty_lift a = TLty_fd)) /\ (!a. ~(TLty_lift a = TLty_ip)) /\ (!a. ~(TLty_lift a = TLty_port)) /\ (!a. ~(TLty_lift a = TLty_error)) /\ (!a. ~(TLty_lift a = TLty_netmask)) /\ (!a. ~(TLty_lift a = TLty_ifid)) /\ (!a. ~(TLty_lift a = TLty_sockopt)) /\ (!a. ~(TLty_lift a = TLty_tid)) /\ (!a. ~(TLty_lift a = TLty_void)) /\ (!a' a. ~(TLty_lift a = TLty_ref a')) /\ (!a. ~(TLty_lift a = TLty_exn)) /\ (!a' a. ~(TLty_lift a = TLty_except a')) /\ (!a. ~(TLty_err a = TLty_fd)) /\ (!a. ~(TLty_err a = TLty_ip)) /\ (!a. ~(TLty_err a = TLty_port)) /\ (!a. ~(TLty_err a = TLty_error)) /\ (!a. ~(TLty_err a = TLty_netmask)) /\ (!a. ~(TLty_err a = TLty_ifid)) /\ (!a. ~(TLty_err a = TLty_sockopt)) /\ (!a. ~(TLty_err a = TLty_tid)) /\ (!a. ~(TLty_err a = TLty_void)) /\ (!a' a. ~(TLty_err a = TLty_ref a')) /\ (!a. ~(TLty_err a = TLty_exn)) /\ (!a' a. ~(TLty_err a = TLty_except a')) /\ ~(TLty_fd = TLty_ip) /\ ~(TLty_fd = TLty_port) /\ ~(TLty_fd = TLty_error) /\ ~(TLty_fd = TLty_netmask) /\ ~(TLty_fd = TLty_ifid) /\ ~(TLty_fd = TLty_sockopt) /\ ~(TLty_fd = TLty_tid) /\ ~(TLty_fd = TLty_void) /\ (!a. ~(TLty_fd = TLty_ref a)) /\ ~(TLty_fd = TLty_exn) /\ (!a. ~(TLty_fd = TLty_except a)) /\ ~(TLty_ip = TLty_port) /\ ~(TLty_ip = TLty_error) /\ ~(TLty_ip = TLty_netmask) /\ ~(TLty_ip = TLty_ifid) /\ ~(TLty_ip = TLty_sockopt) /\ ~(TLty_ip = TLty_tid) /\ ~(TLty_ip = TLty_void) /\ (!a. ~(TLty_ip = TLty_ref a)) /\ ~(TLty_ip = TLty_exn) /\ (!a. ~(TLty_ip = TLty_except a)) /\ ~(TLty_port = TLty_error) /\ ~(TLty_port = TLty_netmask) /\ ~(TLty_port = TLty_ifid) /\ ~(TLty_port = TLty_sockopt) /\ ~(TLty_port = TLty_tid) /\ ~(TLty_port = TLty_void) /\ (!a. ~(TLty_port = TLty_ref a)) /\ ~(TLty_port = TLty_exn) /\ (!a. ~(TLty_port = TLty_except a)) /\ ~(TLty_error = TLty_netmask) /\ ~(TLty_error = TLty_ifid) /\ ~(TLty_error = TLty_sockopt) /\ ~(TLty_error = TLty_tid) /\ ~(TLty_error = TLty_void) /\ (!a. ~(TLty_error = TLty_ref a)) /\ ~(TLty_error = TLty_exn) /\ (!a. ~(TLty_error = TLty_except a)) /\ ~(TLty_netmask = TLty_ifid) /\ ~(TLty_netmask = TLty_sockopt) /\ ~(TLty_netmask = TLty_tid) /\ ~(TLty_netmask = TLty_void) /\ (!a. ~(TLty_netmask = TLty_ref a)) /\ ~(TLty_netmask = TLty_exn) /\ (!a. ~(TLty_netmask = TLty_except a)) /\ ~(TLty_ifid = TLty_sockopt) /\ ~(TLty_ifid = TLty_tid) /\ ~(TLty_ifid = TLty_void) /\ (!a. ~(TLty_ifid = TLty_ref a)) /\ ~(TLty_ifid = TLty_exn) /\ (!a. ~(TLty_ifid = TLty_except a)) /\ ~(TLty_sockopt = TLty_tid) /\ ~(TLty_sockopt = TLty_void) /\ (!a. ~(TLty_sockopt = TLty_ref a)) /\ ~(TLty_sockopt = TLty_exn) /\ (!a. ~(TLty_sockopt = TLty_except a)) /\ ~(TLty_tid = TLty_void) /\ (!a. ~(TLty_tid = TLty_ref a)) /\ ~(TLty_tid = TLty_exn) /\ (!a. ~(TLty_tid = TLty_except a)) /\ (!a. ~(TLty_void = TLty_ref a)) /\ ~(TLty_void = TLty_exn) /\ (!a. ~(TLty_void = TLty_except a)) /\ (!a. ~(TLty_ref a = TLty_exn)) /\ (!a' a. ~(TLty_ref a = TLty_except a')) /\ !a. ~(TLty_exn = TLty_except a) [TLang_type_induction] Theorem |- !P0 P1. P0 TLty_int /\ P0 TLty_bool /\ P0 TLty_string /\ P0 TLty_one /\ (!p. P1 p ==> P0 (TLty_pair p)) /\ (!T. P0 T ==> P0 (TLty_list T)) /\ (!T. P0 T ==> P0 (TLty_lift T)) /\ (!T. P0 T ==> P0 (TLty_err T)) /\ P0 TLty_fd /\ P0 TLty_ip /\ P0 TLty_port /\ P0 TLty_error /\ P0 TLty_netmask /\ P0 TLty_ifid /\ P0 TLty_sockopt /\ P0 TLty_tid /\ P0 TLty_void /\ (!T. P0 T ==> P0 (TLty_ref T)) /\ P0 TLty_exn /\ (!T. P0 T ==> P0 (TLty_except T)) /\ (!T T0. P0 T /\ P0 T0 ==> P1 (T,T0)) ==> (!T. P0 T) /\ !p. P1 p [TLang_type_nchotomy] Theorem |- !T. (T = TLty_int) \/ (T = TLty_bool) \/ (T = TLty_string) \/ (T = TLty_one) \/ (?p. T = TLty_pair p) \/ (?T'. T = TLty_list T') \/ (?T'. T = TLty_lift T') \/ (?T'. T = TLty_err T') \/ (T = TLty_fd) \/ (T = TLty_ip) \/ (T = TLty_port) \/ (T = TLty_error) \/ (T = TLty_netmask) \/ (T = TLty_ifid) \/ (T = TLty_sockopt) \/ (T = TLty_tid) \/ (T = TLty_void) \/ (?T'. T = TLty_ref T') \/ (T = TLty_exn) \/ ?T'. T = TLty_except T' [TLang_typing_thm] Theorem |- (!i a1. tlang_typing (TL_int i) a1 = (a1 = TLty_int)) /\ (!b a1. tlang_typing (TL_bool b) a1 = (a1 = TLty_bool)) /\ (!s a1. tlang_typing (TL_string s) a1 = (a1 = TLty_string)) /\ (!$o a1. tlang_typing (TL_one $o) a1 = ($o = ()) /\ (a1 = TLty_one)) /\ (!p a1. tlang_typing (TL_pair p) a1 = ?p1 p2 ty1 ty2. (p = (p1,p2)) /\ (a1 = TLty_pair (ty1,ty2)) /\ tlang_typing p1 ty1 /\ tlang_typing p2 ty2) /\ (!l a1. tlang_typing (TL_list l) a1 = ?ty. (a1 = TLty_list ty) /\ !e. MEM e l ==> tlang_typing e ty) /\ (!$o a1. tlang_typing (TL_option $o) a1 = (?p ty. ($o = SOME p) /\ (a1 = TLty_lift ty) /\ tlang_typing p ty) \/ ?ty. ($o = NONE) /\ (a1 = TLty_lift ty)) /\ (!e a1. tlang_typing (TL_err e) a1 = (?e' ty. (e = FAIL e') /\ (a1 = TLty_err ty)) \/ ?p ty. (e = OK p) /\ (a1 = TLty_err ty) /\ tlang_typing p ty) /\ (!f a1. tlang_typing (TL_fd f) a1 = (a1 = TLty_fd)) /\ (!i a1. tlang_typing (TL_ip i) a1 = (a1 = TLty_ip)) /\ (!p a1. tlang_typing (TL_port p) a1 = (a1 = TLty_port)) /\ (!e a1. tlang_typing (TL_error e) a1 = (a1 = TLty_error)) /\ (!n a1. tlang_typing (TL_netmask n) a1 = (a1 = TLty_netmask)) /\ (!i a1. tlang_typing (TL_ifid i) a1 = (a1 = TLty_ifid)) /\ (!s a1. tlang_typing (TL_sockopt s) a1 = (a1 = TLty_sockopt)) /\ (!t a1. tlang_typing (TL_tid t) a1 = (a1 = TLty_tid)) /\ (!l a1. tlang_typing (TL_ref l) a1 = ?l' ty. (l = Loc (ty,l')) /\ (a1 = TLty_ref ty)) /\ (!e a1. tlang_typing (TL_exn e) a1 = (a1 = TLty_exn)) /\ !e a1. tlang_typing (TL_except e) a1 = (?p ty. (e = EOK p) /\ (a1 = TLty_except ty) /\ tlang_typing p ty) \/ ?ex ty. (e = EEX ex) /\ (a1 = TLty_except ty) /\ tlang_typing (TL_exn ex) TLty_exn [err_11] Theorem |- (!a a'. (OK a = OK a') = (a = a')) /\ !a a'. (FAIL a = FAIL a') = (a = a') [err_Axiom] Theorem |- !f0 f1. ?fn. (!a. fn (OK a) = f0 a) /\ !a. fn (FAIL a) = f1 a [err_case_cong] Theorem |- !M M' f f1. (M = M') /\ (!a. (M' = OK a) ==> (f a = f' a)) /\ (!a. (M' = FAIL a) ==> (f1 a = f1' a)) ==> (case f f1 M = case f' f1' M') [err_distinct] Theorem |- !a' a. ~(OK a = FAIL a') [err_induction] Theorem |- !P. (!a. P (OK a)) /\ (!e. P (FAIL e)) ==> !e. P e [err_nchotomy] Theorem |- !e. (?a. e = OK a) \/ ?e'. e = FAIL e' [error2num_11] Theorem |- !a a'. (error2num a = error2num a') = (a = a') [error2num_EACCES] Theorem |- error2num EACCES = 0 [error2num_EADDRINUSE] Theorem |- error2num EADDRINUSE = 1 [error2num_EADDRNOTAVAIL] Theorem |- error2num EADDRNOTAVAIL = 2 [error2num_EAGAIN] Theorem |- error2num EAGAIN = 3 [error2num_EBADF] Theorem |- error2num EBADF = 4 [error2num_ECONNREFUSED] Theorem |- error2num ECONNREFUSED = 5 [error2num_EHOSTUNREACH] Theorem |- error2num EHOSTUNREACH = 6 [error2num_EINTR] Theorem |- error2num EINTR = 7 [error2num_EINVAL] Theorem |- error2num EINVAL = 8 [error2num_EMFILE] Theorem |- error2num EMFILE = 9 [error2num_EMSGSIZE] Theorem |- error2num EMSGSIZE = 10 [error2num_ENFILE] Theorem |- error2num ENFILE = 11 [error2num_ENOBUFS] Theorem |- error2num ENOBUFS = 12 [error2num_ENOMEM] Theorem |- error2num ENOMEM = 13 [error2num_ENOTCONN] Theorem |- error2num ENOTCONN = 14 [error2num_ENOTSOCK] Theorem |- error2num ENOTSOCK = 15 [error2num_ONTO] Theorem |- !r. r < 16 = ?a. r = error2num a [error2num_num2error] Theorem |- !r. r < 16 = (error2num (num2error r) = r) [error_Axiom] Theorem |- !x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. ?f. (f EACCES = x0) /\ (f EADDRINUSE = x1) /\ (f EADDRNOTAVAIL = x2) /\ (f EAGAIN = x3) /\ (f EBADF = x4) /\ (f ECONNREFUSED = x5) /\ (f EHOSTUNREACH = x6) /\ (f EINTR = x7) /\ (f EINVAL = x8) /\ (f EMFILE = x9) /\ (f EMSGSIZE = x10) /\ (f ENFILE = x11) /\ (f ENOBUFS = x12) /\ (f ENOMEM = x13) /\ (f ENOTCONN = x14) /\ (f ENOTSOCK = x15) [error_EQ_error] Theorem |- !a a'. (a = a') = (error2num a = error2num a') [error_case_cong] Theorem |- !M M' x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15. (M = M') /\ ((M' = EACCES) ==> (x0 = x0')) /\ ((M' = EADDRINUSE) ==> (x1 = x1')) /\ ((M' = EADDRNOTAVAIL) ==> (x2 = x2')) /\ ((M' = EAGAIN) ==> (x3 = x3')) /\ ((M' = EBADF) ==> (x4 = x4')) /\ ((M' = ECONNREFUSED) ==> (x5 = x5')) /\ ((M' = EHOSTUNREACH) ==> (x6 = x6')) /\ ((M' = EINTR) ==> (x7 = x7')) /\ ((M' = EINVAL) ==> (x8 = x8')) /\ ((M' = EMFILE) ==> (x9 = x9')) /\ ((M' = EMSGSIZE) ==> (x10 = x10')) /\ ((M' = ENFILE) ==> (x11 = x11')) /\ ((M' = ENOBUFS) ==> (x12 = x12')) /\ ((M' = ENOMEM) ==> (x13 = x13')) /\ ((M' = ENOTCONN) ==> (x14 = x14')) /\ ((M' = ENOTSOCK) ==> (x15 = x15')) ==> ((case M of EACCES -> x0 || EADDRINUSE -> x1 || EADDRNOTAVAIL -> x2 || EAGAIN -> x3 || EBADF -> x4 || ECONNREFUSED -> x5 || EHOSTUNREACH -> x6 || EINTR -> x7 || EINVAL -> x8 || EMFILE -> x9 || EMSGSIZE -> x10 || ENFILE -> x11 || ENOBUFS -> x12 || ENOMEM -> x13 || ENOTCONN -> x14 || ENOTSOCK -> x15) = case M' of EACCES -> x0' || EADDRINUSE -> x1' || EADDRNOTAVAIL -> x2' || EAGAIN -> x3' || EBADF -> x4' || ECONNREFUSED -> x5' || EHOSTUNREACH -> x6' || EINTR -> x7' || EINVAL -> x8' || EMFILE -> x9' || EMSGSIZE -> x10' || ENFILE -> x11' || ENOBUFS -> x12' || ENOMEM -> x13' || ENOTCONN -> x14' || ENOTSOCK -> x15') [error_distinct] Theorem |- ~(EACCES = EADDRINUSE) /\ ~(EACCES = EADDRNOTAVAIL) /\ ~(EACCES = EAGAIN) /\ ~(EACCES = EBADF) /\ ~(EACCES = ECONNREFUSED) /\ ~(EACCES = EHOSTUNREACH) /\ ~(EACCES = EINTR) /\ ~(EACCES = EINVAL) /\ ~(EACCES = EMFILE) /\ ~(EACCES = EMSGSIZE) /\ ~(EACCES = ENFILE) /\ ~(EACCES = ENOBUFS) /\ ~(EACCES = ENOMEM) /\ ~(EACCES = ENOTCONN) /\ ~(EACCES = ENOTSOCK) /\ ~(EADDRINUSE = EADDRNOTAVAIL) /\ ~(EADDRINUSE = EAGAIN) /\ ~(EADDRINUSE = EBADF) /\ ~(EADDRINUSE = ECONNREFUSED) /\ ~(EADDRINUSE = EHOSTUNREACH) /\ ~(EADDRINUSE = EINTR) /\ ~(EADDRINUSE = EINVAL) /\ ~(EADDRINUSE = EMFILE) /\ ~(EADDRINUSE = EMSGSIZE) /\ ~(EADDRINUSE = ENFILE) /\ ~(EADDRINUSE = ENOBUFS) /\ ~(EADDRINUSE = ENOMEM) /\ ~(EADDRINUSE = ENOTCONN) /\ ~(EADDRINUSE = ENOTSOCK) /\ ~(EADDRNOTAVAIL = EAGAIN) /\ ~(EADDRNOTAVAIL = EBADF) /\ ~(EADDRNOTAVAIL = ECONNREFUSED) /\ ~(EADDRNOTAVAIL = EHOSTUNREACH) /\ ~(EADDRNOTAVAIL = EINTR) /\ ~(EADDRNOTAVAIL = EINVAL) /\ ~(EADDRNOTAVAIL = EMFILE) /\ ~(EADDRNOTAVAIL = EMSGSIZE) /\ ~(EADDRNOTAVAIL = ENFILE) /\ ~(EADDRNOTAVAIL = ENOBUFS) /\ ~(EADDRNOTAVAIL = ENOMEM) /\ ~(EADDRNOTAVAIL = ENOTCONN) /\ ~(EADDRNOTAVAIL = ENOTSOCK) /\ ~(EAGAIN = EBADF) /\ ~(EAGAIN = ECONNREFUSED) /\ ~(EAGAIN = EHOSTUNREACH) /\ ~(EAGAIN = EINTR) /\ ~(EAGAIN = EINVAL) /\ ~(EAGAIN = EMFILE) /\ ~(EAGAIN = EMSGSIZE) /\ ~(EAGAIN = ENFILE) /\ ~(EAGAIN = ENOBUFS) /\ ~(EAGAIN = ENOMEM) /\ ~(EAGAIN = ENOTCONN) /\ ~(EAGAIN = ENOTSOCK) /\ ~(EBADF = ECONNREFUSED) /\ ~(EBADF = EHOSTUNREACH) /\ ~(EBADF = EINTR) /\ ~(EBADF = EINVAL) /\ ~(EBADF = EMFILE) /\ ~(EBADF = EMSGSIZE) /\ ~(EBADF = ENFILE) /\ ~(EBADF = ENOBUFS) /\ ~(EBADF = ENOMEM) /\ ~(EBADF = ENOTCONN) /\ ~(EBADF = ENOTSOCK) /\ ~(ECONNREFUSED = EHOSTUNREACH) /\ ~(ECONNREFUSED = EINTR) /\ ~(ECONNREFUSED = EINVAL) /\ ~(ECONNREFUSED = EMFILE) /\ ~(ECONNREFUSED = EMSGSIZE) /\ ~(ECONNREFUSED = ENFILE) /\ ~(ECONNREFUSED = ENOBUFS) /\ ~(ECONNREFUSED = ENOMEM) /\ ~(ECONNREFUSED = ENOTCONN) /\ ~(ECONNREFUSED = ENOTSOCK) /\ ~(EHOSTUNREACH = EINTR) /\ ~(EHOSTUNREACH = EINVAL) /\ ~(EHOSTUNREACH = EMFILE) /\ ~(EHOSTUNREACH = EMSGSIZE) /\ ~(EHOSTUNREACH = ENFILE) /\ ~(EHOSTUNREACH = ENOBUFS) /\ ~(EHOSTUNREACH = ENOMEM) /\ ~(EHOSTUNREACH = ENOTCONN) /\ ~(EHOSTUNREACH = ENOTSOCK) /\ ~(EINTR = EINVAL) /\ ~(EINTR = EMFILE) /\ ~(EINTR = EMSGSIZE) /\ ~(EINTR = ENFILE) /\ ~(EINTR = ENOBUFS) /\ ~(EINTR = ENOMEM) /\ ~(EINTR = ENOTCONN) /\ ~(EINTR = ENOTSOCK) /\ ~(EINVAL = EMFILE) /\ ~(EINVAL = EMSGSIZE) /\ ~(EINVAL = ENFILE) /\ ~(EINVAL = ENOBUFS) /\ ~(EINVAL = ENOMEM) /\ ~(EINVAL = ENOTCONN) /\ ~(EINVAL = ENOTSOCK) /\ ~(EMFILE = EMSGSIZE) /\ ~(EMFILE = ENFILE) /\ ~(EMFILE = ENOBUFS) /\ ~(EMFILE = ENOMEM) /\ ~(EMFILE = ENOTCONN) /\ ~(EMFILE = ENOTSOCK) /\ ~(EMSGSIZE = ENFILE) /\ ~(EMSGSIZE = ENOBUFS) /\ ~(EMSGSIZE = ENOMEM) /\ ~(EMSGSIZE = ENOTCONN) /\ ~(EMSGSIZE = ENOTSOCK) /\ ~(ENFILE = ENOBUFS) /\ ~(ENFILE = ENOMEM) /\ ~(ENFILE = ENOTCONN) /\ ~(ENFILE = ENOTSOCK) /\ ~(ENOBUFS = ENOMEM) /\ ~(ENOBUFS = ENOTCONN) /\ ~(ENOBUFS = ENOTSOCK) /\ ~(ENOMEM = ENOTCONN) /\ ~(ENOMEM = ENOTSOCK) /\ ~(ENOTCONN = ENOTSOCK) [error_induction] Theorem |- !P. P EACCES /\ P EADDRINUSE /\ P EADDRNOTAVAIL /\ P EAGAIN /\ P EBADF /\ P ECONNREFUSED /\ P EHOSTUNREACH /\ P EINTR /\ P EINVAL /\ P EMFILE /\ P EMSGSIZE /\ P ENFILE /\ P ENOBUFS /\ P ENOMEM /\ P ENOTCONN /\ P ENOTSOCK ==> !a. P a [error_nchotomy] Theorem |- !a. (a = EACCES) \/ (a = EADDRINUSE) \/ (a = EADDRNOTAVAIL) \/ (a = EAGAIN) \/ (a = EBADF) \/ (a = ECONNREFUSED) \/ (a = EHOSTUNREACH) \/ (a = EINTR) \/ (a = EINVAL) \/ (a = EMFILE) \/ (a = EMSGSIZE) \/ (a = ENFILE) \/ (a = ENOBUFS) \/ (a = ENOMEM) \/ (a = ENOTCONN) \/ (a = ENOTSOCK) [except_11] Theorem |- (!a a'. (EOK a = EOK a') = (a = a')) /\ !a a'. (EEX a = EEX a') = (a = a') [except_Axiom] Theorem |- !f0 f1. ?fn. (!a. fn (EOK a) = f0 a) /\ !a. fn (EEX a) = f1 a [except_case_cong] Theorem |- !M M' f f1. (M = M') /\ (!a. (M' = EOK a) ==> (f a = f' a)) /\ (!a. (M' = EEX a) ==> (f1 a = f1' a)) ==> (case f f1 M = case f' f1' M') [except_distinct] Theorem |- !a' a. ~(EOK a = EEX a') [except_induction] Theorem |- !P. (!a. P (EOK a)) /\ (!e. P (EEX e)) ==> !e. P e [except_nchotomy] Theorem |- !e. (?a. e = EOK a) \/ ?e'. e = EEX e' [exn_11] Theorem |- (!a a'. (EX_udp a = EX_udp a') = (a = a')) /\ !a a'. (EX_match_failure a = EX_match_failure a') = (a = a') [exn_Axiom] Theorem |- !f0 f1. ?fn. (!a. fn (EX_udp a) = f0 a) /\ !a. fn (EX_match_failure a) = f1 a [exn_case_cong] Theorem |- !M M' f f1. (M = M') /\ (!a. (M' = EX_udp a) ==> (f a = f' a)) /\ (!a. (M' = EX_match_failure a) ==> (f1 a = f1' a)) ==> (case f f1 M = case f' f1' M') [exn_distinct] Theorem |- !a' a. ~(EX_udp a = EX_match_failure a') [exn_induction] Theorem |- !P. (!e. P (EX_udp e)) /\ (!p. P (EX_match_failure p)) ==> !e. P e [exn_nchotomy] Theorem |- !e. (?e'. e = EX_udp e') \/ ?p. e = EX_match_failure p [fd_11] Theorem |- !a a'. (FD a = FD a') = (a = a') [fd_Axiom] Theorem |- !f. ?fn. !a. fn (FD a) = f a [fd_case_cong] Theorem |- !M M' f. (M = M') /\ (!a. (M' = FD a) ==> (f a = f' a)) ==> (case f M = case f' M') [fd_induction] Theorem |- !P. (!i. P (FD i)) ==> !f. P f [fd_nchotomy] Theorem |- !f. ?i. f = FD i [flags_11] Theorem |- !a0 a1 a0' a1'. (flags a0 a1 = flags a0' a1') = (a0 = a0') /\ (a1 = a1') [flags_Axiom] Theorem |- !f. ?fn. !a0 a1. fn (flags a0 a1) = f a0 a1 [flags_accessors] Theorem |- (!b b0. (flags b b0).bsdcompat = b) /\ !b b0. (flags b b0).reuseaddr = b0 [flags_accfupds] Theorem |- (!f0 f. (f with reuseaddr updated_by f0).bsdcompat = f.bsdcompat) /\ (!f0 f. (f with bsdcompat updated_by f0).reuseaddr = f.reuseaddr) /\ (!f0 f. (f with bsdcompat updated_by f0).bsdcompat = f0 f.bsdcompat) /\ !f0 f. (f with reuseaddr updated_by f0).reuseaddr = f0 f.reuseaddr [flags_accupds] Theorem |- (!x f. (f with reuseaddr := x).bsdcompat = f.bsdcompat) /\ (!x f. (f with bsdcompat := x).reuseaddr = f.reuseaddr) /\ (!x f. (f with bsdcompat := x).bsdcompat = x) /\ !x f. (f with reuseaddr := x).reuseaddr = x [flags_bsdcompat_update_semi11] Theorem |- !x y r1 r2. (r1 with bsdcompat := x = r2 with bsdcompat := y) ==> (x = y) [flags_case_cong] Theorem |- !M M' f. (M = M') /\ (!a0 a1. (M' = flags a0 a1) ==> (f a0 a1 = f' a0 a1)) ==> (case f M = case f' M') [flags_component_equality] Theorem |- !f1 f2. (f1 = f2) = (f1.bsdcompat = f2.bsdcompat) /\ (f1.reuseaddr = f2.reuseaddr) [flags_cupdaccs] Theorem |- (!val f. (val = f.bsdcompat) ==> (f with bsdcompat := val = f)) /\ !val f. (val = f.reuseaddr) ==> (f with reuseaddr := val = f) [flags_fn_updates] Theorem |- (!f x. x with bsdcompat updated_by f = x with bsdcompat := f x.bsdcompat) /\ !f x. x with reuseaddr updated_by f = x with reuseaddr := f x.reuseaddr [flags_induction] Theorem |- !P. (!b b0. P (flags b b0)) ==> !f. P f [flags_nchotomy] Theorem |- !f. ?b b0. f = flags b b0 [flags_reuseaddr_update_semi11] Theorem |- !x y r1 r2. (r1 with reuseaddr := x = r2 with reuseaddr := y) ==> (x = y) [flags_updaccs] Theorem |- (!f. f with bsdcompat := f.bsdcompat = f) /\ !f. f with reuseaddr := f.reuseaddr = f [flags_updates] Theorem |- (!b1 b b0. flags b b0 with bsdcompat := b1 = flags b1 b0) /\ !b1 b b0. flags b b0 with reuseaddr := b1 = flags b b1 [flags_updates_eq_literal] Theorem |- !f b0 b. f with <|bsdcompat := b0; reuseaddr := b|> = <|bsdcompat := b0; reuseaddr := b|> [flags_updcanon] Theorem |- !z x f. f with <|reuseaddr := x; bsdcompat := z|> = f with <|bsdcompat := z; reuseaddr := x|> [flags_updupds] Theorem |- (!x2 x1 f. f with <|bsdcompat := x1; bsdcompat := x2|> = f with bsdcompat := x1) /\ !x2 x1 f. f with <|reuseaddr := x1; reuseaddr := x2|> = f with reuseaddr := x1 [hostThreadState_11] Theorem |- (!a a'. (Ret a = Ret a') = (a = a')) /\ (!a a'. (Sendto2 a = Sendto2 a') = (a = a')) /\ (!a a'. (Recvfrom2 a = Recvfrom2 a') = (a = a')) /\ (!a a'. (Select2 a = Select2 a') = (a = a')) /\ !a a'. (Print2 a = Print2 a') = (a = a') [hostThreadState_Axiom] Theorem |- !f0 f1 f2 f3 f4 f5 f6 f7 f8. ?fn. (fn Run = f0) /\ (fn Exit = f1) /\ (fn Zombie = f2) /\ (!a. fn (Ret a) = f3 a) /\ (!a. fn (Sendto2 a) = f4 a) /\ (!a. fn (Recvfrom2 a) = f5 a) /\ (!a. fn (Select2 a) = f6 a) /\ (fn Delay2 = f7) /\ !a. fn (Print2 a) = f8 a [hostThreadState_case_cong] Theorem |- !M M' v v1 v2 f f1 f2 f3 v3 f4. (M = M') /\ ((M' = Run) ==> (v = v')) /\ ((M' = Exit) ==> (v1 = v1')) /\ ((M' = Zombie) ==> (v2 = v2')) /\ (!a. (M' = Ret a) ==> (f a = f' a)) /\ (!a. (M' = Sendto2 a) ==> (f1 a = f1' a)) /\ (!a. (M' = Recvfrom2 a) ==> (f2 a = f2' a)) /\ (!a. (M' = Select2 a) ==> (f3 a = f3' a)) /\ ((M' = Delay2) ==> (v3 = v3')) /\ (!a. (M' = Print2 a) ==> (f4 a = f4' a)) ==> (case v v1 v2 f f1 f2 f3 v3 f4 M = case v' v1' v2' f' f1' f2' f3' v3' f4' M') [hostThreadState_distinct] Theorem |- ~(Run = Exit) /\ ~(Run = Zombie) /\ (!a. ~(Run = Ret a)) /\ (!a. ~(Run = Sendto2 a)) /\ (!a. ~(Run = Recvfrom2 a)) /\ (!a. ~(Run = Select2 a)) /\ ~(Run = Delay2) /\ (!a. ~(Run = Print2 a)) /\ ~(Exit = Zombie) /\ (!a. ~(Exit = Ret a)) /\ (!a. ~(Exit = Sendto2 a)) /\ (!a. ~(Exit = Recvfrom2 a)) /\ (!a. ~(Exit = Select2 a)) /\ ~(Exit = Delay2) /\ (!a. ~(Exit = Print2 a)) /\ (!a. ~(Zombie = Ret a)) /\ (!a. ~(Zombie = Sendto2 a)) /\ (!a. ~(Zombie = Recvfrom2 a)) /\ (!a. ~(Zombie = Select2 a)) /\ ~(Zombie = Delay2) /\ (!a. ~(Zombie = Print2 a)) /\ (!a' a. ~(Ret a = Sendto2 a')) /\ (!a' a. ~(Ret a = Recvfrom2 a')) /\ (!a' a. ~(Ret a = Select2 a')) /\ (!a. ~(Ret a = Delay2)) /\ (!a' a. ~(Ret a = Print2 a')) /\ (!a' a. ~(Sendto2 a = Recvfrom2 a')) /\ (!a' a. ~(Sendto2 a = Select2 a')) /\ (!a. ~(Sendto2 a = Delay2)) /\ (!a' a. ~(Sendto2 a = Print2 a')) /\ (!a' a. ~(Recvfrom2 a = Select2 a')) /\ (!a. ~(Recvfrom2 a = Delay2)) /\ (!a' a. ~(Recvfrom2 a = Print2 a')) /\ (!a. ~(Select2 a = Delay2)) /\ (!a' a. ~(Select2 a = Print2 a')) /\ !a. ~(Delay2 = Print2 a) [hostThreadState_induction] Theorem |- !P. P Run /\ P Exit /\ P Zombie /\ (!T. P (Ret T)) /\ (!p. P (Sendto2 p)) /\ (!f. P (Recvfrom2 f)) /\ (!p. P (Select2 p)) /\ P Delay2 /\ (!s. P (Print2 s)) ==> !h. P h [hostThreadState_nchotomy] Theorem |- !h. (h = Run) \/ (h = Exit) \/ (h = Zombie) \/ (?T. h = Ret T) \/ (?p. h = Sendto2 p) \/ (?f. h = Recvfrom2 f) \/ (?p. h = Select2 p) \/ (h = Delay2) \/ ?s. h = Print2 s [host_11] Theorem |- !a0 a1 a2 a3 a4 a0' a1' a2' a3' a4'. (host a0 a1 a2 a3 a4 = host a0' a1' a2' a3' a4') = (a0 = a0') /\ (a1 = a1') /\ (a2 = a2') /\ (a3 = a3') /\ (a4 = a4') [host_Axiom] Theorem |- !f. ?fn. !a0 a1 a2 a3 a4. fn (host a0 a1 a2 a3 a4) = f a0 a1 a2 a3 a4 [host_accessors] Theorem |- (!f f0 l t b. (host f f0 l t b).ifds = f) /\ (!f f0 l t b. (host f f0 l t b).ts = f0) /\ (!f f0 l t b. (host f f0 l t b).s = l) /\ (!f f0 l t b. (host f f0 l t b).oq = t) /\ !f f0 l t b. (host f f0 l t b).oqf = b [host_accfupds] Theorem |- (!h f. (h with ts updated_by f).ifds = h.ifds) /\ (!h f. (h with s updated_by f).ifds = h.ifds) /\ (!h f. (h with oq updated_by f).ifds = h.ifds) /\ (!h f. (h with oqf updated_by f).ifds = h.ifds) /\ (!h f. (h with ifds updated_by f).ts = h.ts) /\ (!h f. (h with s updated_by f).ts = h.ts) /\ (!h f. (h with oq updated_by f).ts = h.ts) /\ (!h f. (h with oqf updated_by f).ts = h.ts) /\ (!h f. (h with ifds updated_by f).s = h.s) /\ (!h f. (h with ts updated_by f).s = h.s) /\ (!h f. (h with oq updated_by f).s = h.s) /\ (!h f. (h with oqf updated_by f).s = h.s) /\ (!h f. (h with ifds updated_by f).oq = h.oq) /\ (!h f. (h with ts updated_by f).oq = h.oq) /\ (!h f. (h with s updated_by f).oq = h.oq) /\ (!h f. (h with oqf updated_by f).oq = h.oq) /\ (!h f. (h with ifds updated_by f).oqf = h.oqf) /\ (!h f. (h with ts updated_by f).oqf = h.oqf) /\ (!h f. (h with s updated_by f).oqf = h.oqf) /\ (!h f. (h with oq updated_by f).oqf = h.oqf) /\ (!h f. (h with ifds updated_by f).ifds = f h.ifds) /\ (!h f. (h with ts updated_by f).ts = f h.ts) /\ (!h f. (h with s updated_by f).s = f h.s) /\ (!h f. (h with oq updated_by f).oq = f h.oq) /\ !h f. (h with oqf updated_by f).oqf = f h.oqf [host_accupds] Theorem |- (!x h. (h with ts := x).ifds = h.ifds) /\ (!x h. (h with s := x).ifds = h.ifds) /\ (!x h. (h with oq := x).ifds = h.ifds) /\ (!x h. (h with oqf := x).ifds = h.ifds) /\ (!x h. (h with ifds := x).ts = h.ts) /\ (!x h. (h with s := x).ts = h.ts) /\ (!x h. (h with oq := x).ts = h.ts) /\ (!x h. (h with oqf := x).ts = h.ts) /\ (!x h. (h with ifds := x).s = h.s) /\ (!x h. (h with ts := x).s = h.s) /\ (!x h. (h with oq := x).s = h.s) /\ (!x h. (h with oqf := x).s = h.s) /\ (!x h. (h with ifds := x).oq = h.oq) /\ (!x h. (h with ts := x).oq = h.oq) /\ (!x h. (h with s := x).oq = h.oq) /\ (!x h. (h with oqf := x).oq = h.oq) /\ (!x h. (h with ifds := x).oqf = h.oqf) /\ (!x h. (h with ts := x).oqf = h.oqf) /\ (!x h. (h with s := x).oqf = h.oqf) /\ (!x h. (h with oq := x).oqf = h.oqf) /\ (!x h. (h with ifds := x).ifds = x) /\ (!x h. (h with ts := x).ts = x) /\ (!x h. (h with s := x).s = x) /\ (!x h. (h with oq := x).oq = x) /\ !x h. (h with oqf := x).oqf = x [host_case_cong] Theorem |- !M M' f. (M = M') /\ (!a0 a1 a2 a3 a4. (M' = host a0 a1 a2 a3 a4) ==> (f a0 a1 a2 a3 a4 = f' a0 a1 a2 a3 a4)) ==> (case f M = case f' M') [host_component_equality] Theorem |- !h1 h2. (h1 = h2) = (h1.ifds = h2.ifds) /\ (h1.ts = h2.ts) /\ (h1.s = h2.s) /\ (h1.oq = h2.oq) /\ (h1.oqf = h2.oqf) [host_cupdaccs] Theorem |- (!val h. (val = h.ifds) ==> (h with ifds := val = h)) /\ (!val h. (val = h.ts) ==> (h with ts := val = h)) /\ (!val h. (val = h.s) ==> (h with s := val = h)) /\ (!val h. (val = h.oq) ==> (h with oq := val = h)) /\ !val h. (val = h.oqf) ==> (h with oqf := val = h) [host_fn_updates] Theorem |- (!f x. x with ifds updated_by f = x with ifds := f x.ifds) /\ (!f x. x with ts updated_by f = x with ts := f x.ts) /\ (!f x. x with s updated_by f = x with s := f x.s) /\ (!f x. x with oq updated_by f = x with oq := f x.oq) /\ !f x. x with oqf updated_by f = x with oqf := f x.oqf [host_ifds_update_semi11] Theorem |- !x y r1 r2. (r1 with ifds := x = r2 with ifds := y) ==> (x = y) [host_induction] Theorem |- !P. (!f f0 l t b. P (host f f0 l t b)) ==> !h. P h [host_nchotomy] Theorem |- !h. ?f f0 l t b. h = host f f0 l t b [host_oq_update_semi11] Theorem |- !x y r1 r2. (r1 with oq := x = r2 with oq := y) ==> (x = y) [host_oqf_update_semi11] Theorem |- !x y r1 r2. (r1 with oqf := x = r2 with oqf := y) ==> (x = y) [host_s_update_semi11] Theorem |- !x y r1 r2. (r1 with s := x = r2 with s := y) ==> (x = y) [host_ts_update_semi11] Theorem |- !x y r1 r2. (r1 with ts := x = r2 with ts := y) ==> (x = y) [host_updaccs] Theorem |- (!h. h with ifds := h.ifds = h) /\ (!h. h with ts := h.ts = h) /\ (!h. h with s := h.s = h) /\ (!h. h with oq := h.oq = h) /\ !h. h with oqf := h.oqf = h [host_updates] Theorem |- (!f1 f f0 l t b. host f f0 l t b with ifds := f1 = host f1 f0 l t b) /\ (!f1 f f0 l t b. host f f0 l t b with ts := f1 = host f f1 l t b) /\ (!l0 f f0 l t b. host f f0 l t b with s := l0 = host f f0 l0 t b) /\ (!t0 f f0 l t b. host f f0 l t b with oq := t0 = host f f0 l t0 b) /\ !b0 f f0 l t b. host f f0 l t b with oqf := b0 = host f f0 l t b0 [host_updates_eq_literal] Theorem |- !t l h f0 f b. h with <|ifds := f0; ts := f; s := l; oq := t; oqf := b|> = <|ifds := f0; ts := f; s := l; oq := t; oqf := b|> [host_updcanon] Theorem |- (!z x h. h with <|ts := x; ifds := z|> = h with <|ifds := z; ts := x|>) /\ (!z x h. h with <|s := x; ifds := z|> = h with <|ifds := z; s := x|>) /\ (!z x h. h with <|s := x; ts := z|> = h with <|ts := z; s := x|>) /\ (!z x h. h with <|oq := x; ifds := z|> = h with <|ifds := z; oq := x|>) /\ (!z x h. h with <|oq := x; ts := z|> = h with <|ts := z; oq := x|>) /\ (!z x h. h with <|oq := x; s := z|> = h with <|s := z; oq := x|>) /\ (!z x h. h with <|oqf := x; ifds := z|> = h with <|ifds := z; oqf := x|>) /\ (!z x h. h with <|oqf := x; ts := z|> = h with <|ts := z; oqf := x|>) /\ (!z x h. h with <|oqf := x; s := z|> = h with <|s := z; oqf := x|>) /\ !z x h. h with <|oqf := x; oq := z|> = h with <|oq := z; oqf := x|> [host_updupds] Theorem |- (!x2 x1 h. h with <|ifds := x1; ifds := x2|> = h with ifds := x1) /\ (!x2 x1 h. h with <|ts := x1; ts := x2|> = h with ts := x1) /\ (!x2 x1 h. h with <|s := x1; s := x2|> = h with s := x1) /\ (!x2 x1 h. h with <|oq := x1; oq := x2|> = h with oq := x1) /\ !x2 x1 h. h with <|oqf := x1; oqf := x2|> = h with oqf := x1 [ifd_11] Theorem |- !a0 a1 a2 a3 a0' a1' a2' a3'. (ifd a0 a1 a2 a3 = ifd a0' a1' a2' a3') = (a0 = a0') /\ (a1 = a1') /\ (a2 = a2') /\ (a3 = a3') [ifd_Axiom] Theorem |- !f. ?fn. !a0 a1 a2 a3. fn (ifd a0 a1 a2 a3) = f a0 a1 a2 a3 [ifd_accessors] Theorem |- (!i f i0 n. (ifd i f i0 n).ifid = i) /\ (!i f i0 n. (ifd i f i0 n).ipset = f) /\ (!i f i0 n. (ifd i f i0 n).primary = i0) /\ !i f i0 n. (ifd i f i0 n).netmask = n [ifd_accfupds] Theorem |- (!i f. (i with ipset updated_by f).ifid = i.ifid) /\ (!i f. (i with primary updated_by f).ifid = i.ifid) /\ (!i f. (i with netmask updated_by f).ifid = i.ifid) /\ (!i f. (i with ifid updated_by f).ipset = i.ipset) /\ (!i f. (i with primary updated_by f).ipset = i.ipset) /\ (!i f. (i with netmask updated_by f).ipset = i.ipset) /\ (!i f. (i with ifid updated_by f).primary = i.primary) /\ (!i f. (i with ipset updated_by f).primary = i.primary) /\ (!i f. (i with netmask updated_by f).primary = i.primary) /\ (!i f. (i with ifid updated_by f).netmask = i.netmask) /\ (!i f. (i with ipset updated_by f).netmask = i.netmask) /\ (!i f. (i with primary updated_by f).netmask = i.netmask) /\ (!i f. (i with ifid updated_by f).ifid = f i.ifid) /\ (!i f. (i with ipset updated_by f).ipset = f i.ipset) /\ (!i f. (i with primary updated_by f).primary = f i.primary) /\ !i f. (i with netmask updated_by f).netmask = f i.netmask [ifd_accupds] Theorem |- (!x i. (i with ipset := x).ifid = i.ifid) /\ (!x i. (i with primary := x).ifid = i.ifid) /\ (!x i. (i with netmask := x).ifid = i.ifid) /\ (!x i. (i with ifid := x).ipset = i.ipset) /\ (!x i. (i with primary := x).ipset = i.ipset) /\ (!x i. (i with netmask := x).ipset = i.ipset) /\ (!x i. (i with ifid := x).primary = i.primary) /\ (!x i. (i with ipset := x).primary = i.primary) /\ (!x i. (i with netmask := x).primary = i.primary) /\ (!x i. (i with ifid := x).netmask = i.netmask) /\ (!x i. (i with ipset := x).netmask = i.netmask) /\ (!x i. (i with primary := x).netmask = i.netmask) /\ (!x i. (i with ifid := x).ifid = x) /\ (!x i. (i with ipset := x).ipset = x) /\ (!x i. (i with primary := x).primary = x) /\ !x i. (i with netmask := x).netmask = x [ifd_case_cong] Theorem |- !M M' f. (M = M') /\ (!a0 a1 a2 a3. (M' = ifd a0 a1 a2 a3) ==> (f a0 a1 a2 a3 = f' a0 a1 a2 a3)) ==> (case f M = case f' M') [ifd_component_equality] Theorem |- !i1 i2. (i1 = i2) = (i1.ifid = i2.ifid) /\ (i1.ipset = i2.ipset) /\ (i1.primary = i2.primary) /\ (i1.netmask = i2.netmask) [ifd_cupdaccs] Theorem |- (!val i. (val = i.ifid) ==> (i with ifid := val = i)) /\ (!val i. (val = i.ipset) ==> (i with ipset := val = i)) /\ (!val i. (val = i.primary) ==> (i with primary := val = i)) /\ !val i. (val = i.netmask) ==> (i with netmask := val = i) [ifd_fn_updates] Theorem |- (!f x. x with ifid updated_by f = x with ifid := f x.ifid) /\ (!f x. x with ipset updated_by f = x with ipset := f x.ipset) /\ (!f x. x with primary updated_by f = x with primary := f x.primary) /\ !f x. x with netmask updated_by f = x with netmask := f x.netmask [ifd_ifid_update_semi11] Theorem |- !x y r1 r2. (r1 with ifid := x = r2 with ifid := y) ==> (x = y) [ifd_induction] Theorem |- !P. (!i f i0 n. P (ifd i f i0 n)) ==> !i. P i [ifd_ipset_update_semi11] Theorem |- !x y r1 r2. (r1 with ipset := x = r2 with ipset := y) ==> (x = y) [ifd_nchotomy] Theorem |- !i. ?i' f i0 n. i = ifd i' f i0 n [ifd_netmask_update_semi11] Theorem |- !x y r1 r2. (r1 with netmask := x = r2 with netmask := y) ==> (x = y) [ifd_primary_update_semi11] Theorem |- !x y r1 r2. (r1 with primary := x = r2 with primary := y) ==> (x = y) [ifd_updaccs] Theorem |- (!i. i with ifid := i.ifid = i) /\ (!i. i with ipset := i.ipset = i) /\ (!i. i with primary := i.primary = i) /\ !i. i with netmask := i.netmask = i [ifd_updates] Theorem |- (!i1 i f i0 n. ifd i f i0 n with ifid := i1 = ifd i1 f i0 n) /\ (!f0 i f i0 n. ifd i f i0 n with ipset := f0 = ifd i f0 i0 n) /\ (!i1 i f i0 n. ifd i f i0 n with primary := i1 = ifd i f i1 n) /\ !n0 i f i0 n. ifd i f i0 n with netmask := n0 = ifd i f i0 n0 [ifd_updates_eq_literal] Theorem |- !n i1 i0 i f. i with <|ifid := i1; ipset := f; primary := i0; netmask := n|> = <|ifid := i1; ipset := f; primary := i0; netmask := n|> [ifd_updcanon] Theorem |- (!z x i. i with <|ipset := x; ifid := z|> = i with <|ifid := z; ipset := x|>) /\ (!z x i. i with <|primary := x; ifid := z|> = i with <|ifid := z; primary := x|>) /\ (!z x i. i with <|primary := x; ipset := z|> = i with <|ipset := z; primary := x|>) /\ (!z x i. i with <|netmask := x; ifid := z|> = i with <|ifid := z; netmask := x|>) /\ (!z x i. i with <|netmask := x; ipset := z|> = i with <|ipset := z; netmask := x|>) /\ !z x i. i with <|netmask := x; primary := z|> = i with <|primary := z; netmask := x|> [ifd_updupds] Theorem |- (!x2 x1 i. i with <|ifid := x1; ifid := x2|> = i with ifid := x1) /\ (!x2 x1 i. i with <|ipset := x1; ipset := x2|> = i with ipset := x1) /\ (!x2 x1 i. i with <|primary := x1; primary := x2|> = i with primary := x1) /\ !x2 x1 i. i with <|netmask := x1; netmask := x2|> = i with netmask := x1 [ifid_11] Theorem |- !a a'. (ETH a = ETH a') = (a = a') [ifid_Axiom] Theorem |- !f0 f1. ?fn. (fn LO = f0) /\ !a. fn (ETH a) = f1 a [ifid_case_cong] Theorem |- !M M' v f. (M = M') /\ ((M' = LO) ==> (v = v')) /\ (!a. (M' = ETH a) ==> (f a = f' a)) ==> (case v f M = case v' f' M') [ifid_distinct] Theorem |- !a. ~(LO = ETH a) [ifid_induction] Theorem |- !P. P LO /\ (!n. P (ETH n)) ==> !i. P i [ifid_nchotomy] Theorem |- !i. (i = LO) \/ ?n. i = ETH n [ipBody_11] Theorem |- (!a a'. (UDP a = UDP a') = (a = a')) /\ (!a a'. (ICMP_HOST_UNREACH a = ICMP_HOST_UNREACH a') = (a = a')) /\ !a a'. (ICMP_PORT_UNREACH a = ICMP_PORT_UNREACH a') = (a = a') [ipBody_Axiom] Theorem |- !f0 f1 f2. ?fn. (!a. fn (UDP a) = f0 a) /\ (!a. fn (ICMP_HOST_UNREACH a) = f1 a) /\ !a. fn (ICMP_PORT_UNREACH a) = f2 a [ipBody_case_cong] Theorem |- !M M' f f1 f2. (M = M') /\ (!a. (M' = UDP a) ==> (f a = f' a)) /\ (!a. (M' = ICMP_HOST_UNREACH a) ==> (f1 a = f1' a)) /\ (!a. (M' = ICMP_PORT_UNREACH a) ==> (f2 a = f2' a)) ==> (case f f1 f2 M = case f' f1' f2' M') [ipBody_distinct] Theorem |- (!a' a. ~(UDP a = ICMP_HOST_UNREACH a')) /\ (!a' a. ~(UDP a = ICMP_PORT_UNREACH a')) /\ !a' a. ~(ICMP_HOST_UNREACH a = ICMP_PORT_UNREACH a') [ipBody_induction] Theorem |- !P. (!p. P (UDP p)) /\ (!p. P (ICMP_HOST_UNREACH p)) /\ (!p. P (ICMP_PORT_UNREACH p)) ==> !i. P i [ipBody_nchotomy] Theorem |- !i. (?p. i = UDP p) \/ (?p. i = ICMP_HOST_UNREACH p) \/ ?p. i = ICMP_PORT_UNREACH p [ip_11] Theorem |- !a a'. (ip a = ip a') = (a = a') [ip_Axiom] Theorem |- !f. ?fn. !a. fn (ip a) = f a [ip_case_cong] Theorem |- !M M' f. (M = M') /\ (!a. (M' = ip a) ==> (f a = f' a)) ==> (case f M = case f' M') [ip_induction] Theorem |- !P. (!n. P (ip n)) ==> !i. P i [ip_nchotomy] Theorem |- !i. ?n. i = ip n [location_11] Theorem |- !a a'. (Loc a = Loc a') = (a = a') [location_Axiom] Theorem |- !f. ?fn. !a. fn (Loc a) = f a [location_case_cong] Theorem |- !M M' f. (M = M') /\ (!a. (M' = Loc a) ==> (f a = f' a)) ==> (case f M = case f' M') [location_induction] Theorem |- !P. (!p. P (Loc p)) ==> !l. P l [location_nchotomy] Theorem |- !l. ?p. l = Loc p [msg_11] Theorem |- !a0 a1 a2 a0' a1' a2'. (msg a0 a1 a2 = msg a0' a1' a2') = (a0 = a0') /\ (a1 = a1') /\ (a2 = a2') [msg_Axiom] Theorem |- !f. ?fn. !a0 a1 a2. fn (msg a0 a1 a2) = f a0 a1 a2 [msg_accessors] Theorem |- (!i i0 i1. (msg i i0 i1).src = i) /\ (!i i0 i1. (msg i i0 i1).dest = i0) /\ !i i0 i1. (msg i i0 i1).body = i1 [msg_accfupds] Theorem |- (!m f. (m with dest updated_by f).src = m.src) /\ (!m f. (m with body updated_by f).src = m.src) /\ (!m f. (m with src updated_by f).dest = m.dest) /\ (!m f. (m with body updated_by f).dest = m.dest) /\ (!m f. (m with src updated_by f).body = m.body) /\ (!m f. (m with dest updated_by f).body = m.body) /\ (!m f. (m with src updated_by f).src = f m.src) /\ (!m f. (m with dest updated_by f).dest = f m.dest) /\ !m f. (m with body updated_by f).body = f m.body [msg_accupds] Theorem |- (!x m. (m with dest := x).src = m.src) /\ (!x m. (m with body := x).src = m.src) /\ (!x m. (m with src := x).dest = m.dest) /\ (!x m. (m with body := x).dest = m.dest) /\ (!x m. (m with src := x).body = m.body) /\ (!x m. (m with dest := x).body = m.body) /\ (!x m. (m with src := x).src = x) /\ (!x m. (m with dest := x).dest = x) /\ !x m. (m with body := x).body = x [msg_body_update_semi11] Theorem |- !x y r1 r2. (r1 with body := x = r2 with body := y) ==> (x = y) [msg_case_cong] Theorem |- !M M' f. (M = M') /\ (!a0 a1 a2. (M' = msg a0 a1 a2) ==> (f a0 a1 a2 = f' a0 a1 a2)) ==> (case f M = case f' M') [msg_component_equality] Theorem |- !m1 m2. (m1 = m2) = (m1.src = m2.src) /\ (m1.dest = m2.dest) /\ (m1.body = m2.body) [msg_cupdaccs] Theorem |- (!val m. (val = m.src) ==> (m with src := val = m)) /\ (!val m. (val = m.dest) ==> (m with dest := val = m)) /\ !val m. (val = m.body) ==> (m with body := val = m) [msg_dest_update_semi11] Theorem |- !x y r1 r2. (r1 with dest := x = r2 with dest := y) ==> (x = y) [msg_fn_updates] Theorem |- (!f x. x with src updated_by f = x with src := f x.src) /\ (!f x. x with dest updated_by f = x with dest := f x.dest) /\ !f x. x with body updated_by f = x with body := f x.body [msg_induction] Theorem |- !P. (!i i0 i1. P (msg i i0 i1)) ==> !m. P m [msg_nchotomy] Theorem |- !m. ?i i0 i1. m = msg i i0 i1 [msg_src_update_semi11] Theorem |- !x y r1 r2. (r1 with src := x = r2 with src := y) ==> (x = y) [msg_updaccs] Theorem |- (!m. m with src := m.src = m) /\ (!m. m with dest := m.dest = m) /\ !m. m with body := m.body = m [msg_updates] Theorem |- (!i2 i i0 i1. msg i i0 i1 with src := i2 = msg i2 i0 i1) /\ (!i2 i i0 i1. msg i i0 i1 with dest := i2 = msg i i2 i1) /\ !i2 i i0 i1. msg i i0 i1 with body := i2 = msg i i0 i2 [msg_updates_eq_literal] Theorem |- !m i1 i0 i. m with <|src := i1; dest := i0; body := i|> = <|src := i1; dest := i0; body := i|> [msg_updcanon] Theorem |- (!z x m. m with <|dest := x; src := z|> = m with <|src := z; dest := x|>) /\ (!z x m. m with <|body := x; src := z|> = m with <|src := z; body := x|>) /\ !z x m. m with <|body := x; dest := z|> = m with <|dest := z; body := x|> [msg_updupds] Theorem |- (!x2 x1 m. m with <|src := x1; src := x2|> = m with src := x1) /\ (!x2 x1 m. m with <|dest := x1; dest := x2|> = m with dest := x1) /\ !x2 x1 m. m with <|body := x1; body := x2|> = m with body := x1 [netmask_11] Theorem |- !a a'. (NETMASK a = NETMASK a') = (a = a') [netmask_Axiom] Theorem |- !f. ?fn. !a. fn (NETMASK a) = f a [netmask_case_cong] Theorem |- !M M' f. (M = M') /\ (!a. (M' = NETMASK a) ==> (f a = f' a)) ==> (case f M = case f' M') [netmask_induction] Theorem |- !P. (!n. P (NETMASK n)) ==> !n. P n [netmask_nchotomy] Theorem |- !n. ?n'. n = NETMASK n' [num2error_11] Theorem |- !r r'. r < 16 ==> r' < 16 ==> ((num2error r = num2error r') = (r = r')) [num2error_ONTO] Theorem |- !a. ?r. (a = num2error r) /\ r < 16 [num2error_error2num] Theorem |- !a. num2error (error2num a) = a [num2sockopt_11] Theorem |- !r r'. r < 2 ==> r' < 2 ==> ((num2sockopt r = num2sockopt r') = (r = r')) [num2sockopt_ONTO] Theorem |- !a. ?r. (a = num2sockopt r) /\ r < 2 [num2sockopt_sockopt2num] Theorem |- !a. num2sockopt (sockopt2num a) = a [port_11] Theorem |- !a a'. (Port a = Port a') = (a = a') [port_Axiom] Theorem |- !f. ?fn. !a. fn (Port a) = f a [port_case_cong] Theorem |- !M M' f. (M = M') /\ (!a. (M' = Port a) ==> (f a = f' a)) ==> (case f M = case f' M') [port_induction] Theorem |- !P. (!n. P (Port n)) ==> !p. P p [port_nchotomy] Theorem |- !p. ?n. p = Port n [socket_11] Theorem |- !a0 a1 a2 a3 a4 a5 a6 a7 a0' a1' a2' a3' a4' a5' a6' a7'. (socket a0 a1 a2 a3 a4 a5 a6 a7 = socket a0' a1' a2' a3' a4' a5' a6' a7') = (a0 = a0') /\ (a1 = a1') /\ (a2 = a2') /\ (a3 = a3') /\ (a4 = a4') /\ (a5 = a5') /\ (a6 = a6') /\ (a7 = a7') [socket_Axiom] Theorem |- !f. ?fn. !a0 a1 a2 a3 a4 a5 a6 a7. fn (socket a0 a1 a2 a3 a4 a5 a6 a7) = f a0 a1 a2 a3 a4 a5 a6 a7 [socket_accessors] Theorem |- (!f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).fd = f) /\ (!f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).is1 = $o) /\ (!f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).ps1 = o0) /\ (!f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).is2 = o1) /\ (!f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).ps2 = o2) /\ (!f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).es = o3) /\ (!f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).f = f0) /\ !f $o o0 o1 o2 o3 f0 l. (socket f $o o0 o1 o2 o3 f0 l).mq = l [socket_accfupds] Theorem |- (!s f. (s with is1 updated_by f).fd = s.fd) /\ (!s f. (s with ps1 updated_by f).fd = s.fd) /\ (!s f. (s with is2 updated_by f).fd = s.fd) /\ (!s f. (s with ps2 updated_by f).fd = s.fd) /\ (!s f. (s with es updated_by f).fd = s.fd) /\ (!s f. (s with f updated_by f).fd = s.fd) /\ (!s f. (s with mq updated_by f).fd = s.fd) /\ (!s f. (s with fd updated_by f).is1 = s.is1) /\ (!s f. (s with ps1 updated_by f).is1 = s.is1) /\ (!s f. (s with is2 updated_by f).is1 = s.is1) /\ (!s f. (s with ps2 updated_by f).is1 = s.is1) /\ (!s f. (s with es updated_by f).is1 = s.is1) /\ (!s f. (s with f updated_by f).is1 = s.is1) /\ (!s f. (s with mq updated_by f).is1 = s.is1) /\ (!s f. (s with fd updated_by f).ps1 = s.ps1) /\ (!s f. (s with is1 updated_by f).ps1 = s.ps1) /\ (!s f. (s with is2 updated_by f).ps1 = s.ps1) /\ (!s f. (s with ps2 updated_by f).ps1 = s.ps1) /\ (!s f. (s with es updated_by f).ps1 = s.ps1) /\ (!s f. (s with f updated_by f).ps1 = s.ps1) /\ (!s f. (s with mq updated_by f).ps1 = s.ps1) /\ (!s f. (s with fd updated_by f).is2 = s.is2) /\ (!s f. (s with is1 updated_by f).is2 = s.is2) /\ (!s f. (s with ps1 updated_by f).is2 = s.is2) /\ (!s f. (s with ps2 updated_by f).is2 = s.is2) /\ (!s f. (s with es updated_by f).is2 = s.is2) /\ (!s f. (s with f updated_by f).is2 = s.is2) /\ (!s f. (s with mq updated_by f).is2 = s.is2) /\ (!s f. (s with fd updated_by f).ps2 = s.ps2) /\ (!s f. (s with is1 updated_by f).ps2 = s.ps2) /\ (!s f. (s with ps1 updated_by f).ps2 = s.ps2) /\ (!s f. (s with is2 updated_by f).ps2 = s.ps2) /\ (!s f. (s with es updated_by f).ps2 = s.ps2) /\ (!s f. (s with f updated_by f).ps2 = s.ps2) /\ (!s f. (s with mq updated_by f).ps2 = s.ps2) /\ (!s f. (s with fd updated_by f).es = s.es) /\ (!s f. (s with is1 updated_by f).es = s.es) /\ (!s f. (s with ps1 updated_by f).es = s.es) /\ (!s f. (s with is2 updated_by f).es = s.es) /\ (!s f. (s with ps2 updated_by f).es = s.es) /\ (!s f. (s with f updated_by f).es = s.es) /\ (!s f. (s with mq updated_by f).es = s.es) /\ (!s f. (s with fd updated_by f).f = s.f) /\ (!s f. (s with is1 updated_by f).f = s.f) /\ (!s f. (s with ps1 updated_by f).f = s.f) /\ (!s f. (s with is2 updated_by f).f = s.f) /\ (!s f. (s with ps2 updated_by f).f = s.f) /\ (!s f. (s with es updated_by f).f = s.f) /\ (!s f. (s with mq updated_by f).f = s.f) /\ (!s f. (s with fd updated_by f).mq = s.mq) /\ (!s f. (s with is1 updated_by f).mq = s.mq) /\ (!s f. (s with ps1 updated_by f).mq = s.mq) /\ (!s f. (s with is2 updated_by f).mq = s.mq) /\ (!s f. (s with ps2 updated_by f).mq = s.mq) /\ (!s f. (s with es updated_by f).mq = s.mq) /\ (!s f. (s with f updated_by f).mq = s.mq) /\ (!s f. (s with fd updated_by f).fd = f s.fd) /\ (!s f. (s with is1 updated_by f).is1 = f s.is1) /\ (!s f. (s with ps1 updated_by f).ps1 = f s.ps1) /\ (!s f. (s with is2 updated_by f).is2 = f s.is2) /\ (!s f. (s with ps2 updated_by f).ps2 = f s.ps2) /\ (!s f. (s with es updated_by f).es = f s.es) /\ (!s f. (s with f updated_by f).f = f s.f) /\ !s f. (s with mq updated_by f).mq = f s.mq [socket_accupds] Theorem |- (!x s. (s with is1 := x).fd = s.fd) /\ (!x s. (s with ps1 := x).fd = s.fd) /\ (!x s. (s with is2 := x).fd = s.fd) /\ (!x s. (s with ps2 := x).fd = s.fd) /\ (!x s. (s with es := x).fd = s.fd) /\ (!x s. (s with f := x).fd = s.fd) /\ (!x s. (s with mq := x).fd = s.fd) /\ (!x s. (s with fd := x).is1 = s.is1) /\ (!x s. (s with ps1 := x).is1 = s.is1) /\ (!x s. (s with is2 := x).is1 = s.is1) /\ (!x s. (s with ps2 := x).is1 = s.is1) /\ (!x s. (s with es := x).is1 = s.is1) /\ (!x s. (s with f := x).is1 = s.is1) /\ (!x s. (s with mq := x).is1 = s.is1) /\ (!x s. (s with fd := x).ps1 = s.ps1) /\ (!x s. (s with is1 := x).ps1 = s.ps1) /\ (!x s. (s with is2 := x).ps1 = s.ps1) /\ (!x s. (s with ps2 := x).ps1 = s.ps1) /\ (!x s. (s with es := x).ps1 = s.ps1) /\ (!x s. (s with f := x).ps1 = s.ps1) /\ (!x s. (s with mq := x).ps1 = s.ps1) /\ (!x s. (s with fd := x).is2 = s.is2) /\ (!x s. (s with is1 := x).is2 = s.is2) /\ (!x s. (s with ps1 := x).is2 = s.is2) /\ (!x s. (s with ps2 := x).is2 = s.is2) /\ (!x s. (s with es := x).is2 = s.is2) /\ (!x s. (s with f := x).is2 = s.is2) /\ (!x s. (s with mq := x).is2 = s.is2) /\ (!x s. (s with fd := x).ps2 = s.ps2) /\ (!x s. (s with is1 := x).ps2 = s.ps2) /\ (!x s. (s with ps1 := x).ps2 = s.ps2) /\ (!x s. (s with is2 := x).ps2 = s.ps2) /\ (!x s. (s with es := x).ps2 = s.ps2) /\ (!x s. (s with f := x).ps2 = s.ps2) /\ (!x s. (s with mq := x).ps2 = s.ps2) /\ (!x s. (s with fd := x).es = s.es) /\ (!x s. (s with is1 := x).es = s.es) /\ (!x s. (s with ps1 := x).es = s.es) /\ (!x s. (s with is2 := x).es = s.es) /\ (!x s. (s with ps2 := x).es = s.es) /\ (!x s. (s with f := x).es = s.es) /\ (!x s. (s with mq := x).es = s.es) /\ (!x s. (s with fd := x).f = s.f) /\ (!x s. (s with is1 := x).f = s.f) /\ (!x s. (s with ps1 := x).f = s.f) /\ (!x s. (s with is2 := x).f = s.f) /\ (!x s. (s with ps2 := x).f = s.f) /\ (!x s. (s with es := x).f = s.f) /\ (!x s. (s with mq := x).f = s.f) /\ (!x s. (s with fd := x).mq = s.mq) /\ (!x s. (s with is1 := x).mq = s.mq) /\ (!x s. (s with ps1 := x).mq = s.mq) /\ (!x s. (s with is2 := x).mq = s.mq) /\ (!x s. (s with ps2 := x).mq = s.mq) /\ (!x s. (s with es := x).mq = s.mq) /\ (!x s. (s with f := x).mq = s.mq) /\ (!x s. (s with fd := x).fd = x) /\ (!x s. (s with is1 := x).is1 = x) /\ (!x s. (s with ps1 := x).ps1 = x) /\ (!x s. (s with is2 := x).is2 = x) /\ (!x s. (s with ps2 := x).ps2 = x) /\ (!x s. (s with es := x).es = x) /\ (!x s. (s with f := x).f = x) /\ !x s. (s with mq := x).mq = x [socket_case_cong] Theorem |- !M M' f. (M = M') /\ (!a0 a1 a2 a3 a4 a5 a6 a7. (M' = socket a0 a1 a2 a3 a4 a5 a6 a7) ==> (f a0 a1 a2 a3 a4 a5 a6 a7 = f' a0 a1 a2 a3 a4 a5 a6 a7)) ==> (case f M = case f' M') [socket_component_equality] Theorem |- !s1 s2. (s1 = s2) = (s1.fd = s2.fd) /\ (s1.is1 = s2.is1) /\ (s1.ps1 = s2.ps1) /\ (s1.is2 = s2.is2) /\ (s1.ps2 = s2.ps2) /\ (s1.es = s2.es) /\ (s1.f = s2.f) /\ (s1.mq = s2.mq) [socket_cupdaccs] Theorem |- (!val s. (val = s.fd) ==> (s with fd := val = s)) /\ (!val s. (val = s.is1) ==> (s with is1 := val = s)) /\ (!val s. (val = s.ps1) ==> (s with ps1 := val = s)) /\ (!val s. (val = s.is2) ==> (s with is2 := val = s)) /\ (!val s. (val = s.ps2) ==> (s with ps2 := val = s)) /\ (!val s. (val = s.es) ==> (s with es := val = s)) /\ (!val s. (val = s.f) ==> (s with f := val = s)) /\ !val s. (val = s.mq) ==> (s with mq := val = s) [socket_es_update_semi11] Theorem |- !x y r1 r2. (r1 with es := x = r2 with es := y) ==> (x = y) [socket_f_update_semi11] Theorem |- !x y r1 r2. (r1 with f := x = r2 with f := y) ==> (x = y) [socket_fd_update_semi11] Theorem |- !x y r1 r2. (r1 with fd := x = r2 with fd := y) ==> (x = y) [socket_fn_updates] Theorem |- (!f x. x with fd updated_by f = x with fd := f x.fd) /\ (!f x. x with is1 updated_by f = x with is1 := f x.is1) /\ (!f x. x with ps1 updated_by f = x with ps1 := f x.ps1) /\ (!f x. x with is2 updated_by f = x with is2 := f x.is2) /\ (!f x. x with ps2 updated_by f = x with ps2 := f x.ps2) /\ (!f x. x with es updated_by f = x with es := f x.es) /\ (!f x. x with f updated_by f = x with f := f x.f) /\ !f x. x with mq updated_by f = x with mq := f x.mq [socket_induction] Theorem |- !P. (!f $o o0 o1 o2 o3 f0 l. P (socket f $o o0 o1 o2 o3 f0 l)) ==> !s. P s [socket_is1_update_semi11] Theorem |- !x y r1 r2. (r1 with is1 := x = r2 with is1 := y) ==> (x = y) [socket_is2_update_semi11] Theorem |- !x y r1 r2. (r1 with is2 := x = r2 with is2 := y) ==> (x = y) [socket_mq_update_semi11] Theorem |- !x y r1 r2. (r1 with mq := x = r2 with mq := y) ==> (x = y) [socket_nchotomy] Theorem |- !s. ?f $o o0 o1 o2 o3 f0 l. s = socket f $o o0 o1 o2 o3 f0 l [socket_ps1_update_semi11] Theorem |- !x y r1 r2. (r1 with ps1 := x = r2 with ps1 := y) ==> (x = y) [socket_ps2_update_semi11] Theorem |- !x y r1 r2. (r1 with ps2 := x = r2 with ps2 := y) ==> (x = y) [socket_updaccs] Theorem |- (!s. s with fd := s.fd = s) /\ (!s. s with is1 := s.is1 = s) /\ (!s. s with ps1 := s.ps1 = s) /\ (!s. s with is2 := s.is2 = s) /\ (!s. s with ps2 := s.ps2 = s) /\ (!s. s with es := s.es = s) /\ (!s. s with f := s.f = s) /\ !s. s with mq := s.mq = s [socket_updates] Theorem |- (!f1 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with fd := f1 = socket f1 $o o0 o1 o2 o3 f0 l) /\ (!o4 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with is1 := o4 = socket f o4 o0 o1 o2 o3 f0 l) /\ (!o4 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with ps1 := o4 = socket f $o o4 o1 o2 o3 f0 l) /\ (!o4 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with is2 := o4 = socket f $o o0 o4 o2 o3 f0 l) /\ (!o4 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with ps2 := o4 = socket f $o o0 o1 o4 o3 f0 l) /\ (!o4 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with es := o4 = socket f $o o0 o1 o2 o4 f0 l) /\ (!f1 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with f := f1 = socket f $o o0 o1 o2 o3 f1 l) /\ !l0 f $o o0 o1 o2 o3 f0 l. socket f $o o0 o1 o2 o3 f0 l with mq := l0 = socket f $o o0 o1 o2 o3 f0 l0 [socket_updates_eq_literal] Theorem |- !s o3 o2 o1 o0 $o l f0 f. s with <|fd := f0; is1 := o3; ps1 := o2; is2 := o1; ps2 := o0; es := $o; f := f; mq := l|> = <|fd := f0; is1 := o3; ps1 := o2; is2 := o1; ps2 := o0; es := $o; f := f; mq := l|> [socket_updcanon] Theorem |- (!z x s. s with <|is1 := x; fd := z|> = s with <|fd := z; is1 := x|>) /\ (!z x s. s with <|ps1 := x; fd := z|> = s with <|fd := z; ps1 := x|>) /\ (!z x s. s with <|ps1 := x; is1 := z|> = s with <|is1 := z; ps1 := x|>) /\ (!z x s. s with <|is2 := x; fd := z|> = s with <|fd := z; is2 := x|>) /\ (!z x s. s with <|is2 := x; is1 := z|> = s with <|is1 := z; is2 := x|>) /\ (!z x s. s with <|is2 := x; ps1 := z|> = s with <|ps1 := z; is2 := x|>) /\ (!z x s. s with <|ps2 := x; fd := z|> = s with <|fd := z; ps2 := x|>) /\ (!z x s. s with <|ps2 := x; is1 := z|> = s with <|is1 := z; ps2 := x|>) /\ (!z x s. s with <|ps2 := x; ps1 := z|> = s with <|ps1 := z; ps2 := x|>) /\ (!z x s. s with <|ps2 := x; is2 := z|> = s with <|is2 := z; ps2 := x|>) /\ (!z x s. s with <|es := x; fd := z|> = s with <|fd := z; es := x|>) /\ (!z x s. s with <|es := x; is1 := z|> = s with <|is1 := z; es := x|>) /\ (!z x s. s with <|es := x; ps1 := z|> = s with <|ps1 := z; es := x|>) /\ (!z x s. s with <|es := x; is2 := z|> = s with <|is2 := z; es := x|>) /\ (!z x s. s with <|es := x; ps2 := z|> = s with <|ps2 := z; es := x|>) /\ (!z x s. s with <|f := x; fd := z|> = s with <|fd := z; f := x|>) /\ (!z x s. s with <|f := x; is1 := z|> = s with <|is1 := z; f := x|>) /\ (!z x s. s with <|f := x; ps1 := z|> = s with <|ps1 := z; f := x|>) /\ (!z x s. s with <|f := x; is2 := z|> = s with <|is2 := z; f := x|>) /\ (!z x s. s with <|f := x; ps2 := z|> = s with <|ps2 := z; f := x|>) /\ (!z x s. s with <|f := x; es := z|> = s with <|es := z; f := x|>) /\ (!z x s. s with <|mq := x; fd := z|> = s with <|fd := z; mq := x|>) /\ (!z x s. s with <|mq := x; is1 := z|> = s with <|is1 := z; mq := x|>) /\ (!z x s. s with <|mq := x; ps1 := z|> = s with <|ps1 := z; mq := x|>) /\ (!z x s. s with <|mq := x; is2 := z|> = s with <|is2 := z; mq := x|>) /\ (!z x s. s with <|mq := x; ps2 := z|> = s with <|ps2 := z; mq := x|>) /\ (!z x s. s with <|mq := x; es := z|> = s with <|es := z; mq := x|>) /\ !z x s. s with <|mq := x; f := z|> = s with <|f := z; mq := x|> [socket_updupds] Theorem |- (!x2 x1 s. s with <|fd := x1; fd := x2|> = s with fd := x1) /\ (!x2 x1 s. s with <|is1 := x1; is1 := x2|> = s with is1 := x1) /\ (!x2 x1 s. s with <|ps1 := x1; ps1 := x2|> = s with ps1 := x1) /\ (!x2 x1 s. s with <|is2 := x1; is2 := x2|> = s with is2 := x1) /\ (!x2 x1 s. s with <|ps2 := x1; ps2 := x2|> = s with ps2 := x1) /\ (!x2 x1 s. s with <|es := x1; es := x2|> = s with es := x1) /\ (!x2 x1 s. s with <|f := x1; f := x2|> = s with f := x1) /\ !x2 x1 s. s with <|mq := x1; mq := x2|> = s with mq := x1 [sockopt2num_11] Theorem |- !a a'. (sockopt2num a = sockopt2num a') = (a = a') [sockopt2num_ONTO] Theorem |- !r. r < 2 = ?a. r = sockopt2num a [sockopt2num_SO_BSDCOMPAT] Theorem |- sockopt2num SO_BSDCOMPAT = 0 [sockopt2num_SO_REUSEADDR] Theorem |- sockopt2num SO_REUSEADDR = 1 [sockopt2num_num2sockopt] Theorem |- !r. r < 2 = (sockopt2num (num2sockopt r) = r) [sockopt_Axiom] Theorem |- !x0 x1. ?f. (f SO_BSDCOMPAT = x0) /\ (f SO_REUSEADDR = x1) [sockopt_EQ_sockopt] Theorem |- !a a'. (a = a') = (sockopt2num a = sockopt2num a') [sockopt_case_cong] Theorem |- !M M' x0 x1. (M = M') /\ ((M' = SO_BSDCOMPAT) ==> (x0 = x0')) /\ ((M' = SO_REUSEADDR) ==> (x1 = x1')) ==> ((case M of SO_BSDCOMPAT -> x0 || SO_REUSEADDR -> x1) = case M' of SO_BSDCOMPAT -> x0' || SO_REUSEADDR -> x1') [sockopt_distinct] Theorem |- ~(SO_BSDCOMPAT = SO_REUSEADDR) [sockopt_induction] Theorem |- !P. P SO_BSDCOMPAT /\ P SO_REUSEADDR ==> !a. P a [sockopt_nchotomy] Theorem |- !a. (a = SO_BSDCOMPAT) \/ (a = SO_REUSEADDR) [tid_11] Theorem |- !a a'. (TID a = TID a') = (a = a') [tid_Axiom] Theorem |- !f. ?fn. !a. fn (TID a) = f a [tid_case_cong] Theorem |- !M M' f. (M = M') /\ (!a. (M' = TID a) ==> (f a = f' a)) ==> (case f M = case f' M') [tid_induction] Theorem |- !P. (!n. P (TID n)) ==> !t. P t [tid_nchotomy] Theorem |- !t. ?n. t = TID n [time_lt_def] Theorem |- (SOME x < SOME y = x < y) /\ (NONE < SOME v4 = F) /\ (NONE < NONE = F) /\ (SOME v2 < NONE = T) [time_lt_ind] Theorem |- !P. (!x y. P (SOME x) (SOME y)) /\ (!v4. P NONE (SOME v4)) /\ P NONE NONE /\ (!v2. P (SOME v2) NONE) ==> !v v1. P v v1 [timed_11] Theorem |- !a a'. (Timed a = Timed a') = (a = a') [timed_Axiom] Theorem |- !f. ?fn. !a. fn (Timed a) = f a [timed_case_cong] Theorem |- !M M' f. (M = M') /\ (!a. (M' = Timed a) ==> (f a = f' a)) ==> (case f M = case f' M') [timed_induction] Theorem |- !P. (!p. P (Timed p)) ==> !t. P t [timed_nchotomy] Theorem |- !t. ?p. t = Timed p [tlang_typing_cases] Theorem |- !a0 a1. tlang_typing a0 a1 = (?i. (a0 = TL_int i) /\ (a1 = TLty_int)) \/ (?b. (a0 = TL_bool b) /\ (a1 = TLty_bool)) \/ (?s. (a0 = TL_string s) /\ (a1 = TLty_string)) \/ (a0 = TL_one ()) /\ (a1 = TLty_one) \/ (?p1 p2 ty1 ty2. (a0 = TL_pair (p1,p2)) /\ (a1 = TLty_pair (ty1,ty2)) /\ tlang_typing p1 ty1 /\ tlang_typing p2 ty2) \/ (?tl ty. (a0 = TL_list tl) /\ (a1 = TLty_list ty) /\ !e. MEM e tl ==> tlang_typing e ty) \/ (?p ty. (a0 = TL_option (SOME p)) /\ (a1 = TLty_lift ty) /\ tlang_typing p ty) \/ (?ty. (a0 = TL_option NONE) /\ (a1 = TLty_lift ty)) \/ (?e ty. (a0 = TL_err (FAIL e)) /\ (a1 = TLty_err ty)) \/ (?p ty. (a0 = TL_err (OK p)) /\ (a1 = TLty_err ty) /\ tlang_typing p ty) \/ (?fd. (a0 = TL_fd fd) /\ (a1 = TLty_fd)) \/ (?i. (a0 = TL_ip i) /\ (a1 = TLty_ip)) \/ (?p. (a0 = TL_port p) /\ (a1 = TLty_port)) \/ (?e. (a0 = TL_error e) /\ (a1 = TLty_error)) \/ (?nm. (a0 = TL_netmask nm) /\ (a1 = TLty_netmask)) \/ (?ifid. (a0 = TL_ifid ifid) /\ (a1 = TLty_ifid)) \/ (?s. (a0 = TL_sockopt s) /\ (a1 = TLty_sockopt)) \/ (?tid. (a0 = TL_tid tid) /\ (a1 = TLty_tid)) \/ (?l ty. (a0 = TL_ref (Loc (ty,l))) /\ (a1 = TLty_ref ty)) \/ (?ex. (a0 = TL_exn ex) /\ (a1 = TLty_exn)) \/ (?p ty. (a0 = TL_except (EOK p)) /\ (a1 = TLty_except ty) /\ tlang_typing p ty) \/ ?ex ty. (a0 = TL_except (EEX ex)) /\ (a1 = TLty_except ty) /\ tlang_typing (TL_exn ex) TLty_exn [tlang_typing_ind] Theorem |- !tlang_typing'. (!i. tlang_typing' (TL_int i) TLty_int) /\ (!b. tlang_typing' (TL_bool b) TLty_bool) /\ (!s. tlang_typing' (TL_string s) TLty_string) /\ tlang_typing' (TL_one ()) TLty_one /\ (!p1 p2 ty1 ty2. tlang_typing' p1 ty1 /\ tlang_typing' p2 ty2 ==> tlang_typing' (TL_pair (p1,p2)) (TLty_pair (ty1,ty2))) /\ (!tl ty. (!e. MEM e tl ==> tlang_typing' e ty) ==> tlang_typing' (TL_list tl) (TLty_list ty)) /\ (!p ty. tlang_typing' p ty ==> tlang_typing' (TL_option (SOME p)) (TLty_lift ty)) /\ (!ty. tlang_typing' (TL_option NONE) (TLty_lift ty)) /\ (!e ty. tlang_typing' (TL_err (FAIL e)) (TLty_err ty)) /\ (!p ty. tlang_typing' p ty ==> tlang_typing' (TL_err (OK p)) (TLty_err ty)) /\ (!fd. tlang_typing' (TL_fd fd) TLty_fd) /\ (!i. tlang_typing' (TL_ip i) TLty_ip) /\ (!p. tlang_typing' (TL_port p) TLty_port) /\ (!e. tlang_typing' (TL_error e) TLty_error) /\ (!nm. tlang_typing' (TL_netmask nm) TLty_netmask) /\ (!ifid. tlang_typing' (TL_ifid ifid) TLty_ifid) /\ (!s. tlang_typing' (TL_sockopt s) TLty_sockopt) /\ (!tid. tlang_typing' (TL_tid tid) TLty_tid) /\ (!l ty. tlang_typing' (TL_ref (Loc (ty,l))) (TLty_ref ty)) /\ (!ex. tlang_typing' (TL_exn ex) TLty_exn) /\ (!p ty. tlang_typing' p ty ==> tlang_typing' (TL_except (EOK p)) (TLty_except ty)) /\ (!ex ty. tlang_typing' (TL_exn ex) TLty_exn ==> tlang_typing' (TL_except (EEX ex)) (TLty_except ty)) ==> !a0 a1. tlang_typing a0 a1 ==> tlang_typing' a0 a1 [tlang_typing_rules] Theorem |- (!i. tlang_typing (TL_int i) TLty_int) /\ (!b. tlang_typing (TL_bool b) TLty_bool) /\ (!s. tlang_typing (TL_string s) TLty_string) /\ tlang_typing (TL_one ()) TLty_one /\ (!p1 p2 ty1 ty2. tlang_typing p1 ty1 /\ tlang_typing p2 ty2 ==> tlang_typing (TL_pair (p1,p2)) (TLty_pair (ty1,ty2))) /\ (!tl ty. (!e. MEM e tl ==> tlang_typing e ty) ==> tlang_typing (TL_list tl) (TLty_list ty)) /\ (!p ty. tlang_typing p ty ==> tlang_typing (TL_option (SOME p)) (TLty_lift ty)) /\ (!ty. tlang_typing (TL_option NONE) (TLty_lift ty)) /\ (!e ty. tlang_typing (TL_err (FAIL e)) (TLty_err ty)) /\ (!p ty. tlang_typing p ty ==> tlang_typing (TL_err (OK p)) (TLty_err ty)) /\ (!fd. tlang_typing (TL_fd fd) TLty_fd) /\ (!i. tlang_typing (TL_ip i) TLty_ip) /\ (!p. tlang_typing (TL_port p) TLty_port) /\ (!e. tlang_typing (TL_error e) TLty_error) /\ (!nm. tlang_typing (TL_netmask nm) TLty_netmask) /\ (!ifid. tlang_typing (TL_ifid ifid) TLty_ifid) /\ (!s. tlang_typing (TL_sockopt s) TLty_sockopt) /\ (!tid. tlang_typing (TL_tid tid) TLty_tid) /\ (!l ty. tlang_typing (TL_ref (Loc (ty,l))) (TLty_ref ty)) /\ (!ex. tlang_typing (TL_exn ex) TLty_exn) /\ (!p ty. tlang_typing p ty ==> tlang_typing (TL_except (EOK p)) (TLty_except ty)) /\ !ex ty. tlang_typing (TL_exn ex) TLty_exn ==> tlang_typing (TL_except (EEX ex)) (TLty_except ty) *) end