diff --git a/crates/kind-checker/src/checker.hvm b/crates/kind-checker/src/checker.hvm index c0c1599e..79f4a494 100644 --- a/crates/kind-checker/src/checker.hvm +++ b/crates/kind-checker/src/checker.hvm @@ -1,850 +1,850 @@ -(Main) = let imports = [(Dynamic.new λa λb (Kind.Term.set_origin a b)), (Dynamic.new (Kind.API.check_all)), (Dynamic.new (Kind.API.eval_main))]; (Kind.API.check_all) -(Kind.API.check_all) = let output = (Kind.API.output (List.reverse (Kind.API.check_functions (Kind.Axiom.Functions)))); output -(Kind.API.check_functions []) = [] -(Kind.API.check_functions (List.cons f fs)) = let head = (Pair.new f (Kind.API.check_function f)); let tail = (Kind.API.check_functions fs); (List.cons head tail) -(Kind.API.check_function fnid) = let rules = (Kind.Axiom.RuleOf fnid); let type = (Kind.Axiom.TypeOf fnid); let type_check = (Kind.Checker.run (Kind.Checker.unify (Kind.Checker.check type (Kind.Term.typ 0))) (Bool.true)); let rule_check = (Kind.API.check_function.rules rules (Kind.Term.eval type)); let res = (List.cons type_check rule_check); (Bool.if (Kind.Axiom.CoverCheck fnid) let cover_check = (Kind.Checker.run (Kind.Coverage.check fnid) (Bool.true)); (List.cons cover_check res) res) -(Kind.Checker.check (Kind.Term.lam orig name body) type) = (Kind.Checker.bind (Kind.Checker.get_subst) λsubst let fun = (Kind.Term.if_all type λt_orig λt_name λt_type λt_body λorig λname λbody (Kind.Checker.bind (Kind.Checker.get_depth) λdep (Kind.Checker.bind (Kind.Checker.extended (Kind.Checker.check (body (Kind.Term.var orig name dep)) (t_body (Kind.Term.var t_orig t_name dep))) name t_type []) λchk (Kind.Checker.pure (Unit.new)))) λorig λname λbody (Kind.Checker.bind (Kind.Checker.get_context) λctx (Kind.Checker.fail (Kind.Error.cant_infer_lambda ctx orig)))); (fun orig name body)) -(Kind.Checker.check (Kind.Term.let orig name expr body) type) = (Kind.Checker.bind (Kind.Checker.get_depth) λdep (Kind.Checker.bind (Kind.Checker.infer expr) λexpr_typ (Kind.Checker.bind (Kind.Checker.extended (Kind.Checker.check (body (Kind.Term.var orig name dep)) type) name expr_typ [(Kind.Term.eval expr)]) λbody_chk (Kind.Checker.pure (Unit.new))))) -(Kind.Checker.check (Kind.Term.hlp orig) type) = (Kind.Checker.bind (Kind.Checker.get_context) λctx (Kind.Checker.bind (Kind.Checker.error (Kind.Error.inspection ctx orig type) (Unit.new)) λx_13 (Kind.Checker.pure (Unit.new)))) -(Kind.Checker.check (Kind.Term.var orig name idx) type) = (Kind.Checker.bind (Kind.Checker.get_right_hand_side) λrhs (Bool.if rhs (Kind.Checker.compare rhs (Kind.Term.var orig name idx) type) (Kind.Checker.extend name type []))) -(Kind.Checker.check (Kind.Term.hol orig numb) type) = (Kind.Checker.pure (Unit.new)) -(Kind.Checker.check term type) = (Kind.Checker.bind (Kind.Checker.get_right_hand_side) λrhs (Kind.Checker.compare rhs term type)) -(Kind.Checker.get_subst) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked context depth rhs subst eqts errs subst) -(Kind.Checker.get_right_hand_side) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked context depth rhs subst eqts errs rhs) -(Kind.Checker.extend name type vals) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked (Kind.Context.extend context name type vals) (+ depth 1) rhs subst eqts errs (Unit.new)) -(Kind.Context.extend (Kind.Context.empty) name type values) = (Kind.Context.entry name type values (Kind.Context.empty)) -(Kind.Context.extend (Kind.Context.entry n t v rest) name type values) = (Kind.Context.entry n t v (Kind.Context.extend rest name type values)) -(Kind.Checker.get_context) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked context depth rhs subst eqts errs context) -(Kind.Term.if_all (Kind.Term.all orig name typ body) func_if else) = (func_if orig name typ body) -(Kind.Term.if_all other func_if else) = else -(Kind.Term.eval (Kind.Term.typ orig)) = (Kind.Term.typ orig) -(Kind.Term.eval (Kind.Term.var orig name index)) = (Kind.Term.var orig name index) -(Kind.Term.eval (Kind.Term.hol orig numb)) = (Kind.Term.hol orig numb) -(Kind.Term.eval (Kind.Term.all orig name typ body)) = (Kind.Term.all orig name (Kind.Term.eval typ) λx (Kind.Term.eval (body x))) -(Kind.Term.eval (Kind.Term.lam orig name body)) = (Kind.Term.lam orig name λx (Kind.Term.eval (body x))) -(Kind.Term.eval (Kind.Term.let orig name expr body)) = (Kind.Term.eval_let orig name (Kind.Term.eval expr) λx (Kind.Term.eval (body x))) -(Kind.Term.eval (Kind.Term.ann orig expr typ)) = (Kind.Term.eval_ann orig (Kind.Term.eval expr) (Kind.Term.eval typ)) -(Kind.Term.eval (Kind.Term.sub orig name indx redx expr)) = (Kind.Term.eval_sub orig name indx redx (Kind.Term.eval expr)) -(Kind.Term.eval (Kind.Term.app orig expr typ)) = (Kind.Term.eval_app orig (Kind.Term.eval expr) (Kind.Term.eval typ)) -(Kind.Term.eval (Kind.Term.hlp orig)) = (Kind.Term.hlp orig) -(Kind.Term.eval (Kind.Term.U60 orig)) = (Kind.Term.U60 orig) -(Kind.Term.eval (Kind.Term.u60 orig num)) = (Kind.Term.u60 orig num) -(Kind.Term.eval (Kind.Term.F60 orig)) = (Kind.Term.F60 orig) -(Kind.Term.eval (Kind.Term.f60 orig num)) = (Kind.Term.f60 orig num) -(Kind.Term.eval (Kind.Term.op2 orig op left right)) = (Kind.Term.eval_op orig op (Kind.Term.eval left) (Kind.Term.eval right)) -(Kind.Term.eval (Kind.Term.ct0 ctid orig)) = (Kind.Term.ct0 ctid orig) -(Kind.Term.eval (Kind.Term.ct1 ctid orig x0)) = (Kind.Term.ct1 ctid orig (Kind.Term.eval x0)) -(Kind.Term.eval (Kind.Term.ct2 ctid orig x0 x1)) = (Kind.Term.ct2 ctid orig (Kind.Term.eval x0) (Kind.Term.eval x1)) -(Kind.Term.eval (Kind.Term.ct3 ctid orig x0 x1 x2)) = (Kind.Term.ct3 ctid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2)) -(Kind.Term.eval (Kind.Term.ct4 ctid orig x0 x1 x2 x3)) = (Kind.Term.ct4 ctid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3)) -(Kind.Term.eval (Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4)) = (Kind.Term.ct5 ctid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4)) -(Kind.Term.eval (Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5)) = (Kind.Term.ct6 ctid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5)) -(Kind.Term.eval (Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6)) = (Kind.Term.ct7 ctid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6)) -(Kind.Term.eval (Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Kind.Term.ct8 ctid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7)) -(Kind.Term.eval (Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Kind.Term.ct9 ctid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7) (Kind.Term.eval x8)) -(Kind.Term.eval (Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Kind.Term.ct10 ctid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7) (Kind.Term.eval x8) (Kind.Term.eval x9)) -(Kind.Term.eval (Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Kind.Term.ct11 ctid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7) (Kind.Term.eval x8) (Kind.Term.eval x9) (Kind.Term.eval x10)) -(Kind.Term.eval (Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Kind.Term.ct12 ctid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7) (Kind.Term.eval x8) (Kind.Term.eval x9) (Kind.Term.eval x10) (Kind.Term.eval x11)) -(Kind.Term.eval (Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Kind.Term.ct13 ctid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7) (Kind.Term.eval x8) (Kind.Term.eval x9) (Kind.Term.eval x10) (Kind.Term.eval x11) (Kind.Term.eval x12)) -(Kind.Term.eval (Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Kind.Term.ct14 ctid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7) (Kind.Term.eval x8) (Kind.Term.eval x9) (Kind.Term.eval x10) (Kind.Term.eval x11) (Kind.Term.eval x12) (Kind.Term.eval x13)) -(Kind.Term.eval (Kind.Term.ct15 fnid orig x0)) = (Kind.Term.ct15 fnid orig (Kind.Term.eval x0)) -(Kind.Term.eval (Kind.Term.ct16 fnid orig x0)) = (Kind.Term.ct16 fnid orig (Kind.Term.eval x0)) -(Kind.Term.eval (Kind.Term.fn0 fnid orig)) = (Kind.Term.FN0 fnid orig) -(Kind.Term.eval (Kind.Term.fn1 fnid orig x0)) = (Kind.Term.FN1 fnid orig (Kind.Term.eval x0)) -(Kind.Term.eval (Kind.Term.fn2 fnid orig x0 x1)) = (Kind.Term.FN2 fnid orig (Kind.Term.eval x0) (Kind.Term.eval x1)) -(Kind.Term.eval (Kind.Term.fn3 fnid orig x0 x1 x2)) = (Kind.Term.FN3 fnid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2)) -(Kind.Term.eval (Kind.Term.fn4 fnid orig x0 x1 x2 x3)) = (Kind.Term.FN4 fnid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3)) -(Kind.Term.eval (Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4)) = (Kind.Term.FN5 fnid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4)) -(Kind.Term.eval (Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5)) = (Kind.Term.FN6 fnid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5)) -(Kind.Term.eval (Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6)) = (Kind.Term.FN7 fnid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6)) -(Kind.Term.eval (Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Kind.Term.FN8 fnid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7)) -(Kind.Term.eval (Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Kind.Term.FN9 fnid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7) (Kind.Term.eval x8)) -(Kind.Term.eval (Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Kind.Term.FN10 fnid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7) (Kind.Term.eval x8) (Kind.Term.eval x9)) -(Kind.Term.eval (Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Kind.Term.FN11 fnid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7) (Kind.Term.eval x8) (Kind.Term.eval x9) (Kind.Term.eval x10)) -(Kind.Term.eval (Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Kind.Term.FN12 fnid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7) (Kind.Term.eval x8) (Kind.Term.eval x9) (Kind.Term.eval x10) (Kind.Term.eval x11)) -(Kind.Term.eval (Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Kind.Term.FN13 fnid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7) (Kind.Term.eval x8) (Kind.Term.eval x9) (Kind.Term.eval x10) (Kind.Term.eval x11) (Kind.Term.eval x12)) -(Kind.Term.eval (Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Kind.Term.FN14 fnid orig (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7) (Kind.Term.eval x8) (Kind.Term.eval x9) (Kind.Term.eval x10) (Kind.Term.eval x11) (Kind.Term.eval x12) (Kind.Term.eval x13)) -(Kind.Term.eval (Kind.Term.fn15 fnid orig x0)) = (Kind.Term.FN15 fnid orig (Kind.Term.eval x0)) -(Kind.Term.eval (Kind.Term.fn16 fnid orig x0)) = (Kind.Term.FN16 fnid orig (Kind.Term.eval x0)) -(Kind.Term.eval (Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14)) = (Kind.Term.args15 (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7) (Kind.Term.eval x8) (Kind.Term.eval x9) (Kind.Term.eval x10) (Kind.Term.eval x11) (Kind.Term.eval x12) (Kind.Term.eval x13) (Kind.Term.eval x14)) -(Kind.Term.eval (Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15)) = (Kind.Term.args16 (Kind.Term.eval x0) (Kind.Term.eval x1) (Kind.Term.eval x2) (Kind.Term.eval x3) (Kind.Term.eval x4) (Kind.Term.eval x5) (Kind.Term.eval x6) (Kind.Term.eval x7) (Kind.Term.eval x8) (Kind.Term.eval x9) (Kind.Term.eval x10) (Kind.Term.eval x11) (Kind.Term.eval x12) (Kind.Term.eval x13) (Kind.Term.eval x14) (Kind.Term.eval x15)) -(Kind.Term.eval_let orig name expr body) = (body expr) -(Kind.Term.eval_op orig (Kind.Operator.add) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (+ a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.sub) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (- a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.mul) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (* a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.div) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (/ a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.mod) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (% a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.and) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (& a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.or) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (| a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.xor) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (^ a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.shl) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (<< a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.shr) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (>> a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.ltn) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (< a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.lte) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (<= a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.eql) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (== a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.gte) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (>= a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.gtn) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (> a.num b.num)) -(Kind.Term.eval_op orig (Kind.Operator.neq) (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Term.u60 0 (!= a.num b.num)) -(Kind.Term.eval_op orig op left right) = (Kind.Term.op2 orig op left right) -(Kind.Term.eval_app orig (Kind.Term.lam orig1 name body) arg) = (body arg) -(Kind.Term.eval_app orig func arg) = (Kind.Term.app orig func arg) -(Kind.Term.eval_ann orig expr type) = expr -(Kind.Term.eval_sub orig name indx redx expr) = expr -(Kind.Checker.infer (Kind.Term.var orig name index)) = (Kind.Checker.bind (Kind.Checker.find index (Maybe.none) λn λt λv (Maybe.some t)) λgot_type (Maybe.match got_type (Kind.Checker.bind (Kind.Checker.get_context) λctx (Kind.Checker.fail (Kind.Error.unbound_variable ctx orig))) λgot_type.value (Kind.Checker.pure got_type.value))) -(Kind.Checker.infer (Kind.Term.hol orig numb)) = (Kind.Checker.bind (Kind.Checker.get_context) λctx (Kind.Checker.fail (Kind.Error.cant_infer_hole ctx orig))) -(Kind.Checker.infer (Kind.Term.typ orig)) = (Kind.Checker.pure (Kind.Term.typ orig)) -(Kind.Checker.infer (Kind.Term.all orig name type body)) = (Kind.Checker.bind (Kind.Checker.get_depth) λdepth (Kind.Checker.bind (Kind.Checker.check type (Kind.Term.typ orig)) λx_2 (Kind.Checker.bind (Kind.Checker.extended (Kind.Checker.check (body (Kind.Term.var orig name depth)) (Kind.Term.typ orig)) name (Kind.Term.eval type) []) λx_1 (Kind.Checker.pure (Kind.Term.typ orig))))) -(Kind.Checker.infer (Kind.Term.lam orig name body)) = (Kind.Checker.bind (Kind.Checker.get_context) λctx (Kind.Checker.fail (Kind.Error.cant_infer_lambda ctx orig))) -(Kind.Checker.infer (Kind.Term.app orig func argm)) = (Kind.Checker.bind (Kind.Checker.infer func) λfn_infer (Kind.Checker.bind (Kind.Checker.infer.forall fn_infer λfn_orig λfn_name λfn_type λfn_body (Kind.Checker.bind (Kind.Checker.check argm fn_type) λx_3 (Kind.Checker.pure (fn_body (Kind.Term.eval argm)))) (Kind.Checker.bind (Kind.Checker.get_context) λctx (Kind.Checker.fail (Kind.Error.invalid_call ctx orig)))) λap_infer (Kind.Checker.pure ap_infer))) -(Kind.Checker.infer (Kind.Term.let orig name expr body)) = (Kind.Checker.bind (Kind.Checker.get_depth) λdep (Kind.Checker.bind (Kind.Checker.infer expr) λexpr_typ (Kind.Checker.bind (Kind.Checker.extended (Kind.Checker.infer (body (Kind.Term.var orig name dep))) name expr_typ [(Kind.Term.eval expr)]) λbody_typ (Kind.Checker.pure body_typ)))) -(Kind.Checker.infer (Kind.Term.ann orig expr type)) = let type = (Kind.Term.eval type); (Kind.Checker.bind (Kind.Checker.check expr type) λx_4 (Kind.Checker.pure type)) -(Kind.Checker.infer (Kind.Term.sub orig name indx redx expr)) = (Kind.Checker.bind (Kind.Checker.get_depth) λdep (Kind.Checker.bind (Kind.Checker.find indx (Maybe.none) λn λt λv (Maybe.some (Pair.new t v))) λgot (Maybe.match got (Kind.Checker.bind (Kind.Checker.get_context) λctx (Kind.Checker.fail (Kind.Error.unbound_variable ctx orig))) λgot.value (Pair.match got.value λgot.value.fst λgot.value.snd (Maybe.match (List.at.u60 got.value.snd redx) (Kind.Checker.bind (Kind.Checker.get_context) λctx (Kind.Checker.fail (Kind.Error.unbound_variable ctx orig))) λreduction.value (Kind.Checker.bind (Kind.Checker.infer expr) λexpr_typ (Kind.Checker.pure (Kind.Term.eval (Kind.Term.replace expr_typ indx reduction.value))))))))) -(Kind.Checker.infer (Kind.Term.ct0 ctid orig)) = (Kind.Checker.pure (Kind.Term.eval (Kind.Axiom.TypeOf ctid))) -(Kind.Checker.infer (Kind.Term.ct1 ctid orig x0)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.ct0 ctid orig) x0)) -(Kind.Checker.infer (Kind.Term.ct2 ctid orig x0 x1)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.ct0 ctid orig) x0) x1)) -(Kind.Checker.infer (Kind.Term.ct3 ctid orig x0 x1 x2)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.ct0 ctid orig) x0) x1) x2)) -(Kind.Checker.infer (Kind.Term.ct4 ctid orig x0 x1 x2 x3)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.ct0 ctid orig) x0) x1) x2) x3)) -(Kind.Checker.infer (Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4)) -(Kind.Checker.infer (Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5)) -(Kind.Checker.infer (Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6)) -(Kind.Checker.infer (Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6) x7)) -(Kind.Checker.infer (Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8)) -(Kind.Checker.infer (Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9)) -(Kind.Checker.infer (Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10)) -(Kind.Checker.infer (Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11)) -(Kind.Checker.infer (Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11) x12)) -(Kind.Checker.infer (Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11) x12) x13)) -(Kind.Checker.infer (Kind.Term.ct15 ctid orig x0)) = let expr = (Kind.Checker.infer_args x0); (Kind.Checker.infer (expr (Kind.Term.ct0 ctid orig) orig)) -(Kind.Checker.infer (Kind.Term.ct16 ctid orig x0)) = let expr = (Kind.Checker.infer_args x0); (Kind.Checker.infer (expr (Kind.Term.ct0 ctid orig) orig)) -(Kind.Checker.infer (Kind.Term.fn0 fnid orig)) = (Kind.Checker.pure (Kind.Term.eval (Kind.Axiom.TypeOf fnid))) -(Kind.Checker.infer (Kind.Term.fn1 fnid orig x0)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.fn0 fnid orig) x0)) -(Kind.Checker.infer (Kind.Term.fn2 fnid orig x0 x1)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.fn0 fnid orig) x0) x1)) -(Kind.Checker.infer (Kind.Term.fn3 fnid orig x0 x1 x2)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.fn0 fnid orig) x0) x1) x2)) -(Kind.Checker.infer (Kind.Term.fn4 fnid orig x0 x1 x2 x3)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.fn0 fnid orig) x0) x1) x2) x3)) -(Kind.Checker.infer (Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4)) -(Kind.Checker.infer (Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5)) -(Kind.Checker.infer (Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6)) -(Kind.Checker.infer (Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6) x7)) -(Kind.Checker.infer (Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8)) -(Kind.Checker.infer (Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9)) -(Kind.Checker.infer (Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10)) -(Kind.Checker.infer (Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11)) -(Kind.Checker.infer (Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11) x12)) -(Kind.Checker.infer (Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Kind.Checker.infer (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11) x12) x13)) -(Kind.Checker.infer (Kind.Term.fn15 fnid orig x0)) = let expr = (Kind.Checker.infer_args x0); (Kind.Checker.infer (expr (Kind.Term.fn0 fnid orig) orig)) -(Kind.Checker.infer (Kind.Term.fn16 fnid orig x0)) = let expr = (Kind.Checker.infer_args x0); (Kind.Checker.infer (expr (Kind.Term.fn0 fnid orig) orig)) -(Kind.Checker.infer (Kind.Term.hlp orig)) = (Kind.Checker.bind (Kind.Checker.get_context) λctx (Kind.Checker.fail (Kind.Error.inspection ctx orig (Kind.Term.hlp 0)))) -(Kind.Checker.infer (Kind.Term.U60 orig)) = (Kind.Checker.pure (Kind.Term.typ 0)) -(Kind.Checker.infer (Kind.Term.u60 orig numb)) = (Kind.Checker.pure (Kind.Term.U60 0)) -(Kind.Checker.infer (Kind.Term.F60 orig)) = (Kind.Checker.pure (Kind.Term.typ 0)) -(Kind.Checker.infer (Kind.Term.f60 orig numb)) = (Kind.Checker.pure (Kind.Term.F60 0)) -(Kind.Checker.infer (Kind.Term.op2 orig oper left right)) = (Kind.Checker.bind (Kind.Checker.check left (Kind.Term.U60 0)) λx_6 (Kind.Checker.bind (Kind.Checker.check right (Kind.Term.U60 0)) λx_5 (Kind.Checker.pure (Kind.Term.U60 0)))) -(Kind.Checker.infer (Kind.Term.args15 x_7 x_8 x_9 x_10 x_11 x_12 x_13 x_14 x_15 x_16 x_17 x_18 x_19 x_20 x_21)) = (Kind.Axiom.Null) -(Kind.Checker.infer (Kind.Term.args16 x_22 x_23 x_24 x_25 x_26 x_27 x_28 x_29 x_30 x_31 x_32 x_33 x_34 x_35 x_36 x_37)) = (Kind.Axiom.Null) -(List.at.u60 [] idx) = (Maybe.none) -(List.at.u60 (List.cons head tail) 0) = (Maybe.some head) -(List.at.u60 (List.cons head tail) idx) = (List.at.u60 tail (- idx 1)) -(Kind.Term.replace (Kind.Term.typ orig) idx val) = (Kind.Term.typ orig) -(Kind.Term.replace (Kind.Term.var orig name index) idx val) = (Bool.if (U60.equal idx index) val (Kind.Term.var orig name index)) -(Kind.Term.replace (Kind.Term.all orig name typ body) idx val) = (Kind.Term.all orig name (Kind.Term.replace typ idx val) λx (Kind.Term.replace (body x) idx val)) -(Kind.Term.replace (Kind.Term.lam orig name body) idx val) = (Kind.Term.lam orig name λx (Kind.Term.replace (body x) idx val)) -(Kind.Term.replace (Kind.Term.let orig name expr body) idx val) = (Kind.Term.let orig name (Kind.Term.replace expr idx val) λx (Kind.Term.replace (body x) idx val)) -(Kind.Term.replace (Kind.Term.ann orig expr typ) idx val) = (Kind.Term.ann orig (Kind.Term.replace expr idx val) (Kind.Term.replace typ idx val)) -(Kind.Term.replace (Kind.Term.sub orig name indx redx expr) idx val) = (Kind.Term.sub orig name indx redx (Kind.Term.replace expr idx val)) -(Kind.Term.replace (Kind.Term.app orig expr typ) idx val) = (Kind.Term.app orig (Kind.Term.replace expr idx val) (Kind.Term.replace typ idx val)) -(Kind.Term.replace (Kind.Term.hlp orig) idx val) = (Kind.Term.hlp orig) -(Kind.Term.replace (Kind.Term.U60 orig) idx val) = (Kind.Term.U60 orig) -(Kind.Term.replace (Kind.Term.u60 orig num) idx val) = (Kind.Term.u60 orig num) -(Kind.Term.replace (Kind.Term.F60 orig) idx val) = (Kind.Term.F60 orig) -(Kind.Term.replace (Kind.Term.f60 orig num) idx val) = (Kind.Term.f60 orig num) -(Kind.Term.replace (Kind.Term.op2 orig op left right) idx val) = (Kind.Term.op2 orig op (Kind.Term.replace left idx val) (Kind.Term.replace right idx val)) -(Kind.Term.replace (Kind.Term.ct0 ctid orig) idx val) = (Kind.Term.ct0 ctid orig) -(Kind.Term.replace (Kind.Term.ct1 ctid orig x0) idx val) = (Kind.Term.ct1 ctid orig (Kind.Term.replace x0 idx val)) -(Kind.Term.replace (Kind.Term.ct2 ctid orig x0 x1) idx val) = (Kind.Term.ct2 ctid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val)) -(Kind.Term.replace (Kind.Term.ct3 ctid orig x0 x1 x2) idx val) = (Kind.Term.ct3 ctid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val)) -(Kind.Term.replace (Kind.Term.ct4 ctid orig x0 x1 x2 x3) idx val) = (Kind.Term.ct4 ctid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val)) -(Kind.Term.replace (Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4) idx val) = (Kind.Term.ct5 ctid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val)) -(Kind.Term.replace (Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5) idx val) = (Kind.Term.ct6 ctid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val)) -(Kind.Term.replace (Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6) idx val) = (Kind.Term.ct7 ctid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val)) -(Kind.Term.replace (Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7) idx val) = (Kind.Term.ct8 ctid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val)) -(Kind.Term.replace (Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) idx val) = (Kind.Term.ct9 ctid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val) (Kind.Term.replace x8 idx val)) -(Kind.Term.replace (Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) idx val) = (Kind.Term.ct10 ctid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val) (Kind.Term.replace x8 idx val) (Kind.Term.replace x9 idx val)) -(Kind.Term.replace (Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) idx val) = (Kind.Term.ct11 ctid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val) (Kind.Term.replace x8 idx val) (Kind.Term.replace x9 idx val) (Kind.Term.replace x10 idx val)) -(Kind.Term.replace (Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) idx val) = (Kind.Term.ct12 ctid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val) (Kind.Term.replace x8 idx val) (Kind.Term.replace x9 idx val) (Kind.Term.replace x10 idx val) (Kind.Term.replace x11 idx val)) -(Kind.Term.replace (Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) idx val) = (Kind.Term.ct13 ctid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val) (Kind.Term.replace x8 idx val) (Kind.Term.replace x9 idx val) (Kind.Term.replace x10 idx val) (Kind.Term.replace x11 idx val) (Kind.Term.replace x12 idx val)) -(Kind.Term.replace (Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) idx val) = (Kind.Term.ct14 ctid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val) (Kind.Term.replace x8 idx val) (Kind.Term.replace x9 idx val) (Kind.Term.replace x10 idx val) (Kind.Term.replace x11 idx val) (Kind.Term.replace x12 idx val) (Kind.Term.replace x13 idx val)) -(Kind.Term.replace (Kind.Term.ct15 ctid orig x0) idx val) = (Kind.Term.ct15 ctid orig (Kind.Term.replace x0 idx val)) -(Kind.Term.replace (Kind.Term.ct16 ctid orig x0) idx val) = (Kind.Term.ct16 ctid orig (Kind.Term.replace x0 idx val)) -(Kind.Term.replace (Kind.Term.fn0 fnid orig) idx val) = (Kind.Term.FN0 fnid orig) -(Kind.Term.replace (Kind.Term.fn1 fnid orig x0) idx val) = (Kind.Term.FN1 fnid orig (Kind.Term.replace x0 idx val)) -(Kind.Term.replace (Kind.Term.fn2 fnid orig x0 x1) idx val) = (Kind.Term.FN2 fnid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val)) -(Kind.Term.replace (Kind.Term.fn3 fnid orig x0 x1 x2) idx val) = (Kind.Term.FN3 fnid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val)) -(Kind.Term.replace (Kind.Term.fn4 fnid orig x0 x1 x2 x3) idx val) = (Kind.Term.FN4 fnid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val)) -(Kind.Term.replace (Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4) idx val) = (Kind.Term.FN5 fnid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val)) -(Kind.Term.replace (Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5) idx val) = (Kind.Term.FN6 fnid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val)) -(Kind.Term.replace (Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6) idx val) = (Kind.Term.FN7 fnid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val)) -(Kind.Term.replace (Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7) idx val) = (Kind.Term.FN8 fnid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val)) -(Kind.Term.replace (Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) idx val) = (Kind.Term.FN9 fnid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val) (Kind.Term.replace x8 idx val)) -(Kind.Term.replace (Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) idx val) = (Kind.Term.FN10 fnid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val) (Kind.Term.replace x8 idx val) (Kind.Term.replace x9 idx val)) -(Kind.Term.replace (Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) idx val) = (Kind.Term.FN11 fnid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val) (Kind.Term.replace x8 idx val) (Kind.Term.replace x9 idx val) (Kind.Term.replace x10 idx val)) -(Kind.Term.replace (Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) idx val) = (Kind.Term.FN12 fnid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val) (Kind.Term.replace x8 idx val) (Kind.Term.replace x9 idx val) (Kind.Term.replace x10 idx val) (Kind.Term.replace x11 idx val)) -(Kind.Term.replace (Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) idx val) = (Kind.Term.FN13 fnid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val) (Kind.Term.replace x8 idx val) (Kind.Term.replace x9 idx val) (Kind.Term.replace x10 idx val) (Kind.Term.replace x11 idx val) (Kind.Term.replace x12 idx val)) -(Kind.Term.replace (Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) idx val) = (Kind.Term.FN14 fnid orig (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val) (Kind.Term.replace x8 idx val) (Kind.Term.replace x9 idx val) (Kind.Term.replace x10 idx val) (Kind.Term.replace x11 idx val) (Kind.Term.replace x12 idx val) (Kind.Term.replace x13 idx val)) -(Kind.Term.replace (Kind.Term.fn15 ctid orig x0) idx val) = (Kind.Term.FN15 ctid orig (Kind.Term.replace x0 idx val)) -(Kind.Term.replace (Kind.Term.fn16 ctid orig x0) idx val) = (Kind.Term.FN16 ctid orig (Kind.Term.replace x0 idx val)) -(Kind.Term.replace (Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14) idx val) = (Kind.Term.args15 (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val) (Kind.Term.replace x8 idx val) (Kind.Term.replace x9 idx val) (Kind.Term.replace x10 idx val) (Kind.Term.replace x11 idx val) (Kind.Term.replace x12 idx val) (Kind.Term.replace x13 idx val) (Kind.Term.replace x14 idx val)) -(Kind.Term.replace (Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15) idx val) = (Kind.Term.args16 (Kind.Term.replace x0 idx val) (Kind.Term.replace x1 idx val) (Kind.Term.replace x2 idx val) (Kind.Term.replace x3 idx val) (Kind.Term.replace x4 idx val) (Kind.Term.replace x5 idx val) (Kind.Term.replace x6 idx val) (Kind.Term.replace x7 idx val) (Kind.Term.replace x8 idx val) (Kind.Term.replace x9 idx val) (Kind.Term.replace x10 idx val) (Kind.Term.replace x11 idx val) (Kind.Term.replace x12 idx val) (Kind.Term.replace x13 idx val) (Kind.Term.replace x14 idx val) (Kind.Term.replace x15 idx val)) -(Kind.Term.replace (Kind.Term.hol orig numb) idx val) = (Kind.Term.hol orig numb) -(U60.equal a b) = (U60.to_bool (== a b)) -(U60.to_bool 0) = (Bool.false) -(U60.to_bool n) = (Bool.true) -(Bool.if (Bool.true) t f) = t -(Bool.if (Bool.false) t f) = f -(Kind.Checker.pure res) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked context depth rhs subst eqts errs res) -(Kind.Checker.infer_args (Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14)) = λterm λorig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig term x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11) x12) x13) x14) -(Kind.Checker.infer_args (Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15)) = λterm λorig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig (Kind.Term.app orig term x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11) x12) x13) x14) x15) -(Kind.Checker.infer_args term) = λx_ λorig term -(Kind.Checker.infer.forall (Kind.Term.all orig name type body) then_fn else_val) = (then_fn orig name type body) -(Kind.Checker.infer.forall (Kind.Term.var orig name index) then_fn else_val) = (Kind.Checker.bind (Kind.Checker.find index [] λn λt λv v) λreducs (Kind.Checker.bind (Kind.Checker.infer.forall.try_values reducs then_fn else_val) λresult (Kind.Checker.pure result))) -(Kind.Checker.infer.forall other then_fn else_val) = else_val -(Kind.Checker.bind checker then) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Checker.bind.result (checker context depth rhs subst eqts errs) then) -(Kind.Checker.bind.result (Kind.Result.checked context depth rhs sub equations errs ret) then) = (then ret context depth rhs sub equations errs) -(Kind.Checker.bind.result (Kind.Result.errored context sub errs) then) = (Kind.Result.errored context sub errs) -(Kind.Checker.find index alt fun) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked context depth rhs subst eqts errs (Kind.Context.find context index alt fun)) -(Kind.Context.find (Kind.Context.entry name type vals rest) 0 alt fun) = (fun name type vals) -(Kind.Context.find (Kind.Context.entry name type vals rest) n alt fun) = (Kind.Context.find rest (- n 1) alt fun) -(Kind.Context.find (Kind.Context.empty) n alt fun) = alt -(Kind.Checker.infer.forall.try_values (List.cons (Kind.Term.all orig name type body) terms) then_fn else_val) = (then_fn orig name type body) -(Kind.Checker.infer.forall.try_values (List.cons other terms) then_fn else_val) = (Kind.Checker.infer.forall.try_values terms then_fn else_val) -(Kind.Checker.infer.forall.try_values [] then_fn else_val) = else_val -(Maybe.match (Maybe.none) none some) = none -(Maybe.match (Maybe.some value_) none some) = (some value_) -(Kind.Checker.get_depth) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked context depth rhs subst eqts errs depth) -(Pair.match (Pair.new fst_ snd_) new) = (new fst_ snd_) -(Kind.Checker.extended checker name type vals) = (Kind.Checker.bind (Kind.Checker.extend name type vals) λx_2 (Kind.Checker.bind checker λgot (Kind.Checker.bind (Kind.Checker.shrink) λx_1 (Kind.Checker.pure got)))) -(Kind.Checker.shrink) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked (Kind.Context.shrink context) (- depth 1) rhs subst eqts errs (Unit.new)) -(Kind.Context.shrink (Kind.Context.empty)) = (Kind.Context.empty) -(Kind.Context.shrink (Kind.Context.entry name type vals (Kind.Context.empty))) = (Kind.Context.empty) -(Kind.Context.shrink (Kind.Context.entry name type vals rest)) = (Kind.Context.entry name type vals (Kind.Context.shrink rest)) -(Kind.Checker.fail err) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.errored context subst (List.cons err errs)) -(Kind.Checker.error err ret) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked context depth rhs subst eqts (List.cons err errs) ret) -(Kind.Checker.compare rhs term type) = (Kind.Term.get_origin term λorig λterm (Kind.Checker.bind (Kind.Checker.infer term) λterm_typ let fun = (Bool.if rhs λterm_typ λtype (Kind.Checker.new_equation orig type term_typ) λterm_typ λtype (Kind.Checker.bind (Kind.Checker.equal (Kind.Term.eval term_typ) (Kind.Term.eval type)) λis_equal (Bool.if is_equal (Kind.Checker.pure (Unit.new)) (Kind.Checker.bind (Kind.Checker.get_context) λctx (Kind.Checker.fail (Kind.Error.impossible_case ctx orig type term_typ)))))); (fun term_typ type))) -(Kind.Term.get_origin (Kind.Term.typ orig) got) = (got orig (Kind.Term.typ orig)) -(Kind.Term.get_origin (Kind.Term.var orig name index) got) = (got orig (Kind.Term.var orig name index)) -(Kind.Term.get_origin (Kind.Term.hol orig numb) got) = (got orig (Kind.Term.hol orig numb)) -(Kind.Term.get_origin (Kind.Term.all orig name typ body) got) = (got orig (Kind.Term.all orig name typ body)) -(Kind.Term.get_origin (Kind.Term.lam orig name body) got) = (got orig (Kind.Term.lam orig name body)) -(Kind.Term.get_origin (Kind.Term.let orig name expr body) got) = (got orig (Kind.Term.let orig name expr body)) -(Kind.Term.get_origin (Kind.Term.ann orig expr typ) got) = (got orig (Kind.Term.ann orig expr typ)) -(Kind.Term.get_origin (Kind.Term.sub orig name indx redx expr) got) = (got orig (Kind.Term.sub orig name indx redx expr)) -(Kind.Term.get_origin (Kind.Term.app orig func arg) got) = (got orig (Kind.Term.app orig func arg)) -(Kind.Term.get_origin (Kind.Term.hlp orig) got) = (got orig (Kind.Term.hlp orig)) -(Kind.Term.get_origin (Kind.Term.U60 orig) got) = (got orig (Kind.Term.U60 orig)) -(Kind.Term.get_origin (Kind.Term.u60 orig num) got) = (got orig (Kind.Term.u60 orig num)) -(Kind.Term.get_origin (Kind.Term.F60 orig) got) = (got orig (Kind.Term.F60 orig)) -(Kind.Term.get_origin (Kind.Term.f60 orig num) got) = (got orig (Kind.Term.f60 orig num)) -(Kind.Term.get_origin (Kind.Term.op2 orig op left right) got) = (got orig (Kind.Term.op2 orig op left right)) -(Kind.Term.get_origin (Kind.Term.ct0 ctid orig) got) = (got orig (Kind.Term.ct0 ctid orig)) -(Kind.Term.get_origin (Kind.Term.ct1 ctid orig x0) got) = (got orig (Kind.Term.ct1 ctid orig x0)) -(Kind.Term.get_origin (Kind.Term.ct2 ctid orig x0 x1) got) = (got orig (Kind.Term.ct2 ctid orig x0 x1)) -(Kind.Term.get_origin (Kind.Term.ct3 ctid orig x0 x1 x2) got) = (got orig (Kind.Term.ct3 ctid orig x0 x1 x2)) -(Kind.Term.get_origin (Kind.Term.ct4 ctid orig x0 x1 x2 x3) got) = (got orig (Kind.Term.ct4 ctid orig x0 x1 x2 x3)) -(Kind.Term.get_origin (Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4) got) = (got orig (Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4)) -(Kind.Term.get_origin (Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5) got) = (got orig (Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5)) -(Kind.Term.get_origin (Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6) got) = (got orig (Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6)) -(Kind.Term.get_origin (Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7) got) = (got orig (Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7)) -(Kind.Term.get_origin (Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) got) = (got orig (Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) -(Kind.Term.get_origin (Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) got) = (got orig (Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) -(Kind.Term.get_origin (Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) got) = (got orig (Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) -(Kind.Term.get_origin (Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) got) = (got orig (Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) -(Kind.Term.get_origin (Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) got) = (got orig (Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) -(Kind.Term.get_origin (Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) got) = (got orig (Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) -(Kind.Term.get_origin (Kind.Term.ct15 fnid orig args) got) = (got orig (Kind.Term.ct15 fnid orig args)) -(Kind.Term.get_origin (Kind.Term.ct16 fnid orig args) got) = (got orig (Kind.Term.ct16 fnid orig args)) -(Kind.Term.get_origin (Kind.Term.fn0 fnid orig) got) = (got orig (Kind.Term.fn0 fnid orig)) -(Kind.Term.get_origin (Kind.Term.fn1 fnid orig x0) got) = (got orig (Kind.Term.fn1 fnid orig x0)) -(Kind.Term.get_origin (Kind.Term.fn2 fnid orig x0 x1) got) = (got orig (Kind.Term.fn2 fnid orig x0 x1)) -(Kind.Term.get_origin (Kind.Term.fn3 fnid orig x0 x1 x2) got) = (got orig (Kind.Term.fn3 fnid orig x0 x1 x2)) -(Kind.Term.get_origin (Kind.Term.fn4 fnid orig x0 x1 x2 x3) got) = (got orig (Kind.Term.fn4 fnid orig x0 x1 x2 x3)) -(Kind.Term.get_origin (Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4) got) = (got orig (Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4)) -(Kind.Term.get_origin (Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5) got) = (got orig (Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5)) -(Kind.Term.get_origin (Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6) got) = (got orig (Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6)) -(Kind.Term.get_origin (Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7) got) = (got orig (Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7)) -(Kind.Term.get_origin (Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) got) = (got orig (Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) -(Kind.Term.get_origin (Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) got) = (got orig (Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) -(Kind.Term.get_origin (Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) got) = (got orig (Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) -(Kind.Term.get_origin (Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) got) = (got orig (Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) -(Kind.Term.get_origin (Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) got) = (got orig (Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) -(Kind.Term.get_origin (Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) got) = (got orig (Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) -(Kind.Term.get_origin (Kind.Term.fn15 fnid orig args) got) = (got orig (Kind.Term.fn15 fnid orig args)) -(Kind.Term.get_origin (Kind.Term.fn16 fnid orig args) got) = (got orig (Kind.Term.fn16 fnid orig args)) -(Kind.Term.get_origin (Kind.Term.args15 x_1 x_2 x_3 x_4 x_5 x_6 x_7 x_8 x_9 x_10 x_11 x_12 x_13 x_14 x_15) got) = (Kind.Axiom.Null) -(Kind.Term.get_origin (Kind.Term.args16 x_16 x_17 x_18 x_19 x_20 x_21 x_22 x_23 x_24 x_25 x_26 x_27 x_28 x_29 x_30 x_31) got) = (Kind.Axiom.Null) -(Kind.Checker.new_equation orig left right) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked context depth rhs subst (List.append eqts (Kind.Equation.new context orig left right)) errs (Unit.new)) -(List.append [] x) = [x] -(List.append (List.cons xs.h xs.t) x) = (List.cons xs.h (List.append xs.t x)) -(Kind.Checker.equal (Kind.Term.typ orig) (Kind.Term.typ orig1)) = (Kind.Checker.pure (Bool.true)) -(Kind.Checker.equal (Kind.Term.all a.orig a.name a.type a.body) (Kind.Term.all b.orig b.name b.type b.body)) = (Kind.Checker.bind (Kind.Checker.get_depth) λdep (Kind.Checker.bind (Kind.Checker.equal a.type b.type) λtype (Kind.Checker.bind (Kind.Checker.extended (Kind.Checker.equal (a.body (Kind.Term.var a.orig a.name dep)) (b.body (Kind.Term.var b.orig b.name dep))) (Kind.Axiom.Null) (Kind.Axiom.Null) []) λbody (Kind.Checker.pure (Bool.and type body))))) -(Kind.Checker.equal (Kind.Term.lam a.orig a.name a.body) (Kind.Term.lam b.orig b.name b.body)) = (Kind.Checker.bind (Kind.Checker.get_depth) λdep (Kind.Checker.bind (Kind.Checker.extended (Kind.Checker.equal (a.body (Kind.Term.var a.orig a.name dep)) (b.body (Kind.Term.var b.orig b.name dep))) (Kind.Axiom.Null) (Kind.Axiom.Null) []) λbody (Kind.Checker.pure body))) -(Kind.Checker.equal (Kind.Term.app a.orig a.func a.argm) (Kind.Term.app b.orig b.func b.argm)) = (Kind.Checker.bind (Kind.Checker.equal a.func b.func) λfunc (Kind.Checker.bind (Kind.Checker.equal a.argm b.argm) λargm (Kind.Checker.pure (Bool.and func argm)))) -(Kind.Checker.equal (Kind.Term.let a.orig a.name a.expr a.body) (Kind.Term.let b.orig b.name b.expr b.body)) = (Kind.Checker.bind (Kind.Checker.get_depth) λdep (Kind.Checker.bind (Kind.Checker.equal a.expr b.expr) λexpr (Kind.Checker.bind (Kind.Checker.extended (Kind.Checker.equal (a.body (Kind.Term.var a.orig a.name dep)) (b.body (Kind.Term.var b.orig b.name dep))) (Kind.Axiom.Null) (Kind.Axiom.Null) []) λbody (Kind.Checker.pure (Bool.and expr body))))) -(Kind.Checker.equal (Kind.Term.ann a.orig a.expr a.type) (Kind.Term.ann b.orig b.expr b.type)) = (Kind.Checker.bind (Kind.Checker.equal a.expr b.expr) λfunc (Kind.Checker.bind (Kind.Checker.equal a.type b.type) λtype (Kind.Checker.pure (Bool.and func type)))) -(Kind.Checker.equal (Kind.Term.sub a.orig a.name a.indx a.redx a.expr) (Kind.Term.sub b.orig b.name b.indx b.redx b.expr)) = (Kind.Checker.bind (Kind.Checker.equal a.expr b.expr) λfunc (Kind.Checker.pure func)) -(Kind.Checker.equal (Kind.Term.U60 a.orig) (Kind.Term.U60 b.orig)) = (Kind.Checker.pure (Bool.true)) -(Kind.Checker.equal (Kind.Term.u60 a.orig a.num) (Kind.Term.u60 b.orig b.num)) = (Kind.Checker.pure (U60.equal a.num b.num)) -(Kind.Checker.equal (Kind.Term.op2 a.orig a.op a.val0 a.val1) (Kind.Term.op2 b.orig b.op b.val0 b.val1)) = let op = (Kind.Operator.equal a.op b.op); (Kind.Checker.bind (Kind.Checker.equal a.val0 b.val0) λval0 (Kind.Checker.bind (Kind.Checker.equal a.val1 b.val1) λval1 (Kind.Checker.pure (Bool.and op (Bool.and val0 val1))))) -(Kind.Checker.equal (Kind.Term.hol a.orig a.numb) (Kind.Term.hol b.orig b.numb)) = (Bool.if (U60.equal a.numb b.numb) (Kind.Checker.pure (Bool.true)) (Kind.Checker.equal.hol a.orig a.numb (Kind.Term.hol b.orig b.numb))) -(Kind.Checker.equal (Kind.Term.hol a.orig a.numb) b) = (Kind.Checker.equal.hol a.orig a.numb b) -(Kind.Checker.equal b (Kind.Term.hol a.orig a.numb)) = (Kind.Checker.equal.hol a.orig a.numb b) -(Kind.Checker.equal (Kind.Term.var a.orig a.name a.idx) b) = (Kind.Checker.bind (Kind.Checker.get_right_hand_side) λrhs (Kind.Checker.equal.var rhs a.orig a.name a.idx b)) -(Kind.Checker.equal b (Kind.Term.var a.orig a.name a.idx)) = (Kind.Checker.bind (Kind.Checker.get_right_hand_side) λrhs (Kind.Checker.equal.var rhs a.orig a.name a.idx b)) -(Kind.Checker.equal (Kind.Term.ct0 a.ctid a.orig) (Kind.Term.ct0 b.ctid b.orig)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.pure ctid) -(Kind.Checker.equal (Kind.Term.ct1 a.ctid a.orig a.x0) (Kind.Term.ct1 b.ctid b.orig b.x0)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.pure (Bool.and ctid x0))) -(Kind.Checker.equal (Kind.Term.ct2 a.ctid a.orig a.x0 a.x1) (Kind.Term.ct2 b.ctid b.orig b.x0 b.x1)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.pure (Bool.and ctid (Bool.and x0 x1))))) -(Kind.Checker.equal (Kind.Term.ct3 a.ctid a.orig a.x0 a.x1 a.x2) (Kind.Term.ct3 b.ctid b.orig b.x0 b.x1 b.x2)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.pure (Bool.and ctid (Bool.and x0 (Bool.and x1 x2))))))) -(Kind.Checker.equal (Kind.Term.ct4 a.ctid a.orig a.x0 a.x1 a.x2 a.x3) (Kind.Term.ct4 b.ctid b.orig b.x0 b.x1 b.x2 b.x3)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.pure (Bool.and ctid (Bool.and x0 (Bool.and x1 (Bool.and x2 x3))))))))) -(Kind.Checker.equal (Kind.Term.ct5 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4) (Kind.Term.ct5 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.pure (Bool.and ctid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 x4))))))))))) -(Kind.Checker.equal (Kind.Term.ct6 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5) (Kind.Term.ct6 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.pure (Bool.and ctid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 x5))))))))))))) -(Kind.Checker.equal (Kind.Term.ct7 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6) (Kind.Term.ct7 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.pure (Bool.and ctid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 x6))))))))))))))) -(Kind.Checker.equal (Kind.Term.ct8 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7) (Kind.Term.ct8 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.pure (Bool.and ctid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 x7))))))))))))))))) -(Kind.Checker.equal (Kind.Term.ct9 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8) (Kind.Term.ct9 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.bind (Kind.Checker.equal a.x8 b.x8) λx8 (Kind.Checker.pure (Bool.and ctid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 (Bool.and x7 x8))))))))))))))))))) -(Kind.Checker.equal (Kind.Term.ct10 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9) (Kind.Term.ct10 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.bind (Kind.Checker.equal a.x8 b.x8) λx8 (Kind.Checker.bind (Kind.Checker.equal a.x9 b.x9) λx9 (Kind.Checker.pure (Bool.and ctid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 (Bool.and x7 (Bool.and x8 x9))))))))))))))))))))) -(Kind.Checker.equal (Kind.Term.ct11 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10) (Kind.Term.ct11 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.bind (Kind.Checker.equal a.x8 b.x8) λx8 (Kind.Checker.bind (Kind.Checker.equal a.x9 b.x9) λx9 (Kind.Checker.bind (Kind.Checker.equal a.x10 b.x10) λx10 (Kind.Checker.pure (Bool.and ctid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 (Bool.and x7 (Bool.and x8 (Bool.and x9 x10))))))))))))))))))))))) -(Kind.Checker.equal (Kind.Term.ct12 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11) (Kind.Term.ct12 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.bind (Kind.Checker.equal a.x8 b.x8) λx8 (Kind.Checker.bind (Kind.Checker.equal a.x9 b.x9) λx9 (Kind.Checker.bind (Kind.Checker.equal a.x10 b.x10) λx10 (Kind.Checker.bind (Kind.Checker.equal a.x11 b.x11) λx11 (Kind.Checker.pure (Bool.and ctid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 (Bool.and x7 (Bool.and x8 (Bool.and x9 (Bool.and x10 x11))))))))))))))))))))))))) -(Kind.Checker.equal (Kind.Term.ct13 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11 a.x12) (Kind.Term.ct13 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11 b.x12)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.bind (Kind.Checker.equal a.x8 b.x8) λx8 (Kind.Checker.bind (Kind.Checker.equal a.x9 b.x9) λx9 (Kind.Checker.bind (Kind.Checker.equal a.x10 b.x10) λx10 (Kind.Checker.bind (Kind.Checker.equal a.x11 b.x11) λx11 (Kind.Checker.bind (Kind.Checker.equal a.x12 b.x12) λx12 (Kind.Checker.pure (Bool.and ctid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 (Bool.and x7 (Bool.and x8 (Bool.and x9 (Bool.and x10 (Bool.and x11 x12))))))))))))))))))))))))))) -(Kind.Checker.equal (Kind.Term.ct14 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11 a.x12 a.x13) (Kind.Term.ct14 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11 b.x12 b.x13)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.bind (Kind.Checker.equal a.x8 b.x8) λx8 (Kind.Checker.bind (Kind.Checker.equal a.x9 b.x9) λx9 (Kind.Checker.bind (Kind.Checker.equal a.x10 b.x10) λx10 (Kind.Checker.bind (Kind.Checker.equal a.x11 b.x11) λx11 (Kind.Checker.bind (Kind.Checker.equal a.x12 b.x12) λx12 (Kind.Checker.bind (Kind.Checker.equal a.x13 b.x13) λx13 (Kind.Checker.pure (Bool.and ctid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 (Bool.and x7 (Bool.and x8 (Bool.and x9 (Bool.and x10 (Bool.and x11 (Bool.and x12 x13))))))))))))))))))))))))))))) -(Kind.Checker.equal (Kind.Term.ct15 a.ctid a.orig a.args) (Kind.Term.ct15 b.ctid b.orig b.args)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.args b.args) λxargs (Kind.Checker.pure (Bool.and ctid xargs))) -(Kind.Checker.equal (Kind.Term.ct16 a.ctid a.orig a.args) (Kind.Term.ct16 b.ctid b.orig b.args)) = let ctid = (U60.equal (Kind.Axiom.HashOf a.ctid) (Kind.Axiom.HashOf b.ctid)); (Kind.Checker.bind (Kind.Checker.equal a.args b.args) λxargs (Kind.Checker.pure (Bool.and ctid xargs))) -(Kind.Checker.equal (Kind.Term.args15 a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11 a.x12 a.x13 a.x14) (Kind.Term.args15 b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11 b.x12 b.x13 b.x14)) = (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.bind (Kind.Checker.equal a.x8 b.x8) λx8 (Kind.Checker.bind (Kind.Checker.equal a.x9 b.x9) λx9 (Kind.Checker.bind (Kind.Checker.equal a.x10 b.x10) λx10 (Kind.Checker.bind (Kind.Checker.equal a.x11 b.x11) λx11 (Kind.Checker.bind (Kind.Checker.equal a.x12 b.x12) λx12 (Kind.Checker.bind (Kind.Checker.equal a.x13 b.x13) λx13 (Kind.Checker.bind (Kind.Checker.equal a.x14 b.x14) λx14 (Kind.Checker.pure (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 (Bool.and x7 (Bool.and x8 (Bool.and x9 (Bool.and x10 (Bool.and x11 (Bool.and x12 (Bool.and x13 x14)))))))))))))))))))))))))))))) -(Kind.Checker.equal (Kind.Term.args16 a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11 a.x12 a.x13 a.x14 a.x15) (Kind.Term.args16 b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11 b.x12 b.x13 b.x14 b.x15)) = (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.bind (Kind.Checker.equal a.x8 b.x8) λx8 (Kind.Checker.bind (Kind.Checker.equal a.x9 b.x9) λx9 (Kind.Checker.bind (Kind.Checker.equal a.x10 b.x10) λx10 (Kind.Checker.bind (Kind.Checker.equal a.x11 b.x11) λx11 (Kind.Checker.bind (Kind.Checker.equal a.x12 b.x12) λx12 (Kind.Checker.bind (Kind.Checker.equal a.x13 b.x13) λx13 (Kind.Checker.bind (Kind.Checker.equal a.x14 b.x14) λx14 (Kind.Checker.bind (Kind.Checker.equal a.x15 b.x15) λx15 (Kind.Checker.pure (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 (Bool.and x7 (Bool.and x8 (Bool.and x9 (Bool.and x10 (Bool.and x11 (Bool.and x12 (Bool.and x13 (Bool.and x14 x15)))))))))))))))))))))))))))))))) -(Kind.Checker.equal (Kind.Term.fn0 a.fnid a.orig) (Kind.Term.fn0 b.fnid b.orig)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.pure fnid) -(Kind.Checker.equal (Kind.Term.fn1 a.fnid a.orig a.x0) (Kind.Term.fn1 b.fnid b.orig b.x0)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.pure (Bool.and fnid x0))) -(Kind.Checker.equal (Kind.Term.fn2 a.fnid a.orig a.x0 a.x1) (Kind.Term.fn2 b.fnid b.orig b.x0 b.x1)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.pure (Bool.and fnid (Bool.and x0 x1))))) -(Kind.Checker.equal (Kind.Term.fn3 a.fnid a.orig a.x0 a.x1 a.x2) (Kind.Term.fn3 b.fnid b.orig b.x0 b.x1 b.x2)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.pure (Bool.and fnid (Bool.and x0 (Bool.and x1 x2))))))) -(Kind.Checker.equal (Kind.Term.fn4 a.fnid a.orig a.x0 a.x1 a.x2 a.x3) (Kind.Term.fn4 b.fnid b.orig b.x0 b.x1 b.x2 b.x3)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.pure (Bool.and fnid (Bool.and x0 (Bool.and x1 (Bool.and x2 x3))))))))) -(Kind.Checker.equal (Kind.Term.fn5 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4) (Kind.Term.fn5 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.pure (Bool.and fnid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 x4))))))))))) -(Kind.Checker.equal (Kind.Term.fn6 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5) (Kind.Term.fn6 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.pure (Bool.and fnid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 x5))))))))))))) -(Kind.Checker.equal (Kind.Term.fn7 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6) (Kind.Term.fn7 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.pure (Bool.and fnid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 x6))))))))))))))) -(Kind.Checker.equal (Kind.Term.fn8 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7) (Kind.Term.fn8 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.pure (Bool.and fnid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 x7))))))))))))))))) -(Kind.Checker.equal (Kind.Term.fn9 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8) (Kind.Term.fn9 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.bind (Kind.Checker.equal a.x8 b.x8) λx8 (Kind.Checker.pure (Bool.and fnid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 (Bool.and x7 x8))))))))))))))))))) -(Kind.Checker.equal (Kind.Term.fn10 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9) (Kind.Term.fn10 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.bind (Kind.Checker.equal a.x8 b.x8) λx8 (Kind.Checker.bind (Kind.Checker.equal a.x9 b.x9) λx9 (Kind.Checker.pure (Bool.and fnid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 (Bool.and x7 (Bool.and x8 x9))))))))))))))))))))) -(Kind.Checker.equal (Kind.Term.fn11 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10) (Kind.Term.fn11 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.bind (Kind.Checker.equal a.x8 b.x8) λx8 (Kind.Checker.bind (Kind.Checker.equal a.x9 b.x9) λx9 (Kind.Checker.bind (Kind.Checker.equal a.x10 b.x10) λx10 (Kind.Checker.pure (Bool.and fnid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 (Bool.and x7 (Bool.and x8 (Bool.and x9 x10))))))))))))))))))))))) -(Kind.Checker.equal (Kind.Term.fn12 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11) (Kind.Term.fn12 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.bind (Kind.Checker.equal a.x8 b.x8) λx8 (Kind.Checker.bind (Kind.Checker.equal a.x9 b.x9) λx9 (Kind.Checker.bind (Kind.Checker.equal a.x10 b.x10) λx10 (Kind.Checker.bind (Kind.Checker.equal a.x11 b.x11) λx11 (Kind.Checker.pure (Bool.and fnid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 (Bool.and x7 (Bool.and x8 (Bool.and x9 (Bool.and x10 x11))))))))))))))))))))))))) -(Kind.Checker.equal (Kind.Term.fn13 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11 a.x12) (Kind.Term.fn13 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11 b.x12)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.bind (Kind.Checker.equal a.x8 b.x8) λx8 (Kind.Checker.bind (Kind.Checker.equal a.x9 b.x9) λx9 (Kind.Checker.bind (Kind.Checker.equal a.x10 b.x10) λx10 (Kind.Checker.bind (Kind.Checker.equal a.x11 b.x11) λx11 (Kind.Checker.bind (Kind.Checker.equal a.x12 b.x12) λx12 (Kind.Checker.pure (Bool.and fnid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 (Bool.and x7 (Bool.and x8 (Bool.and x9 (Bool.and x10 (Bool.and x11 x12))))))))))))))))))))))))))) -(Kind.Checker.equal (Kind.Term.fn14 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11 a.x12 a.x13) (Kind.Term.fn14 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11 b.x12 b.x13)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.x0 b.x0) λx0 (Kind.Checker.bind (Kind.Checker.equal a.x1 b.x1) λx1 (Kind.Checker.bind (Kind.Checker.equal a.x2 b.x2) λx2 (Kind.Checker.bind (Kind.Checker.equal a.x3 b.x3) λx3 (Kind.Checker.bind (Kind.Checker.equal a.x4 b.x4) λx4 (Kind.Checker.bind (Kind.Checker.equal a.x5 b.x5) λx5 (Kind.Checker.bind (Kind.Checker.equal a.x6 b.x6) λx6 (Kind.Checker.bind (Kind.Checker.equal a.x7 b.x7) λx7 (Kind.Checker.bind (Kind.Checker.equal a.x8 b.x8) λx8 (Kind.Checker.bind (Kind.Checker.equal a.x9 b.x9) λx9 (Kind.Checker.bind (Kind.Checker.equal a.x10 b.x10) λx10 (Kind.Checker.bind (Kind.Checker.equal a.x11 b.x11) λx11 (Kind.Checker.bind (Kind.Checker.equal a.x12 b.x12) λx12 (Kind.Checker.bind (Kind.Checker.equal a.x13 b.x13) λx13 (Kind.Checker.pure (Bool.and fnid (Bool.and x0 (Bool.and x1 (Bool.and x2 (Bool.and x3 (Bool.and x4 (Bool.and x5 (Bool.and x6 (Bool.and x7 (Bool.and x8 (Bool.and x9 (Bool.and x10 (Bool.and x11 (Bool.and x12 x13))))))))))))))))))))))))))))) -(Kind.Checker.equal (Kind.Term.fn15 a.fnid a.orig a.args) (Kind.Term.fn15 b.fnid b.orig b.args)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.args b.args) λxargs (Kind.Checker.pure (Bool.and fnid xargs))) -(Kind.Checker.equal (Kind.Term.fn16 a.fnid a.orig a.args) (Kind.Term.fn16 b.fnid b.orig b.args)) = let fnid = (U60.equal (Kind.Axiom.HashOf a.fnid) (Kind.Axiom.HashOf b.fnid)); (Kind.Checker.bind (Kind.Checker.equal a.args b.args) λxargs (Kind.Checker.pure (Bool.and fnid xargs))) -(Kind.Checker.equal a b) = (Kind.Checker.bind (Kind.Checker.get_subst) λsub (Bool.if (Bool.or (Kind.Term.fillable a sub) (Kind.Term.fillable b sub)) (Kind.Checker.equal (Kind.Term.fill a sub) (Kind.Term.fill b sub)) (Kind.Checker.pure (Bool.false)))) -(Bool.or (Bool.true) b) = (Bool.true) -(Bool.or (Bool.false) b) = b -(Kind.Term.fillable term (Kind.Subst.end)) = (Bool.false) -(Kind.Term.fillable (Kind.Term.typ orig) sub) = (Bool.false) -(Kind.Term.fillable (Kind.Term.var orig name index) sub) = (Bool.false) -(Kind.Term.fillable (Kind.Term.hlp orig) sub) = (Bool.false) -(Kind.Term.fillable (Kind.Term.U60 orig) sub) = (Bool.false) -(Kind.Term.fillable (Kind.Term.u60 orig num) sub) = (Bool.false) -(Kind.Term.fillable (Kind.Term.F60 orig) sub) = (Bool.false) -(Kind.Term.fillable (Kind.Term.f60 orig num) sub) = (Bool.false) -(Kind.Term.fillable (Kind.Term.all orig name typ body) sub) = (Bool.or (Kind.Term.fillable typ sub) (Kind.Term.fillable (body (Kind.Term.hlp 0)) sub)) -(Kind.Term.fillable (Kind.Term.lam orig name body) sub) = (Kind.Term.fillable (body (Kind.Term.hlp 0)) sub) -(Kind.Term.fillable (Kind.Term.app orig expr typ) sub) = (Bool.or (Kind.Term.fillable expr sub) (Kind.Term.fillable typ sub)) -(Kind.Term.fillable (Kind.Term.let orig name expr body) sub) = (Bool.or (Kind.Term.fillable expr sub) (Kind.Term.fillable (body (Kind.Term.hlp 0)) sub)) -(Kind.Term.fillable (Kind.Term.ann orig expr typ) sub) = (Bool.or (Kind.Term.fillable expr sub) (Kind.Term.fillable typ sub)) -(Kind.Term.fillable (Kind.Term.sub orig name indx redx expr) sub) = (Kind.Term.fillable expr sub) -(Kind.Term.fillable (Kind.Term.op2 orig op left right) sub) = (Bool.or (Kind.Term.fillable left sub) (Kind.Term.fillable right sub)) -(Kind.Term.fillable (Kind.Term.hol orig numb) sub) = (Maybe.is_some (Kind.Subst.look sub numb)) -(Kind.Term.fillable (Kind.Term.ct0 ctid orig) sub) = (Bool.false) -(Kind.Term.fillable (Kind.Term.ct1 ctid orig x0) sub) = (Kind.Term.fillable x0 sub) -(Kind.Term.fillable (Kind.Term.ct2 ctid orig x0 x1) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Kind.Term.fillable x1 sub)) -(Kind.Term.fillable (Kind.Term.ct3 ctid orig x0 x1 x2) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Kind.Term.fillable x2 sub))) -(Kind.Term.fillable (Kind.Term.ct4 ctid orig x0 x1 x2 x3) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Kind.Term.fillable x3 sub)))) -(Kind.Term.fillable (Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Kind.Term.fillable x4 sub))))) -(Kind.Term.fillable (Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Kind.Term.fillable x5 sub)))))) -(Kind.Term.fillable (Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Kind.Term.fillable x6 sub))))))) -(Kind.Term.fillable (Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Kind.Term.fillable x7 sub)))))))) -(Kind.Term.fillable (Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Bool.or (Kind.Term.fillable x7 sub) (Kind.Term.fillable x8 sub))))))))) -(Kind.Term.fillable (Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Bool.or (Kind.Term.fillable x7 sub) (Bool.or (Kind.Term.fillable x8 sub) (Kind.Term.fillable x9 sub)))))))))) -(Kind.Term.fillable (Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Bool.or (Kind.Term.fillable x7 sub) (Bool.or (Kind.Term.fillable x8 sub) (Bool.or (Kind.Term.fillable x9 sub) (Kind.Term.fillable x10 sub))))))))))) -(Kind.Term.fillable (Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Bool.or (Kind.Term.fillable x7 sub) (Bool.or (Kind.Term.fillable x8 sub) (Bool.or (Kind.Term.fillable x9 sub) (Bool.or (Kind.Term.fillable x10 sub) (Kind.Term.fillable x11 sub)))))))))))) -(Kind.Term.fillable (Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Bool.or (Kind.Term.fillable x7 sub) (Bool.or (Kind.Term.fillable x8 sub) (Bool.or (Kind.Term.fillable x9 sub) (Bool.or (Kind.Term.fillable x10 sub) (Bool.or (Kind.Term.fillable x11 sub) (Kind.Term.fillable x12 sub))))))))))))) -(Kind.Term.fillable (Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Bool.or (Kind.Term.fillable x7 sub) (Bool.or (Kind.Term.fillable x8 sub) (Bool.or (Kind.Term.fillable x9 sub) (Bool.or (Kind.Term.fillable x10 sub) (Bool.or (Kind.Term.fillable x11 sub) (Bool.or (Kind.Term.fillable x12 sub) (Kind.Term.fillable x13 sub)))))))))))))) -(Kind.Term.fillable (Kind.Term.ct15 fnid orig args) sub) = (Kind.Term.fillable args sub) -(Kind.Term.fillable (Kind.Term.ct16 fnid orig args) sub) = (Kind.Term.fillable args sub) -(Kind.Term.fillable (Kind.Term.fn0 fnid orig) sub) = (Bool.false) -(Kind.Term.fillable (Kind.Term.fn1 fnid orig x0) sub) = (Kind.Term.fillable x0 sub) -(Kind.Term.fillable (Kind.Term.fn2 fnid orig x0 x1) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Kind.Term.fillable x1 sub)) -(Kind.Term.fillable (Kind.Term.fn3 fnid orig x0 x1 x2) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Kind.Term.fillable x2 sub))) -(Kind.Term.fillable (Kind.Term.fn4 fnid orig x0 x1 x2 x3) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Kind.Term.fillable x3 sub)))) -(Kind.Term.fillable (Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Kind.Term.fillable x4 sub))))) -(Kind.Term.fillable (Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Kind.Term.fillable x5 sub)))))) -(Kind.Term.fillable (Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Kind.Term.fillable x6 sub))))))) -(Kind.Term.fillable (Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Kind.Term.fillable x7 sub)))))))) -(Kind.Term.fillable (Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Bool.or (Kind.Term.fillable x7 sub) (Kind.Term.fillable x8 sub))))))))) -(Kind.Term.fillable (Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Bool.or (Kind.Term.fillable x7 sub) (Bool.or (Kind.Term.fillable x8 sub) (Kind.Term.fillable x9 sub)))))))))) -(Kind.Term.fillable (Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Bool.or (Kind.Term.fillable x7 sub) (Bool.or (Kind.Term.fillable x8 sub) (Bool.or (Kind.Term.fillable x9 sub) (Kind.Term.fillable x10 sub))))))))))) -(Kind.Term.fillable (Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Bool.or (Kind.Term.fillable x7 sub) (Bool.or (Kind.Term.fillable x8 sub) (Bool.or (Kind.Term.fillable x9 sub) (Bool.or (Kind.Term.fillable x10 sub) (Kind.Term.fillable x11 sub)))))))))))) -(Kind.Term.fillable (Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Bool.or (Kind.Term.fillable x7 sub) (Bool.or (Kind.Term.fillable x8 sub) (Bool.or (Kind.Term.fillable x9 sub) (Bool.or (Kind.Term.fillable x10 sub) (Bool.or (Kind.Term.fillable x11 sub) (Kind.Term.fillable x12 sub))))))))))))) -(Kind.Term.fillable (Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Bool.or (Kind.Term.fillable x7 sub) (Bool.or (Kind.Term.fillable x8 sub) (Bool.or (Kind.Term.fillable x9 sub) (Bool.or (Kind.Term.fillable x10 sub) (Bool.or (Kind.Term.fillable x11 sub) (Bool.or (Kind.Term.fillable x12 sub) (Kind.Term.fillable x13 sub)))))))))))))) -(Kind.Term.fillable (Kind.Term.fn15 fnid orig args) sub) = (Kind.Term.fillable args sub) -(Kind.Term.fillable (Kind.Term.fn16 fnid orig args) sub) = (Kind.Term.fillable args sub) -(Kind.Term.fillable (Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Bool.or (Kind.Term.fillable x7 sub) (Bool.or (Kind.Term.fillable x8 sub) (Bool.or (Kind.Term.fillable x9 sub) (Bool.or (Kind.Term.fillable x10 sub) (Bool.or (Kind.Term.fillable x11 sub) (Bool.or (Kind.Term.fillable x12 sub) (Bool.or (Kind.Term.fillable x13 sub) (Kind.Term.fillable x14 sub))))))))))))))) -(Kind.Term.fillable (Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15) sub) = (Bool.or (Kind.Term.fillable x0 sub) (Bool.or (Kind.Term.fillable x1 sub) (Bool.or (Kind.Term.fillable x2 sub) (Bool.or (Kind.Term.fillable x3 sub) (Bool.or (Kind.Term.fillable x4 sub) (Bool.or (Kind.Term.fillable x5 sub) (Bool.or (Kind.Term.fillable x6 sub) (Bool.or (Kind.Term.fillable x7 sub) (Bool.or (Kind.Term.fillable x8 sub) (Bool.or (Kind.Term.fillable x9 sub) (Bool.or (Kind.Term.fillable x10 sub) (Bool.or (Kind.Term.fillable x11 sub) (Bool.or (Kind.Term.fillable x12 sub) (Bool.or (Kind.Term.fillable x13 sub) (Bool.or (Kind.Term.fillable x14 sub) (Kind.Term.fillable x15 sub)))))))))))))))) -(Kind.Subst.look (Kind.Subst.end) 0) = (Maybe.none) -(Kind.Subst.look (Kind.Subst.unfilled rest) 0) = (Maybe.none) -(Kind.Subst.look (Kind.Subst.sub term rest) 0) = (Maybe.some term) -(Kind.Subst.look (Kind.Subst.end) n) = (Maybe.none) -(Kind.Subst.look (Kind.Subst.unfilled rest) n) = (Kind.Subst.look rest (- n 1)) -(Kind.Subst.look (Kind.Subst.sub term rest) n) = (Kind.Subst.look rest (- n 1)) -(Maybe.is_some (Maybe.none)) = (Bool.false) -(Maybe.is_some (Maybe.some v)) = (Bool.true) -(Kind.Checker.equal.hol a.orig a.numb b) = (Kind.Checker.bind (Kind.Checker.look a.numb) λgot (Kind.Checker.bind (Kind.Checker.equal.hol.val got a.orig a.numb b) λres (Kind.Checker.pure res))) -(Kind.Checker.equal.hol.val (Maybe.none) orig numb b) = (Kind.Checker.bind (Kind.Checker.fill numb b) λx_1 (Kind.Checker.pure (Bool.true))) -(Kind.Checker.equal.hol.val (Maybe.some val) orig numb b) = (Kind.Checker.equal val b) -(Kind.Checker.fill index val) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked context depth rhs (Kind.Subst.fill subst index val) eqts errs (Unit.new)) -(Kind.Subst.fill (Kind.Subst.end) 0 term) = (Kind.Subst.sub term (Kind.Subst.end)) -(Kind.Subst.fill (Kind.Subst.unfilled rest) 0 term) = (Kind.Subst.sub term rest) -(Kind.Subst.fill (Kind.Subst.sub lost rest) 0 term) = (Kind.Subst.sub term rest) -(Kind.Subst.fill (Kind.Subst.end) n term) = (Kind.Subst.unfilled (Kind.Subst.fill (Kind.Subst.end) (- n 1) term)) -(Kind.Subst.fill (Kind.Subst.unfilled rest) n term) = (Kind.Subst.unfilled (Kind.Subst.fill rest (- n 1) term)) -(Kind.Subst.fill (Kind.Subst.sub keep rest) n term) = (Kind.Subst.sub keep (Kind.Subst.fill rest (- n 1) term)) -(Kind.Checker.look index) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked context depth rhs subst eqts errs (Kind.Subst.look subst index)) -(Kind.Term.fill term (Kind.Subst.end)) = term -(Kind.Term.fill (Kind.Term.typ orig) sub) = (Kind.Term.typ orig) -(Kind.Term.fill (Kind.Term.var orig name index) sub) = (Kind.Term.var orig name index) -(Kind.Term.fill (Kind.Term.all orig name typ body) sub) = (Kind.Term.all orig name (Kind.Term.fill typ sub) λx (Kind.Term.fill (body x) sub)) -(Kind.Term.fill (Kind.Term.lam orig name body) sub) = (Kind.Term.lam orig name λx (Kind.Term.fill (body x) sub)) -(Kind.Term.fill (Kind.Term.let orig name expr body) sub) = (Kind.Term.eval_let orig name (Kind.Term.fill expr sub) λx (Kind.Term.fill (body x) sub)) -(Kind.Term.fill (Kind.Term.ann orig expr typ) sub) = (Kind.Term.eval_ann orig (Kind.Term.fill expr sub) (Kind.Term.fill typ sub)) -(Kind.Term.fill (Kind.Term.sub orig name indx redx expr) sub) = (Kind.Term.eval_sub orig name indx redx (Kind.Term.fill expr sub)) -(Kind.Term.fill (Kind.Term.app orig expr typ) sub) = (Kind.Term.eval_app orig (Kind.Term.fill expr sub) (Kind.Term.fill typ sub)) -(Kind.Term.fill (Kind.Term.hlp orig) sub) = (Kind.Term.hlp orig) -(Kind.Term.fill (Kind.Term.U60 orig) sub) = (Kind.Term.U60 orig) -(Kind.Term.fill (Kind.Term.F60 orig) sub) = (Kind.Term.F60 orig) -(Kind.Term.fill (Kind.Term.f60 orig num) sub) = (Kind.Term.f60 orig num) -(Kind.Term.fill (Kind.Term.u60 orig num) sub) = (Kind.Term.u60 orig num) -(Kind.Term.fill (Kind.Term.op2 orig op left right) sub) = (Kind.Term.op2 orig op (Kind.Term.fill left sub) (Kind.Term.fill right sub)) -(Kind.Term.fill (Kind.Term.ct0 ctid orig) sub) = (Kind.Term.ct0 ctid orig) -(Kind.Term.fill (Kind.Term.ct1 ctid orig x0) sub) = (Kind.Term.ct1 ctid orig (Kind.Term.fill x0 sub)) -(Kind.Term.fill (Kind.Term.ct2 ctid orig x0 x1) sub) = (Kind.Term.ct2 ctid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub)) -(Kind.Term.fill (Kind.Term.ct3 ctid orig x0 x1 x2) sub) = (Kind.Term.ct3 ctid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub)) -(Kind.Term.fill (Kind.Term.ct4 ctid orig x0 x1 x2 x3) sub) = (Kind.Term.ct4 ctid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub)) -(Kind.Term.fill (Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4) sub) = (Kind.Term.ct5 ctid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub)) -(Kind.Term.fill (Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5) sub) = (Kind.Term.ct6 ctid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub)) -(Kind.Term.fill (Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6) sub) = (Kind.Term.ct7 ctid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub)) -(Kind.Term.fill (Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7) sub) = (Kind.Term.ct8 ctid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub)) -(Kind.Term.fill (Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) sub) = (Kind.Term.ct9 ctid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub) (Kind.Term.fill x8 sub)) -(Kind.Term.fill (Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) sub) = (Kind.Term.ct10 ctid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub) (Kind.Term.fill x8 sub) (Kind.Term.fill x9 sub)) -(Kind.Term.fill (Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) sub) = (Kind.Term.ct11 ctid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub) (Kind.Term.fill x8 sub) (Kind.Term.fill x9 sub) (Kind.Term.fill x10 sub)) -(Kind.Term.fill (Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) sub) = (Kind.Term.ct12 ctid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub) (Kind.Term.fill x8 sub) (Kind.Term.fill x9 sub) (Kind.Term.fill x10 sub) (Kind.Term.fill x11 sub)) -(Kind.Term.fill (Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) sub) = (Kind.Term.ct13 ctid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub) (Kind.Term.fill x8 sub) (Kind.Term.fill x9 sub) (Kind.Term.fill x10 sub) (Kind.Term.fill x11 sub) (Kind.Term.fill x12 sub)) -(Kind.Term.fill (Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) sub) = (Kind.Term.ct14 ctid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub) (Kind.Term.fill x8 sub) (Kind.Term.fill x9 sub) (Kind.Term.fill x10 sub) (Kind.Term.fill x11 sub) (Kind.Term.fill x12 sub) (Kind.Term.fill x13 sub)) -(Kind.Term.fill (Kind.Term.ct15 ctid orig x0) sub) = (Kind.Term.ct15 ctid orig (Kind.Term.fill x0 sub)) -(Kind.Term.fill (Kind.Term.ct16 ctid orig x0) sub) = (Kind.Term.ct16 ctid orig (Kind.Term.fill x0 sub)) -(Kind.Term.fill (Kind.Term.fn0 fnid orig) sub) = (Kind.Term.FN0 fnid orig) -(Kind.Term.fill (Kind.Term.fn1 fnid orig x0) sub) = (Kind.Term.FN1 fnid orig (Kind.Term.fill x0 sub)) -(Kind.Term.fill (Kind.Term.fn2 fnid orig x0 x1) sub) = (Kind.Term.FN2 fnid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub)) -(Kind.Term.fill (Kind.Term.fn3 fnid orig x0 x1 x2) sub) = (Kind.Term.FN3 fnid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub)) -(Kind.Term.fill (Kind.Term.fn4 fnid orig x0 x1 x2 x3) sub) = (Kind.Term.FN4 fnid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub)) -(Kind.Term.fill (Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4) sub) = (Kind.Term.FN5 fnid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub)) -(Kind.Term.fill (Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5) sub) = (Kind.Term.FN6 fnid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub)) -(Kind.Term.fill (Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6) sub) = (Kind.Term.FN7 fnid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub)) -(Kind.Term.fill (Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7) sub) = (Kind.Term.FN8 fnid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub)) -(Kind.Term.fill (Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) sub) = (Kind.Term.FN9 fnid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub) (Kind.Term.fill x8 sub)) -(Kind.Term.fill (Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) sub) = (Kind.Term.FN10 fnid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub) (Kind.Term.fill x8 sub) (Kind.Term.fill x9 sub)) -(Kind.Term.fill (Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) sub) = (Kind.Term.FN11 fnid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub) (Kind.Term.fill x8 sub) (Kind.Term.fill x9 sub) (Kind.Term.fill x10 sub)) -(Kind.Term.fill (Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) sub) = (Kind.Term.FN12 fnid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub) (Kind.Term.fill x8 sub) (Kind.Term.fill x9 sub) (Kind.Term.fill x10 sub) (Kind.Term.fill x11 sub)) -(Kind.Term.fill (Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) sub) = (Kind.Term.FN13 fnid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub) (Kind.Term.fill x8 sub) (Kind.Term.fill x9 sub) (Kind.Term.fill x10 sub) (Kind.Term.fill x11 sub) (Kind.Term.fill x12 sub)) -(Kind.Term.fill (Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) sub) = (Kind.Term.FN14 fnid orig (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub) (Kind.Term.fill x8 sub) (Kind.Term.fill x9 sub) (Kind.Term.fill x10 sub) (Kind.Term.fill x11 sub) (Kind.Term.fill x12 sub) (Kind.Term.fill x13 sub)) -(Kind.Term.fill (Kind.Term.fn15 ctid orig x0) sub) = (Kind.Term.FN15 ctid orig (Kind.Term.fill x0 sub)) -(Kind.Term.fill (Kind.Term.fn16 ctid orig x0) sub) = (Kind.Term.FN16 ctid orig (Kind.Term.fill x0 sub)) -(Kind.Term.fill (Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14) sub) = (Kind.Term.args15 (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub) (Kind.Term.fill x8 sub) (Kind.Term.fill x9 sub) (Kind.Term.fill x10 sub) (Kind.Term.fill x11 sub) (Kind.Term.fill x12 sub) (Kind.Term.fill x13 sub) (Kind.Term.fill x14 sub)) -(Kind.Term.fill (Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15) sub) = (Kind.Term.args16 (Kind.Term.fill x0 sub) (Kind.Term.fill x1 sub) (Kind.Term.fill x2 sub) (Kind.Term.fill x3 sub) (Kind.Term.fill x4 sub) (Kind.Term.fill x5 sub) (Kind.Term.fill x6 sub) (Kind.Term.fill x7 sub) (Kind.Term.fill x8 sub) (Kind.Term.fill x9 sub) (Kind.Term.fill x10 sub) (Kind.Term.fill x11 sub) (Kind.Term.fill x12 sub) (Kind.Term.fill x13 sub) (Kind.Term.fill x14 sub) (Kind.Term.fill x15 sub)) -(Kind.Term.fill (Kind.Term.hol orig numb) sub) = let substRes = (Kind.Subst.look sub numb); (Maybe.match substRes (Kind.Term.hol orig numb) λvalue (Kind.Term.fill value sub)) -(Kind.Checker.equal.var (Bool.false) orig name idx b) = (Kind.Checker.bind (Kind.Checker.add_value idx b) λx_1 (Kind.Checker.pure (Bool.true))) -(Kind.Checker.equal.var (Bool.true) a.orig a.name a.idx (Kind.Term.var b.orig b.name b.idx)) = (Bool.if (U60.equal a.idx b.idx) (Kind.Checker.pure (Bool.true)) (Kind.Checker.bind (Kind.Checker.find a.idx [] λn λt λv v) λa.val (Kind.Checker.bind (Kind.Checker.find b.idx [] λn λt λv v) λb.val (Kind.Checker.bind (Kind.Checker.equal.var.try_values a.val (Kind.Term.var b.orig b.name b.idx)) λa.chk (Kind.Checker.bind (Kind.Checker.equal.var.try_values b.val (Kind.Term.var a.orig a.name a.idx)) λb.chk (Kind.Checker.pure (Bool.or a.chk b.chk))))))) -(Kind.Checker.equal.var (Bool.true) a.orig a.name a.idx b) = (Kind.Checker.bind (Kind.Checker.get_subst) λsub (Bool.if (Kind.Term.fillable b sub) (Kind.Checker.equal (Kind.Term.var a.orig a.name a.idx) (Kind.Term.fill b sub)) (Kind.Checker.bind (Kind.Checker.find a.idx [] λn λt λv v) λa.val (Kind.Checker.bind (Kind.Checker.equal.var.try_values a.val b) λres (Kind.Checker.pure res))))) -(Kind.Checker.add_value idx val) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked (Kind.Context.add_value context idx val) depth rhs subst eqts errs (Unit.new)) -(Kind.Context.add_value (Kind.Context.entry name type vals rest) 0 val) = (Kind.Context.entry name type (List.cons val vals) rest) -(Kind.Context.add_value (Kind.Context.entry name type vals rest) n val) = (Kind.Context.entry name type vals (Kind.Context.add_value rest (- n 1) val)) -(Kind.Context.add_value (Kind.Context.empty) n val) = (Kind.Context.empty) -(Kind.Checker.equal.var.try_values [] term) = (Kind.Checker.pure (Bool.false)) -(Kind.Checker.equal.var.try_values (List.cons x xs) term) = (Kind.Checker.bind (Kind.Checker.equal x term) λhead (Bool.if head (Kind.Checker.pure (Bool.true)) (Kind.Checker.equal.var.try_values xs term))) -(Kind.Operator.equal (Kind.Operator.and) (Kind.Operator.and)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.sub) (Kind.Operator.sub)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.mul) (Kind.Operator.mul)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.div) (Kind.Operator.div)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.mod) (Kind.Operator.mod)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.and) (Kind.Operator.and)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.or) (Kind.Operator.or)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.xor) (Kind.Operator.xor)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.shl) (Kind.Operator.shl)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.shr) (Kind.Operator.shr)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.ltn) (Kind.Operator.ltn)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.lte) (Kind.Operator.lte)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.eql) (Kind.Operator.eql)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.gte) (Kind.Operator.gte)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.gtn) (Kind.Operator.gtn)) = (Bool.true) -(Kind.Operator.equal (Kind.Operator.neq) (Kind.Operator.neq)) = (Bool.true) -(Kind.Operator.equal a b) = (Bool.false) -(Bool.and (Bool.true) b) = b -(Bool.and (Bool.false) b) = (Bool.false) -(Kind.Coverage.check fnid) = (Kind.Checker.bind (Kind.Checker.set_right_hand_side (Bool.false)) λx_1 let rules = (Kind.Axiom.RuleOf fnid); let type = (Kind.Axiom.TypeOf fnid); let size = (Maybe.default (Maybe.map λx (Kind.Coverage.Rule.size x) (List.head rules)) 0); let new_type = (Kind.Coverage.Type.from_term type size); let problem = (Kind.Coverage.Problem.new new_type rules); (Kind.Checker.bind (Kind.Coverage.solve problem) λresult (Kind.Checker.bind (Kind.Checker.get_context) λctx (Maybe.match result (Kind.Checker.pure (Unit.new)) λresult.value (Kind.Checker.fail (Kind.Error.uncovered_pattern ctx (Kind.Axiom.OrigOf fnid) result.value)))))) -(Maybe.default (Maybe.none) dflt) = dflt -(Maybe.default (Maybe.some val) dflt) = val -(Kind.Coverage.solve problem) = (Kind.Checker.local (Kind.Coverage.done problem (Kind.Coverage.if_all (Kind.Coverage.Problem.type.get problem) λorig_ λname_ λtype λconstraints λbody (Bool.if (Kind.Coverage.catches problem) (Kind.Coverage.intro_all type body problem) (Kind.Coverage.specialize (Kind.Term.eval type) body problem)) λconstraint (Bool.if (List.is_nil (Kind.Coverage.Problem.rows.get problem)) (Kind.Checker.pure (Maybe.some [])) (Kind.Checker.pure (Maybe.none)))))) -(Kind.Coverage.done (Kind.Coverage.Problem.new type rows) or_else) = let result = (Kind.Coverage.Type.remove_constraints type); let type_res = (Pair.fst result); let constraints = (Pair.snd result); (Kind.Checker.bind (Kind.Coverage.solve_constraints constraints) λsolved (Bool.if solved or_else (Kind.Checker.pure (Maybe.none)))) -(Kind.Coverage.solve_constraints []) = (Kind.Checker.pure (Bool.true)) -(Kind.Coverage.solve_constraints (List.cons pair xs)) = let expected_type = (Pair.snd pair); (Kind.Checker.bind (Kind.Checker.infer (Pair.fst pair)) λinfered_type (Kind.Checker.bind (Kind.Checker.equal expected_type infered_type) λresult (Bool.if result (Kind.Coverage.solve_constraints xs) (Kind.Checker.pure (Bool.false))))) -(Pair.fst (Pair.new fst snd)) = fst -(Pair.snd (Pair.new fst snd)) = snd -(Kind.Coverage.Type.remove_constraints (Kind.Coverage.Type.cons orig name typ constraints body)) = (Pair.new (Kind.Coverage.Type.cons orig name typ [] body) constraints) -(Kind.Coverage.Type.remove_constraints (Kind.Coverage.Type.end constraints body)) = (Pair.new (Kind.Coverage.Type.end [] body) constraints) -(Kind.Coverage.if_all (Kind.Coverage.Type.cons orig name typ constraints body) func_if else) = (func_if orig name typ constraints body) -(Kind.Coverage.if_all (Kind.Coverage.Type.end constraints body) func_if else) = (else constraints) -(Kind.Coverage.specialize type body (Kind.Coverage.Problem.new cur_type rows)) = let problem = (Kind.Coverage.Problem.new cur_type rows); (Maybe.default (Maybe.bind (Kind.Coverage.get_name type) λtype_name (Maybe.bind (Kind.Axiom.Family.Constructors type_name) λconstructors (Maybe.some (Kind.Coverage.specialize_list type_name constructors type body problem)))) (Kind.Coverage.intro_or_incomplete type body problem)) -(Kind.Coverage.get_name (Kind.Term.ct0 name x_1)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct1 name x_2 x_3)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct2 name x_4 x_5 x_6)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct3 name x_7 x_8 x_9 x_10)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct4 name x_11 x_12 x_13 x_14 x_15)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct5 name x_16 x_17 x_18 x_19 x_20 x_21)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct6 name x_22 x_23 x_24 x_25 x_26 x_27 x_28)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct8 name x_29 x_30 x_31 x_32 x_33 x_34 x_35 x_36 x_37)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct7 name x_38 x_39 x_40 x_41 x_42 x_43 x_44 x_45)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct9 name x_46 x_47 x_48 x_49 x_50 x_51 x_52 x_53 x_54 x_55)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct10 name x_56 x_57 x_58 x_59 x_60 x_61 x_62 x_63 x_64 x_65 x_66)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct11 name x_67 x_68 x_69 x_70 x_71 x_72 x_73 x_74 x_75 x_76 x_77 x_78)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct12 name x_79 x_80 x_81 x_82 x_83 x_84 x_85 x_86 x_87 x_88 x_89 x_90 x_91)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct13 name x_92 x_93 x_94 x_95 x_96 x_97 x_98 x_99 x_100 x_101 x_102 x_103 x_104 x_105)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct14 name x_106 x_107 x_108 x_109 x_110 x_111 x_112 x_113 x_114 x_115 x_116 x_117 x_118 x_119 x_120)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct15 name x_121 x_122)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct16 name x_123 x_124)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.ct16 name x_125 x_126)) = (Maybe.some name) -(Kind.Coverage.get_name (Kind.Term.U60 x_127)) = (Maybe.none) -(Kind.Coverage.get_name x_128) = (Maybe.none) -(Maybe.bind (Maybe.none) mb) = (Maybe.none) -(Maybe.bind (Maybe.some val) mb) = (mb val) -(Kind.Coverage.specialize_list type_name [] type body problem) = (Kind.Checker.pure (Maybe.none)) -(Kind.Coverage.specialize_list type_name (List.cons name rest) type body problem) = (Kind.Checker.bind (Kind.Coverage.specialize_on type_name name type body problem) λresult (Maybe.match result (Kind.Coverage.specialize_list type_name rest type body problem) λresult.value (Kind.Checker.pure (Maybe.some result.value)))) -(Kind.Coverage.specialize_on type_name constructor_name type body (Kind.Coverage.Problem.new current_problem_type rows)) = (Maybe.match (Kind.Coverage.Maker.Mk constructor_name 0 type) (Kind.Checker.pure (Maybe.some [])) λconstructor_maker let new_type = (Kind.Coverage.Maker.make constructor_maker type body); let params = (Kind.Axiom.Family.Params type_name); let args = (Kind.Axiom.ArgsCount constructor_name); (Kind.Checker.bind (Kind.Coverage.specialize_rules type_name constructor_name rows) λnew_rows let new_problem = (Kind.Coverage.Problem.new new_type new_rows); (Kind.Checker.bind (Kind.Coverage.solve new_problem) λterm_result (Maybe.match term_result (Kind.Checker.pure (Maybe.none)) λscrutinee let size = (Kind.Coverage.Maker.size constructor_maker); let took = (List.take scrutinee (U60.to_nat size)); let rest = (List.drop scrutinee (U60.to_nat size)); let pat = (Kind.Term.Quoted.ctr constructor_name 0 took); (Kind.Checker.pure (Maybe.some (List.cons pat rest))))))) -(Kind.Coverage.Maker.size (Kind.Coverage.Maker.Cons x_1 x_2 body)) = (+ 1 (Kind.Coverage.Maker.size (body (Kind.Term.var 0 0 0)))) -(Kind.Coverage.Maker.size (Kind.Coverage.Maker.End x_3)) = 0 -(List.take (List.cons head tail) (Nat.succ pred)) = (List.cons head (List.take tail pred)) -(List.take [] (Nat.succ pred)) = [] -(List.take xs (Nat.zero)) = [] -(Kind.Coverage.Maker.make (Kind.Coverage.Maker.Cons name typ body) cur_type and_then) = (Kind.Coverage.Type.cons 0 97 typ [] λarg (Kind.Coverage.Maker.make (body arg) cur_type and_then)) -(Kind.Coverage.Maker.make (Kind.Coverage.Maker.End other) cur_type and_then) = (and_then other) -(U60.to_nat 0) = (Nat.zero) -(U60.to_nat n) = (Nat.succ (U60.to_nat (- n 1))) -(List.drop xs (Nat.zero)) = xs -(List.drop (List.cons head tail) (Nat.succ pred)) = (List.drop tail pred) -(List.drop xs x_1) = xs -(Kind.Coverage.specialize_rules type_name name (List.cons rule rules)) = let splitted = (Kind.Coverage.split_rule rule); (Maybe.match splitted (Kind.Coverage.specialize_rules type_name name rules) λvalue let params = (Kind.Axiom.Family.Params type_name); let row = (Kind.Coverage.specialize_rule name (Pair.fst value) (Pair.snd value)); (Kind.Checker.bind (Kind.Coverage.specialize_rules type_name name rules) λnext (Kind.Checker.pure (Maybe.match row next λvalue (List.cons (Kind.Coverage.drop_rule params value) next))))) -(Kind.Coverage.specialize_rules type_name name []) = (Kind.Checker.pure []) -(Kind.Coverage.drop_rule 0 rule) = rule -(Kind.Coverage.drop_rule n (Kind.Rule.lhs x_1 rule)) = (Kind.Coverage.drop_rule (- n 1) rule) -(Kind.Coverage.split_rule (Kind.Rule.lhs term rest)) = (Maybe.some (Pair.new term rest)) -(Kind.Coverage.split_rule x_1) = (Maybe.none) -(Kind.Coverage.specialize_rule n (Kind.Term.ct0 name orig) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some rule) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct1 name orig x0) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some (Kind.Rule.lhs x0 rule)) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct2 name orig x0 x1) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 rule))) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct3 name orig x0 x1 x2) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 (Kind.Rule.lhs x2 rule)))) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct4 name orig x0 x1 x2 x3) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 (Kind.Rule.lhs x2 (Kind.Rule.lhs x3 rule))))) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct5 name orig x0 x1 x2 x3 x4) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 (Kind.Rule.lhs x2 (Kind.Rule.lhs x3 (Kind.Rule.lhs x4 rule)))))) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct6 name orig x0 x1 x2 x3 x4 x5) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 (Kind.Rule.lhs x2 (Kind.Rule.lhs x3 (Kind.Rule.lhs x4 (Kind.Rule.lhs x5 rule))))))) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct7 name orig x0 x1 x2 x3 x4 x5 x6) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 (Kind.Rule.lhs x2 (Kind.Rule.lhs x3 (Kind.Rule.lhs x4 (Kind.Rule.lhs x5 (Kind.Rule.lhs x6 rule)))))))) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct8 name orig x0 x1 x2 x3 x4 x5 x6 x7) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 (Kind.Rule.lhs x2 (Kind.Rule.lhs x3 (Kind.Rule.lhs x4 (Kind.Rule.lhs x5 (Kind.Rule.lhs x6 (Kind.Rule.lhs x7 rule))))))))) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct9 name orig x0 x1 x2 x3 x4 x5 x6 x7 x8) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 (Kind.Rule.lhs x2 (Kind.Rule.lhs x3 (Kind.Rule.lhs x4 (Kind.Rule.lhs x5 (Kind.Rule.lhs x6 (Kind.Rule.lhs x7 (Kind.Rule.lhs x8 rule)))))))))) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct10 name orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 (Kind.Rule.lhs x2 (Kind.Rule.lhs x3 (Kind.Rule.lhs x4 (Kind.Rule.lhs x5 (Kind.Rule.lhs x6 (Kind.Rule.lhs x7 (Kind.Rule.lhs x8 (Kind.Rule.lhs x9 rule))))))))))) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct11 name orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 (Kind.Rule.lhs x2 (Kind.Rule.lhs x3 (Kind.Rule.lhs x4 (Kind.Rule.lhs x5 (Kind.Rule.lhs x6 (Kind.Rule.lhs x7 (Kind.Rule.lhs x8 (Kind.Rule.lhs x9 (Kind.Rule.lhs x10 rule)))))))))))) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct12 name orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 (Kind.Rule.lhs x2 (Kind.Rule.lhs x3 (Kind.Rule.lhs x4 (Kind.Rule.lhs x5 (Kind.Rule.lhs x6 (Kind.Rule.lhs x7 (Kind.Rule.lhs x8 (Kind.Rule.lhs x9 (Kind.Rule.lhs x10 (Kind.Rule.lhs x11 rule))))))))))))) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct13 name orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 (Kind.Rule.lhs x2 (Kind.Rule.lhs x3 (Kind.Rule.lhs x4 (Kind.Rule.lhs x5 (Kind.Rule.lhs x6 (Kind.Rule.lhs x7 (Kind.Rule.lhs x8 (Kind.Rule.lhs x9 (Kind.Rule.lhs x10 (Kind.Rule.lhs x11 (Kind.Rule.lhs x12 rule)))))))))))))) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct14 name orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) rule) = (Bool.if (Kind.Axiom.Compare n name) (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 (Kind.Rule.lhs x2 (Kind.Rule.lhs x3 (Kind.Rule.lhs x4 (Kind.Rule.lhs x5 (Kind.Rule.lhs x6 (Kind.Rule.lhs x7 (Kind.Rule.lhs x8 (Kind.Rule.lhs x9 (Kind.Rule.lhs x10 (Kind.Rule.lhs x11 (Kind.Rule.lhs x12 (Kind.Rule.lhs x13 rule))))))))))))))) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct15 name orig x0) rule) = (Bool.if (Kind.Axiom.Compare n name) (Kind.Coverage.specialize_rule n x0 rule) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.ct16 name orig x0) rule) = (Bool.if (Kind.Axiom.Compare n name) (Kind.Coverage.specialize_rule n x0 rule) (Maybe.none)) -(Kind.Coverage.specialize_rule n (Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14) rule) = (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 (Kind.Rule.lhs x2 (Kind.Rule.lhs x3 (Kind.Rule.lhs x4 (Kind.Rule.lhs x5 (Kind.Rule.lhs x6 (Kind.Rule.lhs x7 (Kind.Rule.lhs x8 (Kind.Rule.lhs x9 (Kind.Rule.lhs x10 (Kind.Rule.lhs x11 (Kind.Rule.lhs x12 (Kind.Rule.lhs x13 (Kind.Rule.lhs x14 rule)))))))))))))))) -(Kind.Coverage.specialize_rule n (Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15) rule) = (Maybe.some (Kind.Rule.lhs x0 (Kind.Rule.lhs x1 (Kind.Rule.lhs x2 (Kind.Rule.lhs x3 (Kind.Rule.lhs x4 (Kind.Rule.lhs x5 (Kind.Rule.lhs x6 (Kind.Rule.lhs x7 (Kind.Rule.lhs x8 (Kind.Rule.lhs x9 (Kind.Rule.lhs x10 (Kind.Rule.lhs x11 (Kind.Rule.lhs x12 (Kind.Rule.lhs x13 (Kind.Rule.lhs x14 (Kind.Rule.lhs x15 rule))))))))))))))))) -(Kind.Coverage.specialize_rule n (Kind.Term.var orig name index) rule) = (Maybe.some (Kind.Coverage.craft (Kind.Axiom.ArgsCount n) rule)) -(Kind.Coverage.specialize_rule n x_1 rule) = (Maybe.none) -(Kind.Coverage.craft 0 rule) = rule -(Kind.Coverage.craft n rule) = (Kind.Coverage.craft (- n 1) (Kind.Rule.lhs (Kind.Term.var 0 65 0) rule)) -(Kind.Coverage.intro_or_incomplete type body (Kind.Coverage.Problem.new cur_type rows)) = let problem = (Kind.Coverage.Problem.new cur_type rows); (Bool.if (List.any (Kind.Coverage.Problem.rows.get problem) λx (Kind.Coverage.Row.catches x)) (Kind.Coverage.intro_all type body problem) (Kind.Checker.bind (Kind.Checker.generate_var type) λvar let new_problem = (Kind.Coverage.Problem.new (body var) []); (Kind.Checker.bind (Kind.Coverage.solve (Kind.Coverage.Problem.rows.set new_problem [])) λterm_result (Kind.Checker.pure (Maybe.map λscrutinee (List.cons (Kind.Term.Quoted.var 0 63 0) scrutinee) term_result))))) -(Kind.Coverage.Row.catches (Kind.Rule.lhs (Kind.Term.var x_1 x_2 x_3) x_4)) = (Bool.true) -(Kind.Coverage.Row.catches x_5) = (Bool.false) -(Kind.Coverage.intro_all type body (Kind.Coverage.Problem.new x_1 rows)) = (Kind.Checker.bind (Kind.Checker.generate_var type) λvar let new_type = (body var); let new_rows = (List.map rows λx (Kind.Coverage.Row.intro_all x)); let new_problem = (Kind.Coverage.Problem.new new_type new_rows); (Kind.Checker.bind (Kind.Coverage.solve new_problem) λterm_result (Kind.Checker.pure (Maybe.map λscrutinee (List.cons (Kind.Term.Quoted.var 0 63 0) scrutinee) term_result)))) -(List.map [] f) = [] -(List.map (List.cons head tail) f) = (List.cons (f head) (List.map tail f)) -(Maybe.map f (Maybe.none)) = (Maybe.none) -(Maybe.map f (Maybe.some v)) = (Maybe.some (f v)) -(Kind.Checker.generate_var type) = (Kind.Checker.bind (Kind.Checker.get_depth) λdepth (Kind.Checker.bind (Kind.Checker.extend 63 type []) λx_1 (Kind.Checker.pure (Kind.Term.var 0 63 depth)))) -(Kind.Coverage.Row.intro_all (Kind.Rule.lhs term rule)) = rule -(Kind.Coverage.Row.intro_all rule) = rule -(Kind.Coverage.Problem.rows.set (Kind.Coverage.Problem.new type rows) _new_var) = (Kind.Coverage.Problem.new type _new_var) -(Kind.Coverage.Problem.rows.get (Kind.Coverage.Problem.new type_ rows_)) = rows_ -(List.any [] cond) = (Bool.false) -(List.any (List.cons head tail) cond) = (Bool.if (cond head) (Bool.true) (List.any tail cond)) -(List.is_nil []) = (Bool.true) -(List.is_nil (List.cons head tail)) = (Bool.false) -(Kind.Coverage.Problem.type.get (Kind.Coverage.Problem.new type_ rows_)) = type_ -(Kind.Checker.local checker) = λold_context λdepth λrhs λsubst λeqts λerrs (Kind.Result.match (checker old_context depth rhs subst eqts errs) λres.ctx λres.depth λres.rhs λres.sub λres.equations λres.errors λres.ret (Kind.Result.checked old_context depth rhs subst eqts errs res.ret) λres.ctx λres.sub λres.errors (Kind.Result.errored res.ctx res.sub res.errors)) -(Kind.Result.match (Kind.Result.checked ctx_ depth_ rhs_ sub_ equations_ errors_ ret_) checked errored) = (checked ctx_ depth_ rhs_ sub_ equations_ errors_ ret_) -(Kind.Result.match (Kind.Result.errored ctx_ sub_ errors_) checked errored) = (errored ctx_ sub_ errors_) -(Kind.Coverage.catches (Kind.Coverage.Problem.new type rows)) = (List.all rows λx (Kind.Coverage.Row.catches x)) -(List.all [] cond) = (Bool.true) -(List.all (List.cons head tail) cond) = (Bool.if (cond head) (List.all tail cond) (Bool.false)) -(Kind.Coverage.Type.from_term term 0) = (Kind.Coverage.Type.end [] term) -(Kind.Coverage.Type.from_term (Kind.Term.all orig name typ body) n) = (Kind.Coverage.Type.cons orig name typ [] λarg (Kind.Coverage.Type.from_term (body arg) (- n 1))) -(Kind.Coverage.Type.from_term term n) = (Kind.Coverage.Type.end [] term) -(Kind.Coverage.Rule.size (Kind.Rule.lhs x xs)) = (+ 1 (Kind.Coverage.Rule.size xs)) -(Kind.Coverage.Rule.size x_1) = 0 -(Kind.Checker.set_right_hand_side to_rhs) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked context depth to_rhs subst eqts errs (Unit.new)) -(List.head []) = (Maybe.none) -(List.head (List.cons head tail)) = (Maybe.some head) -(Kind.Checker.unify checker) = (Kind.Checker.bind checker λx_1 (Kind.Checker.bind (Kind.Checker.get_equations) λequations (Kind.Checker.unify.go equations [] (Bool.false)))) -(Kind.Checker.get_equations) = λcontext λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked context depth rhs subst eqts errs eqts) -(Kind.Checker.unify.go [] [] changed) = (Kind.Checker.pure (Unit.new)) -(Kind.Checker.unify.go [] unsolved (Bool.true)) = (Kind.Checker.unify.go unsolved [] (Bool.false)) -(Kind.Checker.unify.go [] unsolved (Bool.false)) = (Kind.Checker.unify.go.fail unsolved) -(Kind.Checker.unify.go (List.cons (Kind.Equation.new ctx orig left right) equations) unsolved changed) = (Kind.Checker.bind (Kind.Checker.with_context (Kind.Checker.equal (Kind.Term.eval left) (Kind.Term.eval right)) ctx) λis_equal let unify = (Bool.if is_equal λequations λunsolved (Kind.Checker.unify.go equations unsolved (Bool.true)) λequations λunsolved let eqt = (Kind.Equation.new ctx orig left right); (Kind.Checker.unify.go equations (List.cons eqt unsolved) changed)); (unify equations unsolved)) -(Kind.Checker.unify.go.fail []) = (Kind.Checker.pure (Unit.new)) -(Kind.Checker.unify.go.fail (List.cons (Kind.Equation.new ctx orig left right) eqts)) = (Kind.Checker.bind (Kind.Checker.error (Kind.Error.type_mismatch ctx orig left right) (Unit.new)) λx_1 (Kind.Checker.unify.go.fail eqts)) -(Kind.Checker.with_context checker new_context) = (Kind.Checker.bind (Kind.Checker.set_context new_context) λold_context (Kind.Checker.bind checker λgot (Kind.Checker.bind (Kind.Checker.set_context old_context) λx_1 (Kind.Checker.pure got)))) -(Kind.Checker.set_context new_context) = λold_context λdepth λrhs λsubst λeqts λerrs (Kind.Result.checked new_context depth rhs subst eqts errs old_context) -(Kind.Checker.run checker rhs) = (checker (Kind.Context.empty) 0 rhs (Kind.Subst.end) [] []) -(Kind.API.check_function.rules [] type) = [] -(Kind.API.check_function.rules (List.cons rule rules) type) = let head = (Kind.Checker.run (Kind.Checker.unify (Kind.Checker.rule rule type)) (Bool.false)); let tail = (Kind.API.check_function.rules rules type); (List.cons head tail) -(Kind.Checker.rule (Kind.Rule.lhs arg args) (Kind.Term.all orig name type body)) = (Kind.Checker.bind (Kind.Checker.check arg type) λx_2 (Kind.Checker.bind (Kind.Checker.rule args (body arg)) λx_1 (Kind.Checker.pure (Unit.new)))) -(Kind.Checker.rule (Kind.Rule.lhs arg args) other) = (Kind.Checker.bind (Kind.Checker.get_context) λctx (Kind.Checker.fail (Kind.Error.too_many_arguments ctx (Kind.Term.get_origin arg λorig λterm orig)))) -(Kind.Checker.rule (Kind.Rule.rhs expr) type) = (Kind.Checker.bind (Kind.Checker.set_right_hand_side (Bool.true)) λx_4 (Kind.Checker.bind (Kind.Checker.check expr type) λx_3 (Kind.Checker.pure (Unit.new)))) -(List.reverse xs) = (List.reverse.go xs []) -(List.reverse.go [] ys) = ys -(List.reverse.go (List.cons x xs) ys) = (List.reverse.go xs (List.cons x ys)) -(Kind.API.output []) = [] -(Kind.API.output (List.cons pair rest)) = (Pair.match pair λfst λsnd (List.concat (Kind.API.output.function fst snd) (Kind.API.output rest))) -(List.concat [] ys) = ys -(List.concat (List.cons head tail) ys) = (List.cons head (List.concat tail ys)) -(Kind.API.output.function fnid []) = [] -(Kind.API.output.function fnid (List.cons (Kind.Result.checked ctx dep rhs sub eqt err val) checks)) = (Kind.API.output.function.show_errors err sub fnid checks) -(Kind.API.output.function fnid (List.cons (Kind.Result.errored ctx sub err) checks)) = (Kind.API.output.function.show_errors err sub fnid checks) -(Kind.API.output.function.show_errors [] sub fnid checks) = (Kind.API.output.function fnid checks) -(Kind.API.output.function.show_errors (List.cons err errs) sub fnid checks) = (List.cons (Kind.API.output.error fnid err sub) (Kind.API.output.function.show_errors errs sub fnid checks)) -(Kind.API.output.error fnid err sub) = (Kind.Error.quote err sub) -(Kind.Error.quote (Kind.Error.unbound_variable ctx orig) sub) = (Kind.Error.Quoted.unbound_variable (Kind.Context.quote ctx sub) orig) -(Kind.Error.quote (Kind.Error.cant_infer_hole ctx orig) sub) = (Kind.Error.Quoted.cant_infer_hole (Kind.Context.quote ctx sub) orig) -(Kind.Error.quote (Kind.Error.cant_infer_lambda ctx orig) sub) = (Kind.Error.Quoted.cant_infer_lambda (Kind.Context.quote ctx sub) orig) -(Kind.Error.quote (Kind.Error.invalid_call ctx orig) sub) = (Kind.Error.Quoted.invalid_call (Kind.Context.quote ctx sub) orig) -(Kind.Error.quote (Kind.Error.impossible_case ctx orig typ term) sub) = (Kind.Error.Quoted.impossible_case (Kind.Context.quote ctx sub) orig (Kind.Term.quote typ sub) (Kind.Term.quote term sub)) -(Kind.Error.quote (Kind.Error.inspection ctx orig term) sub) = (Kind.Error.Quoted.inspection (Kind.Context.quote ctx sub) orig (Kind.Term.quote term sub)) -(Kind.Error.quote (Kind.Error.too_many_arguments ctx orig) sub) = (Kind.Error.Quoted.too_many_arguments (Kind.Context.quote ctx sub) orig) -(Kind.Error.quote (Kind.Error.type_mismatch ctx orig expected detected) sub) = (Kind.Error.Quoted.type_mismatch (Kind.Context.quote ctx sub) orig (Kind.Term.quote expected sub) (Kind.Term.quote detected sub)) -(Kind.Error.quote (Kind.Error.uncovered_pattern ctx orig res) sub) = (Kind.Error.Quoted.uncovered_pattern (Kind.Context.quote ctx sub) orig res) -(Kind.Context.quote (Kind.Context.empty) sub) = [] -(Kind.Context.quote (Kind.Context.entry name type vals rest) sub) = (List.cons (Pair.new name (Pair.new (Kind.Term.quote type sub) (List.map vals λx (Kind.Term.quote x sub)))) (Kind.Context.quote rest sub)) -(Kind.Term.quote term sub) = (Kind.Term.quote.go (Kind.Term.fill term sub)) -(Kind.Term.quote.go (Kind.Term.typ orig)) = (Kind.Term.Quoted.typ orig) -(Kind.Term.quote.go (Kind.Term.var orig name index)) = (Kind.Term.Quoted.var orig name index) -(Kind.Term.quote.go (Kind.Term.hol orig numb)) = (Kind.Term.Quoted.hol orig numb) -(Kind.Term.quote.go (Kind.Term.all orig name type body)) = (Kind.Term.Quoted.all orig name (Kind.Term.quote.go type) (Kind.Term.quote.go (body (Kind.Term.var orig name 0)))) -(Kind.Term.quote.go (Kind.Term.lam orig name body)) = (Kind.Term.Quoted.lam orig name (Kind.Term.quote.go (body (Kind.Term.var orig name 0)))) -(Kind.Term.quote.go (Kind.Term.let orig name exp body)) = (Kind.Term.Quoted.let orig name (Kind.Term.quote.go exp) (Kind.Term.quote.go (body (Kind.Term.var orig name 0)))) -(Kind.Term.quote.go (Kind.Term.ann orig expr type)) = (Kind.Term.Quoted.ann orig (Kind.Term.quote.go expr) (Kind.Term.quote.go type)) -(Kind.Term.quote.go (Kind.Term.sub orig name indx redx expr)) = (Kind.Term.Quoted.sub orig name indx redx (Kind.Term.quote.go expr)) -(Kind.Term.quote.go (Kind.Term.app orig func argm)) = (Kind.Term.Quoted.app orig (Kind.Term.quote.go func) (Kind.Term.quote.go argm)) -(Kind.Term.quote.go (Kind.Term.ct0 ctid orig)) = (Kind.Term.Quoted.ctr ctid orig []) -(Kind.Term.quote.go (Kind.Term.ct1 ctid orig x0)) = (Kind.Term.Quoted.ctr ctid orig [(Kind.Term.quote.go x0)]) -(Kind.Term.quote.go (Kind.Term.ct2 ctid orig x0 x1)) = (Kind.Term.Quoted.ctr ctid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1)]) -(Kind.Term.quote.go (Kind.Term.ct3 ctid orig x0 x1 x2)) = (Kind.Term.Quoted.ctr ctid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2)]) -(Kind.Term.quote.go (Kind.Term.ct4 ctid orig x0 x1 x2 x3)) = (Kind.Term.Quoted.ctr ctid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3)]) -(Kind.Term.quote.go (Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4)) = (Kind.Term.Quoted.ctr ctid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4)]) -(Kind.Term.quote.go (Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5)) = (Kind.Term.Quoted.ctr ctid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5)]) -(Kind.Term.quote.go (Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6)) = (Kind.Term.Quoted.ctr ctid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6)]) -(Kind.Term.quote.go (Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Kind.Term.Quoted.ctr ctid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7)]) -(Kind.Term.quote.go (Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Kind.Term.Quoted.ctr ctid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7), (Kind.Term.quote.go x8)]) -(Kind.Term.quote.go (Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Kind.Term.Quoted.ctr ctid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7), (Kind.Term.quote.go x8), (Kind.Term.quote.go x9)]) -(Kind.Term.quote.go (Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Kind.Term.Quoted.ctr ctid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7), (Kind.Term.quote.go x8), (Kind.Term.quote.go x9), (Kind.Term.quote.go x10)]) -(Kind.Term.quote.go (Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Kind.Term.Quoted.ctr ctid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7), (Kind.Term.quote.go x8), (Kind.Term.quote.go x9), (Kind.Term.quote.go x10), (Kind.Term.quote.go x11)]) -(Kind.Term.quote.go (Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Kind.Term.Quoted.ctr ctid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7), (Kind.Term.quote.go x8), (Kind.Term.quote.go x9), (Kind.Term.quote.go x10), (Kind.Term.quote.go x11), (Kind.Term.quote.go x12)]) -(Kind.Term.quote.go (Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Kind.Term.Quoted.ctr ctid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7), (Kind.Term.quote.go x8), (Kind.Term.quote.go x9), (Kind.Term.quote.go x10), (Kind.Term.quote.go x11), (Kind.Term.quote.go x12), (Kind.Term.quote.go x13)]) -(Kind.Term.quote.go (Kind.Term.ct15 ctid orig x0)) = (Kind.Term.Quoted.ctr ctid orig (Kind.Term.quote.args x0)) -(Kind.Term.quote.go (Kind.Term.ct16 ctid orig x0)) = (Kind.Term.Quoted.ctr ctid orig (Kind.Term.quote.args x0)) -(Kind.Term.quote.go (Kind.Term.fn0 fnid orig)) = (Kind.Term.Quoted.fun fnid orig []) -(Kind.Term.quote.go (Kind.Term.fn1 fnid orig x0)) = (Kind.Term.Quoted.fun fnid orig [(Kind.Term.quote.go x0)]) -(Kind.Term.quote.go (Kind.Term.fn2 fnid orig x0 x1)) = (Kind.Term.Quoted.fun fnid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1)]) -(Kind.Term.quote.go (Kind.Term.fn3 fnid orig x0 x1 x2)) = (Kind.Term.Quoted.fun fnid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2)]) -(Kind.Term.quote.go (Kind.Term.fn4 fnid orig x0 x1 x2 x3)) = (Kind.Term.Quoted.fun fnid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3)]) -(Kind.Term.quote.go (Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4)) = (Kind.Term.Quoted.fun fnid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4)]) -(Kind.Term.quote.go (Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5)) = (Kind.Term.Quoted.fun fnid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5)]) -(Kind.Term.quote.go (Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6)) = (Kind.Term.Quoted.fun fnid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6)]) -(Kind.Term.quote.go (Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Kind.Term.Quoted.fun fnid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7)]) -(Kind.Term.quote.go (Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Kind.Term.Quoted.fun fnid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7), (Kind.Term.quote.go x8)]) -(Kind.Term.quote.go (Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Kind.Term.Quoted.fun fnid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7), (Kind.Term.quote.go x8), (Kind.Term.quote.go x9)]) -(Kind.Term.quote.go (Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Kind.Term.Quoted.fun fnid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7), (Kind.Term.quote.go x8), (Kind.Term.quote.go x9), (Kind.Term.quote.go x10)]) -(Kind.Term.quote.go (Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Kind.Term.Quoted.fun fnid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7), (Kind.Term.quote.go x8), (Kind.Term.quote.go x9), (Kind.Term.quote.go x10), (Kind.Term.quote.go x11)]) -(Kind.Term.quote.go (Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Kind.Term.Quoted.fun fnid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7), (Kind.Term.quote.go x8), (Kind.Term.quote.go x9), (Kind.Term.quote.go x10), (Kind.Term.quote.go x11), (Kind.Term.quote.go x12)]) -(Kind.Term.quote.go (Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Kind.Term.Quoted.fun fnid orig [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7), (Kind.Term.quote.go x8), (Kind.Term.quote.go x9), (Kind.Term.quote.go x10), (Kind.Term.quote.go x11), (Kind.Term.quote.go x12), (Kind.Term.quote.go x13)]) -(Kind.Term.quote.go (Kind.Term.fn15 fnid orig x0)) = (Kind.Term.Quoted.fun fnid orig (Kind.Term.quote.args x0)) -(Kind.Term.quote.go (Kind.Term.fn16 fnid orig x0)) = (Kind.Term.Quoted.fun fnid orig (Kind.Term.quote.args x0)) -(Kind.Term.quote.go (Kind.Term.hlp orig)) = (Kind.Term.Quoted.hlp orig) -(Kind.Term.quote.go (Kind.Term.U60 orig)) = (Kind.Term.Quoted.u60 orig) -(Kind.Term.quote.go (Kind.Term.u60 orig numb)) = (Kind.Term.Quoted.num orig numb) -(Kind.Term.quote.go (Kind.Term.F60 orig)) = (Kind.Term.Quoted.f60 orig) -(Kind.Term.quote.go (Kind.Term.f60 orig numb)) = (Kind.Term.Quoted.numf60 orig numb) -(Kind.Term.quote.go (Kind.Term.op2 orig operator left right)) = (Kind.Term.Quoted.op2 orig operator (Kind.Term.quote.go left) (Kind.Term.quote.go right)) -(Kind.Term.quote.go (Kind.Term.args15 x_1 x_2 x_3 x_4 x_5 x_6 x_7 x_8 x_9 x_10 x_11 x_12 x_13 x_14 x_15)) = (Kind.Axiom.Null) -(Kind.Term.quote.go (Kind.Term.args16 x_16 x_17 x_18 x_19 x_20 x_21 x_22 x_23 x_24 x_25 x_26 x_27 x_28 x_29 x_30 x_31)) = (Kind.Axiom.Null) -(Kind.Term.quote.args (Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14)) = [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7), (Kind.Term.quote.go x8), (Kind.Term.quote.go x9), (Kind.Term.quote.go x10), (Kind.Term.quote.go x11), (Kind.Term.quote.go x12), (Kind.Term.quote.go x13), (Kind.Term.quote.go x14)] -(Kind.Term.quote.args (Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15)) = [(Kind.Term.quote.go x0), (Kind.Term.quote.go x1), (Kind.Term.quote.go x2), (Kind.Term.quote.go x3), (Kind.Term.quote.go x4), (Kind.Term.quote.go x5), (Kind.Term.quote.go x6), (Kind.Term.quote.go x7), (Kind.Term.quote.go x8), (Kind.Term.quote.go x9), (Kind.Term.quote.go x10), (Kind.Term.quote.go x11), (Kind.Term.quote.go x12), (Kind.Term.quote.go x13), (Kind.Term.quote.go x14), (Kind.Term.quote.go x15)] -(Kind.Term.quote.args x_1) = (Kind.Axiom.Null) -(Kind.Term.set_origin new_origin (Kind.Term.typ old_orig)) = (Kind.Term.typ new_origin) -(Kind.Term.set_origin new_origin (Kind.Term.var old_orig name idx)) = (Kind.Term.var new_origin name idx) -(Kind.Term.set_origin new_origin (Kind.Term.hol old_orig numb)) = (Kind.Term.hol new_origin numb) -(Kind.Term.set_origin new_origin (Kind.Term.all old_orig name typ body)) = (Kind.Term.all new_origin name typ body) -(Kind.Term.set_origin new_origin (Kind.Term.lam old_orig name body)) = (Kind.Term.lam new_origin name body) -(Kind.Term.set_origin new_origin (Kind.Term.let old_orig name expr body)) = (Kind.Term.let new_origin name expr body) -(Kind.Term.set_origin new_origin (Kind.Term.ann old_orig expr typ)) = (Kind.Term.ann new_origin expr typ) -(Kind.Term.set_origin new_origin (Kind.Term.sub old_orig name indx redx expr)) = (Kind.Term.sub new_origin name indx redx expr) -(Kind.Term.set_origin new_origin (Kind.Term.app old_orig func arg)) = (Kind.Term.app new_origin func arg) -(Kind.Term.set_origin new_origin (Kind.Term.hlp old_orig)) = (Kind.Term.hlp new_origin) -(Kind.Term.set_origin new_origin (Kind.Term.U60 old_orig)) = (Kind.Term.U60 new_origin) -(Kind.Term.set_origin new_origin (Kind.Term.u60 old_orig num)) = (Kind.Term.u60 new_origin num) -(Kind.Term.set_origin new_origin (Kind.Term.F60 old_orig)) = (Kind.Term.F60 new_origin) -(Kind.Term.set_origin new_origin (Kind.Term.f60 old_orig num)) = (Kind.Term.f60 new_origin num) -(Kind.Term.set_origin new_origin (Kind.Term.op2 old_orig op left right)) = (Kind.Term.op2 new_origin op left right) -(Kind.Term.set_origin new_origin (Kind.Term.ct0 ctid old_orig)) = (Kind.Term.ct0 ctid new_origin) -(Kind.Term.set_origin new_origin (Kind.Term.ct1 ctid old_orig x0)) = (Kind.Term.ct1 ctid new_origin x0) -(Kind.Term.set_origin new_origin (Kind.Term.ct2 ctid old_orig x0 x1)) = (Kind.Term.ct2 ctid new_origin x0 x1) -(Kind.Term.set_origin new_origin (Kind.Term.ct3 ctid old_orig x0 x1 x2)) = (Kind.Term.ct3 ctid new_origin x0 x1 x2) -(Kind.Term.set_origin new_origin (Kind.Term.ct4 ctid old_orig x0 x1 x2 x3)) = (Kind.Term.ct4 ctid new_origin x0 x1 x2 x3) -(Kind.Term.set_origin new_origin (Kind.Term.ct5 ctid old_orig x0 x1 x2 x3 x4)) = (Kind.Term.ct5 ctid new_origin x0 x1 x2 x3 x4) -(Kind.Term.set_origin new_origin (Kind.Term.ct6 ctid old_orig x0 x1 x2 x3 x4 x5)) = (Kind.Term.ct6 ctid new_origin x0 x1 x2 x3 x4 x5) -(Kind.Term.set_origin new_origin (Kind.Term.ct7 ctid old_orig x0 x1 x2 x3 x4 x5 x6)) = (Kind.Term.ct7 ctid new_origin x0 x1 x2 x3 x4 x5 x6) -(Kind.Term.set_origin new_origin (Kind.Term.ct8 ctid old_orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Kind.Term.ct8 ctid new_origin x0 x1 x2 x3 x4 x5 x6 x7) -(Kind.Term.set_origin new_origin (Kind.Term.ct9 ctid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Kind.Term.ct9 ctid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8) -(Kind.Term.set_origin new_origin (Kind.Term.ct10 ctid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Kind.Term.ct10 ctid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) -(Kind.Term.set_origin new_origin (Kind.Term.ct11 ctid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Kind.Term.ct11 ctid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) -(Kind.Term.set_origin new_origin (Kind.Term.ct12 ctid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Kind.Term.ct12 ctid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) -(Kind.Term.set_origin new_origin (Kind.Term.ct13 ctid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Kind.Term.ct13 ctid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) -(Kind.Term.set_origin new_origin (Kind.Term.ct14 ctid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Kind.Term.ct14 ctid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) -(Kind.Term.set_origin new_origin (Kind.Term.ct15 ctid old_orig args)) = (Kind.Term.ct15 ctid new_origin args) -(Kind.Term.set_origin new_origin (Kind.Term.ct16 ctid old_orig args)) = (Kind.Term.ct16 ctid new_origin args) -(Kind.Term.set_origin new_origin (Kind.Term.fn0 fnid old_orig)) = (Kind.Term.fn0 fnid new_origin) -(Kind.Term.set_origin new_origin (Kind.Term.fn1 fnid old_orig x0)) = (Kind.Term.fn1 fnid new_origin x0) -(Kind.Term.set_origin new_origin (Kind.Term.fn2 fnid old_orig x0 x1)) = (Kind.Term.fn2 fnid new_origin x0 x1) -(Kind.Term.set_origin new_origin (Kind.Term.fn3 fnid old_orig x0 x1 x2)) = (Kind.Term.fn3 fnid new_origin x0 x1 x2) -(Kind.Term.set_origin new_origin (Kind.Term.fn4 fnid old_orig x0 x1 x2 x3)) = (Kind.Term.fn4 fnid new_origin x0 x1 x2 x3) -(Kind.Term.set_origin new_origin (Kind.Term.fn5 fnid old_orig x0 x1 x2 x3 x4)) = (Kind.Term.fn5 fnid new_origin x0 x1 x2 x3 x4) -(Kind.Term.set_origin new_origin (Kind.Term.fn6 fnid old_orig x0 x1 x2 x3 x4 x5)) = (Kind.Term.fn6 fnid new_origin x0 x1 x2 x3 x4 x5) -(Kind.Term.set_origin new_origin (Kind.Term.fn7 fnid old_orig x0 x1 x2 x3 x4 x5 x6)) = (Kind.Term.fn7 fnid new_origin x0 x1 x2 x3 x4 x5 x6) -(Kind.Term.set_origin new_origin (Kind.Term.fn8 fnid old_orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Kind.Term.fn8 fnid new_origin x0 x1 x2 x3 x4 x5 x6 x7) -(Kind.Term.set_origin new_origin (Kind.Term.fn9 fnid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Kind.Term.fn9 fnid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8) -(Kind.Term.set_origin new_origin (Kind.Term.fn10 fnid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Kind.Term.fn10 fnid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) -(Kind.Term.set_origin new_origin (Kind.Term.fn11 fnid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Kind.Term.fn11 fnid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) -(Kind.Term.set_origin new_origin (Kind.Term.fn12 fnid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Kind.Term.fn12 fnid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) -(Kind.Term.set_origin new_origin (Kind.Term.fn13 fnid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Kind.Term.fn13 fnid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) -(Kind.Term.set_origin new_origin (Kind.Term.fn14 fnid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Kind.Term.fn14 fnid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) -(Kind.Term.set_origin new_origin (Kind.Term.fn15 ctid old_orig args)) = (Kind.Term.fn15 ctid new_origin args) -(Kind.Term.set_origin new_origin (Kind.Term.fn16 ctid old_orig args)) = (Kind.Term.fn16 ctid new_origin args) -(Kind.Term.set_origin new_origin (Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14)) = (Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14) -(Kind.Term.set_origin new_origin (Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15)) = (Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15) -(Kind.API.eval_main) = (Kind.Printer.text [(Kind.Term.show (Kind.Term.FN0 (Main.) 0)), " +(Main) = let imports = [(Dynamic.new λa λb (Apps.Kind.Term.set_origin a b)), (Dynamic.new (Apps.Kind.API.check_all)), (Dynamic.new (Apps.Kind.API.eval_main))]; (Apps.Kind.API.check_all) +(Apps.Kind.API.check_all) = let output = (Apps.Kind.API.output (Data.List.reverse (Apps.Kind.API.check_functions (Apps.Kind.Axiom.Functions)))); output +(Apps.Kind.API.check_functions []) = [] +(Apps.Kind.API.check_functions (Data.List.cons f fs)) = let head = (Data.Pair.new f (Apps.Kind.API.check_function f)); let tail = (Apps.Kind.API.check_functions fs); (Data.List.cons head tail) +(Apps.Kind.API.check_function fnid) = let rules = (Apps.Kind.Axiom.RuleOf fnid); let type = (Apps.Kind.Axiom.TypeOf fnid); let type_check = (Apps.Kind.Checker.run (Apps.Kind.Checker.unify (Apps.Kind.Checker.check type (Apps.Kind.Term.typ 0))) (Data.Bool.true)); let rule_check = (Apps.Kind.API.check_function.rules rules (Apps.Kind.Term.eval type)); let res = (Data.List.cons type_check rule_check); (Data.Bool.if (Apps.Kind.Axiom.CoverCheck fnid) let cover_check = (Apps.Kind.Checker.run (Apps.Kind.Coverage.check fnid) (Data.Bool.true)); (Data.List.cons cover_check res) res) +(Apps.Kind.Checker.check (Apps.Kind.Term.lam orig name body) type) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_subst) λsubst let fun = (Apps.Kind.Term.if_all type λt_orig λt_name λt_type λt_body λorig λname λbody (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_depth) λdep (Apps.Kind.Checker.bind (Apps.Kind.Checker.extended (Apps.Kind.Checker.check (body (Apps.Kind.Term.var orig name dep)) (t_body (Apps.Kind.Term.var t_orig t_name dep))) name t_type []) λchk (Apps.Kind.Checker.pure (Data.Unit.new)))) λorig λname λbody (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_context) λctx (Apps.Kind.Checker.fail (Apps.Kind.Error.cant_infer_lambda ctx orig)))); (fun orig name body)) +(Apps.Kind.Checker.check (Apps.Kind.Term.let orig name expr body) type) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_depth) λdep (Apps.Kind.Checker.bind (Apps.Kind.Checker.infer expr) λexpr_typ (Apps.Kind.Checker.bind (Apps.Kind.Checker.extended (Apps.Kind.Checker.check (body (Apps.Kind.Term.var orig name dep)) type) name expr_typ [(Apps.Kind.Term.eval expr)]) λbody_chk (Apps.Kind.Checker.pure (Data.Unit.new))))) +(Apps.Kind.Checker.check (Apps.Kind.Term.hlp orig) type) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_context) λctx (Apps.Kind.Checker.bind (Apps.Kind.Checker.error (Apps.Kind.Error.inspection ctx orig type) (Data.Unit.new)) λx_13 (Apps.Kind.Checker.pure (Data.Unit.new)))) +(Apps.Kind.Checker.check (Apps.Kind.Term.var orig name idx) type) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_right_hand_side) λrhs (Data.Bool.if rhs (Apps.Kind.Checker.compare rhs (Apps.Kind.Term.var orig name idx) type) (Apps.Kind.Checker.extend name type []))) +(Apps.Kind.Checker.check (Apps.Kind.Term.hol orig numb) type) = (Apps.Kind.Checker.pure (Data.Unit.new)) +(Apps.Kind.Checker.check term type) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_right_hand_side) λrhs (Apps.Kind.Checker.compare rhs term type)) +(Apps.Kind.Checker.get_subst) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked context depth rhs subst eqts errs subst) +(Apps.Kind.Checker.get_right_hand_side) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked context depth rhs subst eqts errs rhs) +(Apps.Kind.Checker.extend name type vals) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked (Apps.Kind.Context.extend context name type vals) (+ depth 1) rhs subst eqts errs (Data.Unit.new)) +(Apps.Kind.Context.extend (Apps.Kind.Context.empty) name type values) = (Apps.Kind.Context.entry name type values (Apps.Kind.Context.empty)) +(Apps.Kind.Context.extend (Apps.Kind.Context.entry n t v rest) name type values) = (Apps.Kind.Context.entry n t v (Apps.Kind.Context.extend rest name type values)) +(Apps.Kind.Checker.get_context) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked context depth rhs subst eqts errs context) +(Apps.Kind.Term.if_all (Apps.Kind.Term.all orig name typ body) func_if else) = (func_if orig name typ body) +(Apps.Kind.Term.if_all other func_if else) = else +(Apps.Kind.Term.eval (Apps.Kind.Term.typ orig)) = (Apps.Kind.Term.typ orig) +(Apps.Kind.Term.eval (Apps.Kind.Term.var orig name index)) = (Apps.Kind.Term.var orig name index) +(Apps.Kind.Term.eval (Apps.Kind.Term.hol orig numb)) = (Apps.Kind.Term.hol orig numb) +(Apps.Kind.Term.eval (Apps.Kind.Term.all orig name typ body)) = (Apps.Kind.Term.all orig name (Apps.Kind.Term.eval typ) λx (Apps.Kind.Term.eval (body x))) +(Apps.Kind.Term.eval (Apps.Kind.Term.lam orig name body)) = (Apps.Kind.Term.lam orig name λx (Apps.Kind.Term.eval (body x))) +(Apps.Kind.Term.eval (Apps.Kind.Term.let orig name expr body)) = (Apps.Kind.Term.eval_let orig name (Apps.Kind.Term.eval expr) λx (Apps.Kind.Term.eval (body x))) +(Apps.Kind.Term.eval (Apps.Kind.Term.ann orig expr typ)) = (Apps.Kind.Term.eval_ann orig (Apps.Kind.Term.eval expr) (Apps.Kind.Term.eval typ)) +(Apps.Kind.Term.eval (Apps.Kind.Term.sub orig name indx redx expr)) = (Apps.Kind.Term.eval_sub orig name indx redx (Apps.Kind.Term.eval expr)) +(Apps.Kind.Term.eval (Apps.Kind.Term.app orig expr typ)) = (Apps.Kind.Term.eval_app orig (Apps.Kind.Term.eval expr) (Apps.Kind.Term.eval typ)) +(Apps.Kind.Term.eval (Apps.Kind.Term.hlp orig)) = (Apps.Kind.Term.hlp orig) +(Apps.Kind.Term.eval (Apps.Kind.Term.U60 orig)) = (Apps.Kind.Term.U60 orig) +(Apps.Kind.Term.eval (Apps.Kind.Term.u60 orig num)) = (Apps.Kind.Term.u60 orig num) +(Apps.Kind.Term.eval (Apps.Kind.Term.F60 orig)) = (Apps.Kind.Term.F60 orig) +(Apps.Kind.Term.eval (Apps.Kind.Term.f60 orig num)) = (Apps.Kind.Term.f60 orig num) +(Apps.Kind.Term.eval (Apps.Kind.Term.op2 orig op left right)) = (Apps.Kind.Term.eval_op orig op (Apps.Kind.Term.eval left) (Apps.Kind.Term.eval right)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct0 ctid orig)) = (Apps.Kind.Term.ct0 ctid orig) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct1 ctid orig x0)) = (Apps.Kind.Term.ct1 ctid orig (Apps.Kind.Term.eval x0)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct2 ctid orig x0 x1)) = (Apps.Kind.Term.ct2 ctid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct3 ctid orig x0 x1 x2)) = (Apps.Kind.Term.ct3 ctid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct4 ctid orig x0 x1 x2 x3)) = (Apps.Kind.Term.ct4 ctid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4)) = (Apps.Kind.Term.ct5 ctid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5)) = (Apps.Kind.Term.ct6 ctid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6)) = (Apps.Kind.Term.ct7 ctid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Apps.Kind.Term.ct8 ctid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Apps.Kind.Term.ct9 ctid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7) (Apps.Kind.Term.eval x8)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Apps.Kind.Term.ct10 ctid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7) (Apps.Kind.Term.eval x8) (Apps.Kind.Term.eval x9)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Apps.Kind.Term.ct11 ctid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7) (Apps.Kind.Term.eval x8) (Apps.Kind.Term.eval x9) (Apps.Kind.Term.eval x10)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Apps.Kind.Term.ct12 ctid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7) (Apps.Kind.Term.eval x8) (Apps.Kind.Term.eval x9) (Apps.Kind.Term.eval x10) (Apps.Kind.Term.eval x11)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Apps.Kind.Term.ct13 ctid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7) (Apps.Kind.Term.eval x8) (Apps.Kind.Term.eval x9) (Apps.Kind.Term.eval x10) (Apps.Kind.Term.eval x11) (Apps.Kind.Term.eval x12)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Apps.Kind.Term.ct14 ctid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7) (Apps.Kind.Term.eval x8) (Apps.Kind.Term.eval x9) (Apps.Kind.Term.eval x10) (Apps.Kind.Term.eval x11) (Apps.Kind.Term.eval x12) (Apps.Kind.Term.eval x13)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct15 fnid orig x0)) = (Apps.Kind.Term.ct15 fnid orig (Apps.Kind.Term.eval x0)) +(Apps.Kind.Term.eval (Apps.Kind.Term.ct16 fnid orig x0)) = (Apps.Kind.Term.ct16 fnid orig (Apps.Kind.Term.eval x0)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn0 fnid orig)) = (Apps.Kind.Term.FN0 fnid orig) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn1 fnid orig x0)) = (Apps.Kind.Term.FN1 fnid orig (Apps.Kind.Term.eval x0)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn2 fnid orig x0 x1)) = (Apps.Kind.Term.FN2 fnid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn3 fnid orig x0 x1 x2)) = (Apps.Kind.Term.FN3 fnid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn4 fnid orig x0 x1 x2 x3)) = (Apps.Kind.Term.FN4 fnid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4)) = (Apps.Kind.Term.FN5 fnid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5)) = (Apps.Kind.Term.FN6 fnid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6)) = (Apps.Kind.Term.FN7 fnid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Apps.Kind.Term.FN8 fnid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Apps.Kind.Term.FN9 fnid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7) (Apps.Kind.Term.eval x8)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Apps.Kind.Term.FN10 fnid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7) (Apps.Kind.Term.eval x8) (Apps.Kind.Term.eval x9)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Apps.Kind.Term.FN11 fnid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7) (Apps.Kind.Term.eval x8) (Apps.Kind.Term.eval x9) (Apps.Kind.Term.eval x10)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Apps.Kind.Term.FN12 fnid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7) (Apps.Kind.Term.eval x8) (Apps.Kind.Term.eval x9) (Apps.Kind.Term.eval x10) (Apps.Kind.Term.eval x11)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Apps.Kind.Term.FN13 fnid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7) (Apps.Kind.Term.eval x8) (Apps.Kind.Term.eval x9) (Apps.Kind.Term.eval x10) (Apps.Kind.Term.eval x11) (Apps.Kind.Term.eval x12)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Apps.Kind.Term.FN14 fnid orig (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7) (Apps.Kind.Term.eval x8) (Apps.Kind.Term.eval x9) (Apps.Kind.Term.eval x10) (Apps.Kind.Term.eval x11) (Apps.Kind.Term.eval x12) (Apps.Kind.Term.eval x13)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn15 fnid orig x0)) = (Apps.Kind.Term.FN15 fnid orig (Apps.Kind.Term.eval x0)) +(Apps.Kind.Term.eval (Apps.Kind.Term.fn16 fnid orig x0)) = (Apps.Kind.Term.FN16 fnid orig (Apps.Kind.Term.eval x0)) +(Apps.Kind.Term.eval (Apps.Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14)) = (Apps.Kind.Term.args15 (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7) (Apps.Kind.Term.eval x8) (Apps.Kind.Term.eval x9) (Apps.Kind.Term.eval x10) (Apps.Kind.Term.eval x11) (Apps.Kind.Term.eval x12) (Apps.Kind.Term.eval x13) (Apps.Kind.Term.eval x14)) +(Apps.Kind.Term.eval (Apps.Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15)) = (Apps.Kind.Term.args16 (Apps.Kind.Term.eval x0) (Apps.Kind.Term.eval x1) (Apps.Kind.Term.eval x2) (Apps.Kind.Term.eval x3) (Apps.Kind.Term.eval x4) (Apps.Kind.Term.eval x5) (Apps.Kind.Term.eval x6) (Apps.Kind.Term.eval x7) (Apps.Kind.Term.eval x8) (Apps.Kind.Term.eval x9) (Apps.Kind.Term.eval x10) (Apps.Kind.Term.eval x11) (Apps.Kind.Term.eval x12) (Apps.Kind.Term.eval x13) (Apps.Kind.Term.eval x14) (Apps.Kind.Term.eval x15)) +(Apps.Kind.Term.eval_let orig name expr body) = (body expr) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.add) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (+ a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.sub) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (- a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.mul) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (* a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.div) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (/ a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.mod) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (% a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.and) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (& a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.or) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (| a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.xor) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (^ a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.shl) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (<< a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.shr) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (>> a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.ltn) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (< a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.lte) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (<= a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.eql) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (== a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.gte) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (>= a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.gtn) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (> a.num b.num)) +(Apps.Kind.Term.eval_op orig (Apps.Kind.Operator.neq) (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Term.u60 0 (!= a.num b.num)) +(Apps.Kind.Term.eval_op orig op left right) = (Apps.Kind.Term.op2 orig op left right) +(Apps.Kind.Term.eval_app orig (Apps.Kind.Term.lam orig1 name body) arg) = (body arg) +(Apps.Kind.Term.eval_app orig func arg) = (Apps.Kind.Term.app orig func arg) +(Apps.Kind.Term.eval_ann orig expr type) = expr +(Apps.Kind.Term.eval_sub orig name indx redx expr) = expr +(Apps.Kind.Checker.infer (Apps.Kind.Term.var orig name index)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.find index (Data.Maybe.none) λn λt λv (Data.Maybe.some t)) λgot_type (Data.Maybe.match got_type (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_context) λctx (Apps.Kind.Checker.fail (Apps.Kind.Error.unbound_variable ctx orig))) λgot_type.value (Apps.Kind.Checker.pure got_type.value))) +(Apps.Kind.Checker.infer (Apps.Kind.Term.hol orig numb)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_context) λctx (Apps.Kind.Checker.fail (Apps.Kind.Error.cant_infer_hole ctx orig))) +(Apps.Kind.Checker.infer (Apps.Kind.Term.typ orig)) = (Apps.Kind.Checker.pure (Apps.Kind.Term.typ orig)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.all orig name type body)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_depth) λdepth (Apps.Kind.Checker.bind (Apps.Kind.Checker.check type (Apps.Kind.Term.typ orig)) λx_2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.extended (Apps.Kind.Checker.check (body (Apps.Kind.Term.var orig name depth)) (Apps.Kind.Term.typ orig)) name (Apps.Kind.Term.eval type) []) λx_1 (Apps.Kind.Checker.pure (Apps.Kind.Term.typ orig))))) +(Apps.Kind.Checker.infer (Apps.Kind.Term.lam orig name body)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_context) λctx (Apps.Kind.Checker.fail (Apps.Kind.Error.cant_infer_lambda ctx orig))) +(Apps.Kind.Checker.infer (Apps.Kind.Term.app orig func argm)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.infer func) λfn_infer (Apps.Kind.Checker.bind (Apps.Kind.Checker.infer.forall fn_infer λfn_orig λfn_name λfn_type λfn_body (Apps.Kind.Checker.bind (Apps.Kind.Checker.check argm fn_type) λx_3 (Apps.Kind.Checker.pure (fn_body (Apps.Kind.Term.eval argm)))) (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_context) λctx (Apps.Kind.Checker.fail (Apps.Kind.Error.invalid_call ctx orig)))) λap_infer (Apps.Kind.Checker.pure ap_infer))) +(Apps.Kind.Checker.infer (Apps.Kind.Term.let orig name expr body)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_depth) λdep (Apps.Kind.Checker.bind (Apps.Kind.Checker.infer expr) λexpr_typ (Apps.Kind.Checker.bind (Apps.Kind.Checker.extended (Apps.Kind.Checker.infer (body (Apps.Kind.Term.var orig name dep))) name expr_typ [(Apps.Kind.Term.eval expr)]) λbody_typ (Apps.Kind.Checker.pure body_typ)))) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ann orig expr type)) = let type = (Apps.Kind.Term.eval type); (Apps.Kind.Checker.bind (Apps.Kind.Checker.check expr type) λx_4 (Apps.Kind.Checker.pure type)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.sub orig name indx redx expr)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_depth) λdep (Apps.Kind.Checker.bind (Apps.Kind.Checker.find indx (Data.Maybe.none) λn λt λv (Data.Maybe.some (Data.Pair.new t v))) λgot (Data.Maybe.match got (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_context) λctx (Apps.Kind.Checker.fail (Apps.Kind.Error.unbound_variable ctx orig))) λgot.value (Data.Pair.match got.value λgot.value.fst λgot.value.snd (Data.Maybe.match (Data.List.at.u60 got.value.snd redx) (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_context) λctx (Apps.Kind.Checker.fail (Apps.Kind.Error.unbound_variable ctx orig))) λreduction.value (Apps.Kind.Checker.bind (Apps.Kind.Checker.infer expr) λexpr_typ (Apps.Kind.Checker.pure (Apps.Kind.Term.eval (Apps.Kind.Term.replace expr_typ indx reduction.value))))))))) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct0 ctid orig)) = (Apps.Kind.Checker.pure (Apps.Kind.Term.eval (Apps.Kind.Axiom.TypeOf ctid))) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct1 ctid orig x0)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.ct0 ctid orig) x0)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct2 ctid orig x0 x1)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.ct0 ctid orig) x0) x1)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct3 ctid orig x0 x1 x2)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.ct0 ctid orig) x0) x1) x2)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct4 ctid orig x0 x1 x2 x3)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.ct0 ctid orig) x0) x1) x2) x3)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6) x7)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11) x12)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.ct0 ctid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11) x12) x13)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct15 ctid orig x0)) = let expr = (Apps.Kind.Checker.infer_args x0); (Apps.Kind.Checker.infer (expr (Apps.Kind.Term.ct0 ctid orig) orig)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.ct16 ctid orig x0)) = let expr = (Apps.Kind.Checker.infer_args x0); (Apps.Kind.Checker.infer (expr (Apps.Kind.Term.ct0 ctid orig) orig)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn0 fnid orig)) = (Apps.Kind.Checker.pure (Apps.Kind.Term.eval (Apps.Kind.Axiom.TypeOf fnid))) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn1 fnid orig x0)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.fn0 fnid orig) x0)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn2 fnid orig x0 x1)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.fn0 fnid orig) x0) x1)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn3 fnid orig x0 x1 x2)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.fn0 fnid orig) x0) x1) x2)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn4 fnid orig x0 x1 x2 x3)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.fn0 fnid orig) x0) x1) x2) x3)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6) x7)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11) x12)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Apps.Kind.Checker.infer (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.fn0 fnid orig) x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11) x12) x13)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn15 fnid orig x0)) = let expr = (Apps.Kind.Checker.infer_args x0); (Apps.Kind.Checker.infer (expr (Apps.Kind.Term.fn0 fnid orig) orig)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.fn16 fnid orig x0)) = let expr = (Apps.Kind.Checker.infer_args x0); (Apps.Kind.Checker.infer (expr (Apps.Kind.Term.fn0 fnid orig) orig)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.hlp orig)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_context) λctx (Apps.Kind.Checker.fail (Apps.Kind.Error.inspection ctx orig (Apps.Kind.Term.hlp 0)))) +(Apps.Kind.Checker.infer (Apps.Kind.Term.U60 orig)) = (Apps.Kind.Checker.pure (Apps.Kind.Term.typ 0)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.u60 orig numb)) = (Apps.Kind.Checker.pure (Apps.Kind.Term.U60 0)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.F60 orig)) = (Apps.Kind.Checker.pure (Apps.Kind.Term.typ 0)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.f60 orig numb)) = (Apps.Kind.Checker.pure (Apps.Kind.Term.F60 0)) +(Apps.Kind.Checker.infer (Apps.Kind.Term.op2 orig oper left right)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.check left (Apps.Kind.Term.U60 0)) λx_6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.check right (Apps.Kind.Term.U60 0)) λx_5 (Apps.Kind.Checker.pure (Apps.Kind.Term.U60 0)))) +(Apps.Kind.Checker.infer (Apps.Kind.Term.args15 x_7 x_8 x_9 x_10 x_11 x_12 x_13 x_14 x_15 x_16 x_17 x_18 x_19 x_20 x_21)) = (Apps.Kind.Axiom.Null) +(Apps.Kind.Checker.infer (Apps.Kind.Term.args16 x_22 x_23 x_24 x_25 x_26 x_27 x_28 x_29 x_30 x_31 x_32 x_33 x_34 x_35 x_36 x_37)) = (Apps.Kind.Axiom.Null) +(Data.List.at.u60 [] idx) = (Data.Maybe.none) +(Data.List.at.u60 (Data.List.cons head tail) 0) = (Data.Maybe.some head) +(Data.List.at.u60 (Data.List.cons head tail) idx) = (Data.List.at.u60 tail (- idx 1)) +(Apps.Kind.Term.replace (Apps.Kind.Term.typ orig) idx val) = (Apps.Kind.Term.typ orig) +(Apps.Kind.Term.replace (Apps.Kind.Term.var orig name index) idx val) = (Data.Bool.if (Data.U60.equal idx index) val (Apps.Kind.Term.var orig name index)) +(Apps.Kind.Term.replace (Apps.Kind.Term.all orig name typ body) idx val) = (Apps.Kind.Term.all orig name (Apps.Kind.Term.replace typ idx val) λx (Apps.Kind.Term.replace (body x) idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.lam orig name body) idx val) = (Apps.Kind.Term.lam orig name λx (Apps.Kind.Term.replace (body x) idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.let orig name expr body) idx val) = (Apps.Kind.Term.let orig name (Apps.Kind.Term.replace expr idx val) λx (Apps.Kind.Term.replace (body x) idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ann orig expr typ) idx val) = (Apps.Kind.Term.ann orig (Apps.Kind.Term.replace expr idx val) (Apps.Kind.Term.replace typ idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.sub orig name indx redx expr) idx val) = (Apps.Kind.Term.sub orig name indx redx (Apps.Kind.Term.replace expr idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.app orig expr typ) idx val) = (Apps.Kind.Term.app orig (Apps.Kind.Term.replace expr idx val) (Apps.Kind.Term.replace typ idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.hlp orig) idx val) = (Apps.Kind.Term.hlp orig) +(Apps.Kind.Term.replace (Apps.Kind.Term.U60 orig) idx val) = (Apps.Kind.Term.U60 orig) +(Apps.Kind.Term.replace (Apps.Kind.Term.u60 orig num) idx val) = (Apps.Kind.Term.u60 orig num) +(Apps.Kind.Term.replace (Apps.Kind.Term.F60 orig) idx val) = (Apps.Kind.Term.F60 orig) +(Apps.Kind.Term.replace (Apps.Kind.Term.f60 orig num) idx val) = (Apps.Kind.Term.f60 orig num) +(Apps.Kind.Term.replace (Apps.Kind.Term.op2 orig op left right) idx val) = (Apps.Kind.Term.op2 orig op (Apps.Kind.Term.replace left idx val) (Apps.Kind.Term.replace right idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct0 ctid orig) idx val) = (Apps.Kind.Term.ct0 ctid orig) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct1 ctid orig x0) idx val) = (Apps.Kind.Term.ct1 ctid orig (Apps.Kind.Term.replace x0 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct2 ctid orig x0 x1) idx val) = (Apps.Kind.Term.ct2 ctid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct3 ctid orig x0 x1 x2) idx val) = (Apps.Kind.Term.ct3 ctid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct4 ctid orig x0 x1 x2 x3) idx val) = (Apps.Kind.Term.ct4 ctid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4) idx val) = (Apps.Kind.Term.ct5 ctid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5) idx val) = (Apps.Kind.Term.ct6 ctid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6) idx val) = (Apps.Kind.Term.ct7 ctid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7) idx val) = (Apps.Kind.Term.ct8 ctid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) idx val) = (Apps.Kind.Term.ct9 ctid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val) (Apps.Kind.Term.replace x8 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) idx val) = (Apps.Kind.Term.ct10 ctid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val) (Apps.Kind.Term.replace x8 idx val) (Apps.Kind.Term.replace x9 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) idx val) = (Apps.Kind.Term.ct11 ctid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val) (Apps.Kind.Term.replace x8 idx val) (Apps.Kind.Term.replace x9 idx val) (Apps.Kind.Term.replace x10 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) idx val) = (Apps.Kind.Term.ct12 ctid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val) (Apps.Kind.Term.replace x8 idx val) (Apps.Kind.Term.replace x9 idx val) (Apps.Kind.Term.replace x10 idx val) (Apps.Kind.Term.replace x11 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) idx val) = (Apps.Kind.Term.ct13 ctid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val) (Apps.Kind.Term.replace x8 idx val) (Apps.Kind.Term.replace x9 idx val) (Apps.Kind.Term.replace x10 idx val) (Apps.Kind.Term.replace x11 idx val) (Apps.Kind.Term.replace x12 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) idx val) = (Apps.Kind.Term.ct14 ctid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val) (Apps.Kind.Term.replace x8 idx val) (Apps.Kind.Term.replace x9 idx val) (Apps.Kind.Term.replace x10 idx val) (Apps.Kind.Term.replace x11 idx val) (Apps.Kind.Term.replace x12 idx val) (Apps.Kind.Term.replace x13 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct15 ctid orig x0) idx val) = (Apps.Kind.Term.ct15 ctid orig (Apps.Kind.Term.replace x0 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.ct16 ctid orig x0) idx val) = (Apps.Kind.Term.ct16 ctid orig (Apps.Kind.Term.replace x0 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn0 fnid orig) idx val) = (Apps.Kind.Term.FN0 fnid orig) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn1 fnid orig x0) idx val) = (Apps.Kind.Term.FN1 fnid orig (Apps.Kind.Term.replace x0 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn2 fnid orig x0 x1) idx val) = (Apps.Kind.Term.FN2 fnid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn3 fnid orig x0 x1 x2) idx val) = (Apps.Kind.Term.FN3 fnid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn4 fnid orig x0 x1 x2 x3) idx val) = (Apps.Kind.Term.FN4 fnid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4) idx val) = (Apps.Kind.Term.FN5 fnid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5) idx val) = (Apps.Kind.Term.FN6 fnid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6) idx val) = (Apps.Kind.Term.FN7 fnid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7) idx val) = (Apps.Kind.Term.FN8 fnid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) idx val) = (Apps.Kind.Term.FN9 fnid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val) (Apps.Kind.Term.replace x8 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) idx val) = (Apps.Kind.Term.FN10 fnid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val) (Apps.Kind.Term.replace x8 idx val) (Apps.Kind.Term.replace x9 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) idx val) = (Apps.Kind.Term.FN11 fnid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val) (Apps.Kind.Term.replace x8 idx val) (Apps.Kind.Term.replace x9 idx val) (Apps.Kind.Term.replace x10 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) idx val) = (Apps.Kind.Term.FN12 fnid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val) (Apps.Kind.Term.replace x8 idx val) (Apps.Kind.Term.replace x9 idx val) (Apps.Kind.Term.replace x10 idx val) (Apps.Kind.Term.replace x11 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) idx val) = (Apps.Kind.Term.FN13 fnid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val) (Apps.Kind.Term.replace x8 idx val) (Apps.Kind.Term.replace x9 idx val) (Apps.Kind.Term.replace x10 idx val) (Apps.Kind.Term.replace x11 idx val) (Apps.Kind.Term.replace x12 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) idx val) = (Apps.Kind.Term.FN14 fnid orig (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val) (Apps.Kind.Term.replace x8 idx val) (Apps.Kind.Term.replace x9 idx val) (Apps.Kind.Term.replace x10 idx val) (Apps.Kind.Term.replace x11 idx val) (Apps.Kind.Term.replace x12 idx val) (Apps.Kind.Term.replace x13 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn15 ctid orig x0) idx val) = (Apps.Kind.Term.FN15 ctid orig (Apps.Kind.Term.replace x0 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.fn16 ctid orig x0) idx val) = (Apps.Kind.Term.FN16 ctid orig (Apps.Kind.Term.replace x0 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14) idx val) = (Apps.Kind.Term.args15 (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val) (Apps.Kind.Term.replace x8 idx val) (Apps.Kind.Term.replace x9 idx val) (Apps.Kind.Term.replace x10 idx val) (Apps.Kind.Term.replace x11 idx val) (Apps.Kind.Term.replace x12 idx val) (Apps.Kind.Term.replace x13 idx val) (Apps.Kind.Term.replace x14 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15) idx val) = (Apps.Kind.Term.args16 (Apps.Kind.Term.replace x0 idx val) (Apps.Kind.Term.replace x1 idx val) (Apps.Kind.Term.replace x2 idx val) (Apps.Kind.Term.replace x3 idx val) (Apps.Kind.Term.replace x4 idx val) (Apps.Kind.Term.replace x5 idx val) (Apps.Kind.Term.replace x6 idx val) (Apps.Kind.Term.replace x7 idx val) (Apps.Kind.Term.replace x8 idx val) (Apps.Kind.Term.replace x9 idx val) (Apps.Kind.Term.replace x10 idx val) (Apps.Kind.Term.replace x11 idx val) (Apps.Kind.Term.replace x12 idx val) (Apps.Kind.Term.replace x13 idx val) (Apps.Kind.Term.replace x14 idx val) (Apps.Kind.Term.replace x15 idx val)) +(Apps.Kind.Term.replace (Apps.Kind.Term.hol orig numb) idx val) = (Apps.Kind.Term.hol orig numb) +(Data.U60.equal a b) = (Data.U60.to_bool (== a b)) +(Data.U60.to_bool 0) = (Data.Bool.false) +(Data.U60.to_bool n) = (Data.Bool.true) +(Data.Bool.if (Data.Bool.true) t f) = t +(Data.Bool.if (Data.Bool.false) t f) = f +(Apps.Kind.Checker.pure res) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked context depth rhs subst eqts errs res) +(Apps.Kind.Checker.infer_args (Apps.Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14)) = λterm λorig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig term x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11) x12) x13) x14) +(Apps.Kind.Checker.infer_args (Apps.Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15)) = λterm λorig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig (Apps.Kind.Term.app orig term x0) x1) x2) x3) x4) x5) x6) x7) x8) x9) x10) x11) x12) x13) x14) x15) +(Apps.Kind.Checker.infer_args term) = λx_ λorig term +(Apps.Kind.Checker.infer.forall (Apps.Kind.Term.all orig name type body) then_fn else_val) = (then_fn orig name type body) +(Apps.Kind.Checker.infer.forall (Apps.Kind.Term.var orig name index) then_fn else_val) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.find index [] λn λt λv v) λreducs (Apps.Kind.Checker.bind (Apps.Kind.Checker.infer.forall.try_values reducs then_fn else_val) λresult (Apps.Kind.Checker.pure result))) +(Apps.Kind.Checker.infer.forall other then_fn else_val) = else_val +(Apps.Kind.Checker.bind checker then) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Checker.bind.result (checker context depth rhs subst eqts errs) then) +(Apps.Kind.Checker.bind.result (Apps.Kind.Result.checked context depth rhs sub equations errs ret) then) = (then ret context depth rhs sub equations errs) +(Apps.Kind.Checker.bind.result (Apps.Kind.Result.errored context sub errs) then) = (Apps.Kind.Result.errored context sub errs) +(Apps.Kind.Checker.find index alt fun) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked context depth rhs subst eqts errs (Apps.Kind.Context.find context index alt fun)) +(Apps.Kind.Context.find (Apps.Kind.Context.entry name type vals rest) 0 alt fun) = (fun name type vals) +(Apps.Kind.Context.find (Apps.Kind.Context.entry name type vals rest) n alt fun) = (Apps.Kind.Context.find rest (- n 1) alt fun) +(Apps.Kind.Context.find (Apps.Kind.Context.empty) n alt fun) = alt +(Apps.Kind.Checker.infer.forall.try_values (Data.List.cons (Apps.Kind.Term.all orig name type body) terms) then_fn else_val) = (then_fn orig name type body) +(Apps.Kind.Checker.infer.forall.try_values (Data.List.cons other terms) then_fn else_val) = (Apps.Kind.Checker.infer.forall.try_values terms then_fn else_val) +(Apps.Kind.Checker.infer.forall.try_values [] then_fn else_val) = else_val +(Data.Maybe.match (Data.Maybe.none) none some) = none +(Data.Maybe.match (Data.Maybe.some value_) none some) = (some value_) +(Apps.Kind.Checker.get_depth) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked context depth rhs subst eqts errs depth) +(Data.Pair.match (Data.Pair.new fst_ snd_) new) = (new fst_ snd_) +(Apps.Kind.Checker.extended checker name type vals) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.extend name type vals) λx_2 (Apps.Kind.Checker.bind checker λgot (Apps.Kind.Checker.bind (Apps.Kind.Checker.shrink) λx_1 (Apps.Kind.Checker.pure got)))) +(Apps.Kind.Checker.shrink) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked (Apps.Kind.Context.shrink context) (- depth 1) rhs subst eqts errs (Data.Unit.new)) +(Apps.Kind.Context.shrink (Apps.Kind.Context.empty)) = (Apps.Kind.Context.empty) +(Apps.Kind.Context.shrink (Apps.Kind.Context.entry name type vals (Apps.Kind.Context.empty))) = (Apps.Kind.Context.empty) +(Apps.Kind.Context.shrink (Apps.Kind.Context.entry name type vals rest)) = (Apps.Kind.Context.entry name type vals (Apps.Kind.Context.shrink rest)) +(Apps.Kind.Checker.fail err) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.errored context subst (Data.List.cons err errs)) +(Apps.Kind.Checker.error err ret) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked context depth rhs subst eqts (Data.List.cons err errs) ret) +(Apps.Kind.Checker.compare rhs term type) = (Apps.Kind.Term.get_origin term λorig λterm (Apps.Kind.Checker.bind (Apps.Kind.Checker.infer term) λterm_typ let fun = (Data.Bool.if rhs λterm_typ λtype (Apps.Kind.Checker.new_equation orig type term_typ) λterm_typ λtype (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal (Apps.Kind.Term.eval term_typ) (Apps.Kind.Term.eval type)) λis_equal (Data.Bool.if is_equal (Apps.Kind.Checker.pure (Data.Unit.new)) (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_context) λctx (Apps.Kind.Checker.fail (Apps.Kind.Error.impossible_case ctx orig type term_typ)))))); (fun term_typ type))) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.typ orig) got) = (got orig (Apps.Kind.Term.typ orig)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.var orig name index) got) = (got orig (Apps.Kind.Term.var orig name index)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.hol orig numb) got) = (got orig (Apps.Kind.Term.hol orig numb)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.all orig name typ body) got) = (got orig (Apps.Kind.Term.all orig name typ body)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.lam orig name body) got) = (got orig (Apps.Kind.Term.lam orig name body)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.let orig name expr body) got) = (got orig (Apps.Kind.Term.let orig name expr body)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ann orig expr typ) got) = (got orig (Apps.Kind.Term.ann orig expr typ)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.sub orig name indx redx expr) got) = (got orig (Apps.Kind.Term.sub orig name indx redx expr)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.app orig func arg) got) = (got orig (Apps.Kind.Term.app orig func arg)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.hlp orig) got) = (got orig (Apps.Kind.Term.hlp orig)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.U60 orig) got) = (got orig (Apps.Kind.Term.U60 orig)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.u60 orig num) got) = (got orig (Apps.Kind.Term.u60 orig num)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.F60 orig) got) = (got orig (Apps.Kind.Term.F60 orig)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.f60 orig num) got) = (got orig (Apps.Kind.Term.f60 orig num)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.op2 orig op left right) got) = (got orig (Apps.Kind.Term.op2 orig op left right)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct0 ctid orig) got) = (got orig (Apps.Kind.Term.ct0 ctid orig)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct1 ctid orig x0) got) = (got orig (Apps.Kind.Term.ct1 ctid orig x0)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct2 ctid orig x0 x1) got) = (got orig (Apps.Kind.Term.ct2 ctid orig x0 x1)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct3 ctid orig x0 x1 x2) got) = (got orig (Apps.Kind.Term.ct3 ctid orig x0 x1 x2)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct4 ctid orig x0 x1 x2 x3) got) = (got orig (Apps.Kind.Term.ct4 ctid orig x0 x1 x2 x3)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4) got) = (got orig (Apps.Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5) got) = (got orig (Apps.Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6) got) = (got orig (Apps.Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7) got) = (got orig (Apps.Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) got) = (got orig (Apps.Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) got) = (got orig (Apps.Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) got) = (got orig (Apps.Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) got) = (got orig (Apps.Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) got) = (got orig (Apps.Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) got) = (got orig (Apps.Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct15 fnid orig args) got) = (got orig (Apps.Kind.Term.ct15 fnid orig args)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.ct16 fnid orig args) got) = (got orig (Apps.Kind.Term.ct16 fnid orig args)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn0 fnid orig) got) = (got orig (Apps.Kind.Term.fn0 fnid orig)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn1 fnid orig x0) got) = (got orig (Apps.Kind.Term.fn1 fnid orig x0)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn2 fnid orig x0 x1) got) = (got orig (Apps.Kind.Term.fn2 fnid orig x0 x1)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn3 fnid orig x0 x1 x2) got) = (got orig (Apps.Kind.Term.fn3 fnid orig x0 x1 x2)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn4 fnid orig x0 x1 x2 x3) got) = (got orig (Apps.Kind.Term.fn4 fnid orig x0 x1 x2 x3)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4) got) = (got orig (Apps.Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5) got) = (got orig (Apps.Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6) got) = (got orig (Apps.Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7) got) = (got orig (Apps.Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) got) = (got orig (Apps.Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) got) = (got orig (Apps.Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) got) = (got orig (Apps.Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) got) = (got orig (Apps.Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) got) = (got orig (Apps.Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) got) = (got orig (Apps.Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn15 fnid orig args) got) = (got orig (Apps.Kind.Term.fn15 fnid orig args)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.fn16 fnid orig args) got) = (got orig (Apps.Kind.Term.fn16 fnid orig args)) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.args15 x_1 x_2 x_3 x_4 x_5 x_6 x_7 x_8 x_9 x_10 x_11 x_12 x_13 x_14 x_15) got) = (Apps.Kind.Axiom.Null) +(Apps.Kind.Term.get_origin (Apps.Kind.Term.args16 x_16 x_17 x_18 x_19 x_20 x_21 x_22 x_23 x_24 x_25 x_26 x_27 x_28 x_29 x_30 x_31) got) = (Apps.Kind.Axiom.Null) +(Apps.Kind.Checker.new_equation orig left right) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked context depth rhs subst (Data.List.append eqts (Apps.Kind.Equation.new context orig left right)) errs (Data.Unit.new)) +(Data.List.append [] x) = [x] +(Data.List.append (Data.List.cons xs.h xs.t) x) = (Data.List.cons xs.h (Data.List.append xs.t x)) +(Apps.Kind.Checker.equal (Apps.Kind.Term.typ orig) (Apps.Kind.Term.typ orig1)) = (Apps.Kind.Checker.pure (Data.Bool.true)) +(Apps.Kind.Checker.equal (Apps.Kind.Term.all a.orig a.name a.type a.body) (Apps.Kind.Term.all b.orig b.name b.type b.body)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_depth) λdep (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.type b.type) λtype (Apps.Kind.Checker.bind (Apps.Kind.Checker.extended (Apps.Kind.Checker.equal (a.body (Apps.Kind.Term.var a.orig a.name dep)) (b.body (Apps.Kind.Term.var b.orig b.name dep))) (Apps.Kind.Axiom.Null) (Apps.Kind.Axiom.Null) []) λbody (Apps.Kind.Checker.pure (Data.Bool.and type body))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.lam a.orig a.name a.body) (Apps.Kind.Term.lam b.orig b.name b.body)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_depth) λdep (Apps.Kind.Checker.bind (Apps.Kind.Checker.extended (Apps.Kind.Checker.equal (a.body (Apps.Kind.Term.var a.orig a.name dep)) (b.body (Apps.Kind.Term.var b.orig b.name dep))) (Apps.Kind.Axiom.Null) (Apps.Kind.Axiom.Null) []) λbody (Apps.Kind.Checker.pure body))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.app a.orig a.func a.argm) (Apps.Kind.Term.app b.orig b.func b.argm)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.func b.func) λfunc (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.argm b.argm) λargm (Apps.Kind.Checker.pure (Data.Bool.and func argm)))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.let a.orig a.name a.expr a.body) (Apps.Kind.Term.let b.orig b.name b.expr b.body)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_depth) λdep (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.expr b.expr) λexpr (Apps.Kind.Checker.bind (Apps.Kind.Checker.extended (Apps.Kind.Checker.equal (a.body (Apps.Kind.Term.var a.orig a.name dep)) (b.body (Apps.Kind.Term.var b.orig b.name dep))) (Apps.Kind.Axiom.Null) (Apps.Kind.Axiom.Null) []) λbody (Apps.Kind.Checker.pure (Data.Bool.and expr body))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ann a.orig a.expr a.type) (Apps.Kind.Term.ann b.orig b.expr b.type)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.expr b.expr) λfunc (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.type b.type) λtype (Apps.Kind.Checker.pure (Data.Bool.and func type)))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.sub a.orig a.name a.indx a.redx a.expr) (Apps.Kind.Term.sub b.orig b.name b.indx b.redx b.expr)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.expr b.expr) λfunc (Apps.Kind.Checker.pure func)) +(Apps.Kind.Checker.equal (Apps.Kind.Term.U60 a.orig) (Apps.Kind.Term.U60 b.orig)) = (Apps.Kind.Checker.pure (Data.Bool.true)) +(Apps.Kind.Checker.equal (Apps.Kind.Term.u60 a.orig a.num) (Apps.Kind.Term.u60 b.orig b.num)) = (Apps.Kind.Checker.pure (Data.U60.equal a.num b.num)) +(Apps.Kind.Checker.equal (Apps.Kind.Term.op2 a.orig a.op a.val0 a.val1) (Apps.Kind.Term.op2 b.orig b.op b.val0 b.val1)) = let op = (Apps.Kind.Operator.equal a.op b.op); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.val0 b.val0) λval0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.val1 b.val1) λval1 (Apps.Kind.Checker.pure (Data.Bool.and op (Data.Bool.and val0 val1))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.hol a.orig a.numb) (Apps.Kind.Term.hol b.orig b.numb)) = (Data.Bool.if (Data.U60.equal a.numb b.numb) (Apps.Kind.Checker.pure (Data.Bool.true)) (Apps.Kind.Checker.equal.hol a.orig a.numb (Apps.Kind.Term.hol b.orig b.numb))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.hol a.orig a.numb) b) = (Apps.Kind.Checker.equal.hol a.orig a.numb b) +(Apps.Kind.Checker.equal b (Apps.Kind.Term.hol a.orig a.numb)) = (Apps.Kind.Checker.equal.hol a.orig a.numb b) +(Apps.Kind.Checker.equal (Apps.Kind.Term.var a.orig a.name a.idx) b) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_right_hand_side) λrhs (Apps.Kind.Checker.equal.var rhs a.orig a.name a.idx b)) +(Apps.Kind.Checker.equal b (Apps.Kind.Term.var a.orig a.name a.idx)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_right_hand_side) λrhs (Apps.Kind.Checker.equal.var rhs a.orig a.name a.idx b)) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct0 a.ctid a.orig) (Apps.Kind.Term.ct0 b.ctid b.orig)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.pure ctid) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct1 a.ctid a.orig a.x0) (Apps.Kind.Term.ct1 b.ctid b.orig b.x0)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.pure (Data.Bool.and ctid x0))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct2 a.ctid a.orig a.x0 a.x1) (Apps.Kind.Term.ct2 b.ctid b.orig b.x0 b.x1)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.pure (Data.Bool.and ctid (Data.Bool.and x0 x1))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct3 a.ctid a.orig a.x0 a.x1 a.x2) (Apps.Kind.Term.ct3 b.ctid b.orig b.x0 b.x1 b.x2)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.pure (Data.Bool.and ctid (Data.Bool.and x0 (Data.Bool.and x1 x2))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct4 a.ctid a.orig a.x0 a.x1 a.x2 a.x3) (Apps.Kind.Term.ct4 b.ctid b.orig b.x0 b.x1 b.x2 b.x3)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.pure (Data.Bool.and ctid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 x3))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct5 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4) (Apps.Kind.Term.ct5 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.pure (Data.Bool.and ctid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 x4))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct6 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5) (Apps.Kind.Term.ct6 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.pure (Data.Bool.and ctid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 x5))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct7 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6) (Apps.Kind.Term.ct7 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.pure (Data.Bool.and ctid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 x6))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct8 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7) (Apps.Kind.Term.ct8 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.pure (Data.Bool.and ctid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 x7))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct9 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8) (Apps.Kind.Term.ct9 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x8 b.x8) λx8 (Apps.Kind.Checker.pure (Data.Bool.and ctid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 (Data.Bool.and x7 x8))))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct10 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9) (Apps.Kind.Term.ct10 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x8 b.x8) λx8 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x9 b.x9) λx9 (Apps.Kind.Checker.pure (Data.Bool.and ctid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 (Data.Bool.and x7 (Data.Bool.and x8 x9))))))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct11 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10) (Apps.Kind.Term.ct11 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x8 b.x8) λx8 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x9 b.x9) λx9 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x10 b.x10) λx10 (Apps.Kind.Checker.pure (Data.Bool.and ctid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 (Data.Bool.and x7 (Data.Bool.and x8 (Data.Bool.and x9 x10))))))))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct12 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11) (Apps.Kind.Term.ct12 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x8 b.x8) λx8 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x9 b.x9) λx9 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x10 b.x10) λx10 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x11 b.x11) λx11 (Apps.Kind.Checker.pure (Data.Bool.and ctid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 (Data.Bool.and x7 (Data.Bool.and x8 (Data.Bool.and x9 (Data.Bool.and x10 x11))))))))))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct13 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11 a.x12) (Apps.Kind.Term.ct13 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11 b.x12)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x8 b.x8) λx8 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x9 b.x9) λx9 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x10 b.x10) λx10 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x11 b.x11) λx11 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x12 b.x12) λx12 (Apps.Kind.Checker.pure (Data.Bool.and ctid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 (Data.Bool.and x7 (Data.Bool.and x8 (Data.Bool.and x9 (Data.Bool.and x10 (Data.Bool.and x11 x12))))))))))))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct14 a.ctid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11 a.x12 a.x13) (Apps.Kind.Term.ct14 b.ctid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11 b.x12 b.x13)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x8 b.x8) λx8 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x9 b.x9) λx9 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x10 b.x10) λx10 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x11 b.x11) λx11 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x12 b.x12) λx12 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x13 b.x13) λx13 (Apps.Kind.Checker.pure (Data.Bool.and ctid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 (Data.Bool.and x7 (Data.Bool.and x8 (Data.Bool.and x9 (Data.Bool.and x10 (Data.Bool.and x11 (Data.Bool.and x12 x13))))))))))))))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct15 a.ctid a.orig a.args) (Apps.Kind.Term.ct15 b.ctid b.orig b.args)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.args b.args) λxargs (Apps.Kind.Checker.pure (Data.Bool.and ctid xargs))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.ct16 a.ctid a.orig a.args) (Apps.Kind.Term.ct16 b.ctid b.orig b.args)) = let ctid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.ctid) (Apps.Kind.Axiom.HashOf b.ctid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.args b.args) λxargs (Apps.Kind.Checker.pure (Data.Bool.and ctid xargs))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.args15 a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11 a.x12 a.x13 a.x14) (Apps.Kind.Term.args15 b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11 b.x12 b.x13 b.x14)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x8 b.x8) λx8 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x9 b.x9) λx9 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x10 b.x10) λx10 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x11 b.x11) λx11 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x12 b.x12) λx12 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x13 b.x13) λx13 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x14 b.x14) λx14 (Apps.Kind.Checker.pure (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 (Data.Bool.and x7 (Data.Bool.and x8 (Data.Bool.and x9 (Data.Bool.and x10 (Data.Bool.and x11 (Data.Bool.and x12 (Data.Bool.and x13 x14)))))))))))))))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.args16 a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11 a.x12 a.x13 a.x14 a.x15) (Apps.Kind.Term.args16 b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11 b.x12 b.x13 b.x14 b.x15)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x8 b.x8) λx8 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x9 b.x9) λx9 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x10 b.x10) λx10 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x11 b.x11) λx11 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x12 b.x12) λx12 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x13 b.x13) λx13 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x14 b.x14) λx14 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x15 b.x15) λx15 (Apps.Kind.Checker.pure (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 (Data.Bool.and x7 (Data.Bool.and x8 (Data.Bool.and x9 (Data.Bool.and x10 (Data.Bool.and x11 (Data.Bool.and x12 (Data.Bool.and x13 (Data.Bool.and x14 x15)))))))))))))))))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn0 a.fnid a.orig) (Apps.Kind.Term.fn0 b.fnid b.orig)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.pure fnid) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn1 a.fnid a.orig a.x0) (Apps.Kind.Term.fn1 b.fnid b.orig b.x0)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.pure (Data.Bool.and fnid x0))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn2 a.fnid a.orig a.x0 a.x1) (Apps.Kind.Term.fn2 b.fnid b.orig b.x0 b.x1)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.pure (Data.Bool.and fnid (Data.Bool.and x0 x1))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn3 a.fnid a.orig a.x0 a.x1 a.x2) (Apps.Kind.Term.fn3 b.fnid b.orig b.x0 b.x1 b.x2)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.pure (Data.Bool.and fnid (Data.Bool.and x0 (Data.Bool.and x1 x2))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn4 a.fnid a.orig a.x0 a.x1 a.x2 a.x3) (Apps.Kind.Term.fn4 b.fnid b.orig b.x0 b.x1 b.x2 b.x3)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.pure (Data.Bool.and fnid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 x3))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn5 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4) (Apps.Kind.Term.fn5 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.pure (Data.Bool.and fnid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 x4))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn6 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5) (Apps.Kind.Term.fn6 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.pure (Data.Bool.and fnid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 x5))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn7 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6) (Apps.Kind.Term.fn7 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.pure (Data.Bool.and fnid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 x6))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn8 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7) (Apps.Kind.Term.fn8 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.pure (Data.Bool.and fnid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 x7))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn9 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8) (Apps.Kind.Term.fn9 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x8 b.x8) λx8 (Apps.Kind.Checker.pure (Data.Bool.and fnid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 (Data.Bool.and x7 x8))))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn10 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9) (Apps.Kind.Term.fn10 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x8 b.x8) λx8 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x9 b.x9) λx9 (Apps.Kind.Checker.pure (Data.Bool.and fnid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 (Data.Bool.and x7 (Data.Bool.and x8 x9))))))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn11 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10) (Apps.Kind.Term.fn11 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x8 b.x8) λx8 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x9 b.x9) λx9 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x10 b.x10) λx10 (Apps.Kind.Checker.pure (Data.Bool.and fnid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 (Data.Bool.and x7 (Data.Bool.and x8 (Data.Bool.and x9 x10))))))))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn12 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11) (Apps.Kind.Term.fn12 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x8 b.x8) λx8 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x9 b.x9) λx9 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x10 b.x10) λx10 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x11 b.x11) λx11 (Apps.Kind.Checker.pure (Data.Bool.and fnid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 (Data.Bool.and x7 (Data.Bool.and x8 (Data.Bool.and x9 (Data.Bool.and x10 x11))))))))))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn13 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11 a.x12) (Apps.Kind.Term.fn13 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11 b.x12)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x8 b.x8) λx8 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x9 b.x9) λx9 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x10 b.x10) λx10 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x11 b.x11) λx11 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x12 b.x12) λx12 (Apps.Kind.Checker.pure (Data.Bool.and fnid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 (Data.Bool.and x7 (Data.Bool.and x8 (Data.Bool.and x9 (Data.Bool.and x10 (Data.Bool.and x11 x12))))))))))))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn14 a.fnid a.orig a.x0 a.x1 a.x2 a.x3 a.x4 a.x5 a.x6 a.x7 a.x8 a.x9 a.x10 a.x11 a.x12 a.x13) (Apps.Kind.Term.fn14 b.fnid b.orig b.x0 b.x1 b.x2 b.x3 b.x4 b.x5 b.x6 b.x7 b.x8 b.x9 b.x10 b.x11 b.x12 b.x13)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x0 b.x0) λx0 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x1 b.x1) λx1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x2 b.x2) λx2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x3 b.x3) λx3 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x4 b.x4) λx4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x5 b.x5) λx5 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x6 b.x6) λx6 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x7 b.x7) λx7 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x8 b.x8) λx8 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x9 b.x9) λx9 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x10 b.x10) λx10 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x11 b.x11) λx11 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x12 b.x12) λx12 (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.x13 b.x13) λx13 (Apps.Kind.Checker.pure (Data.Bool.and fnid (Data.Bool.and x0 (Data.Bool.and x1 (Data.Bool.and x2 (Data.Bool.and x3 (Data.Bool.and x4 (Data.Bool.and x5 (Data.Bool.and x6 (Data.Bool.and x7 (Data.Bool.and x8 (Data.Bool.and x9 (Data.Bool.and x10 (Data.Bool.and x11 (Data.Bool.and x12 x13))))))))))))))))))))))))))))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn15 a.fnid a.orig a.args) (Apps.Kind.Term.fn15 b.fnid b.orig b.args)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.args b.args) λxargs (Apps.Kind.Checker.pure (Data.Bool.and fnid xargs))) +(Apps.Kind.Checker.equal (Apps.Kind.Term.fn16 a.fnid a.orig a.args) (Apps.Kind.Term.fn16 b.fnid b.orig b.args)) = let fnid = (Data.U60.equal (Apps.Kind.Axiom.HashOf a.fnid) (Apps.Kind.Axiom.HashOf b.fnid)); (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal a.args b.args) λxargs (Apps.Kind.Checker.pure (Data.Bool.and fnid xargs))) +(Apps.Kind.Checker.equal a b) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_subst) λsub (Data.Bool.if (Data.Bool.or (Apps.Kind.Term.fillable a sub) (Apps.Kind.Term.fillable b sub)) (Apps.Kind.Checker.equal (Apps.Kind.Term.fill a sub) (Apps.Kind.Term.fill b sub)) (Apps.Kind.Checker.pure (Data.Bool.false)))) +(Data.Bool.or (Data.Bool.true) b) = (Data.Bool.true) +(Data.Bool.or (Data.Bool.false) b) = b +(Apps.Kind.Term.fillable term (Apps.Kind.Subst.end)) = (Data.Bool.false) +(Apps.Kind.Term.fillable (Apps.Kind.Term.typ orig) sub) = (Data.Bool.false) +(Apps.Kind.Term.fillable (Apps.Kind.Term.var orig name index) sub) = (Data.Bool.false) +(Apps.Kind.Term.fillable (Apps.Kind.Term.hlp orig) sub) = (Data.Bool.false) +(Apps.Kind.Term.fillable (Apps.Kind.Term.U60 orig) sub) = (Data.Bool.false) +(Apps.Kind.Term.fillable (Apps.Kind.Term.u60 orig num) sub) = (Data.Bool.false) +(Apps.Kind.Term.fillable (Apps.Kind.Term.F60 orig) sub) = (Data.Bool.false) +(Apps.Kind.Term.fillable (Apps.Kind.Term.f60 orig num) sub) = (Data.Bool.false) +(Apps.Kind.Term.fillable (Apps.Kind.Term.all orig name typ body) sub) = (Data.Bool.or (Apps.Kind.Term.fillable typ sub) (Apps.Kind.Term.fillable (body (Apps.Kind.Term.hlp 0)) sub)) +(Apps.Kind.Term.fillable (Apps.Kind.Term.lam orig name body) sub) = (Apps.Kind.Term.fillable (body (Apps.Kind.Term.hlp 0)) sub) +(Apps.Kind.Term.fillable (Apps.Kind.Term.app orig expr typ) sub) = (Data.Bool.or (Apps.Kind.Term.fillable expr sub) (Apps.Kind.Term.fillable typ sub)) +(Apps.Kind.Term.fillable (Apps.Kind.Term.let orig name expr body) sub) = (Data.Bool.or (Apps.Kind.Term.fillable expr sub) (Apps.Kind.Term.fillable (body (Apps.Kind.Term.hlp 0)) sub)) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ann orig expr typ) sub) = (Data.Bool.or (Apps.Kind.Term.fillable expr sub) (Apps.Kind.Term.fillable typ sub)) +(Apps.Kind.Term.fillable (Apps.Kind.Term.sub orig name indx redx expr) sub) = (Apps.Kind.Term.fillable expr sub) +(Apps.Kind.Term.fillable (Apps.Kind.Term.op2 orig op left right) sub) = (Data.Bool.or (Apps.Kind.Term.fillable left sub) (Apps.Kind.Term.fillable right sub)) +(Apps.Kind.Term.fillable (Apps.Kind.Term.hol orig numb) sub) = (Data.Maybe.is_some (Apps.Kind.Subst.look sub numb)) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct0 ctid orig) sub) = (Data.Bool.false) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct1 ctid orig x0) sub) = (Apps.Kind.Term.fillable x0 sub) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct2 ctid orig x0 x1) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Apps.Kind.Term.fillable x1 sub)) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct3 ctid orig x0 x1 x2) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Apps.Kind.Term.fillable x2 sub))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct4 ctid orig x0 x1 x2 x3) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Apps.Kind.Term.fillable x3 sub)))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Apps.Kind.Term.fillable x4 sub))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Apps.Kind.Term.fillable x5 sub)))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Apps.Kind.Term.fillable x6 sub))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Apps.Kind.Term.fillable x7 sub)))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Data.Bool.or (Apps.Kind.Term.fillable x7 sub) (Apps.Kind.Term.fillable x8 sub))))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Data.Bool.or (Apps.Kind.Term.fillable x7 sub) (Data.Bool.or (Apps.Kind.Term.fillable x8 sub) (Apps.Kind.Term.fillable x9 sub)))))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Data.Bool.or (Apps.Kind.Term.fillable x7 sub) (Data.Bool.or (Apps.Kind.Term.fillable x8 sub) (Data.Bool.or (Apps.Kind.Term.fillable x9 sub) (Apps.Kind.Term.fillable x10 sub))))))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Data.Bool.or (Apps.Kind.Term.fillable x7 sub) (Data.Bool.or (Apps.Kind.Term.fillable x8 sub) (Data.Bool.or (Apps.Kind.Term.fillable x9 sub) (Data.Bool.or (Apps.Kind.Term.fillable x10 sub) (Apps.Kind.Term.fillable x11 sub)))))))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Data.Bool.or (Apps.Kind.Term.fillable x7 sub) (Data.Bool.or (Apps.Kind.Term.fillable x8 sub) (Data.Bool.or (Apps.Kind.Term.fillable x9 sub) (Data.Bool.or (Apps.Kind.Term.fillable x10 sub) (Data.Bool.or (Apps.Kind.Term.fillable x11 sub) (Apps.Kind.Term.fillable x12 sub))))))))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Data.Bool.or (Apps.Kind.Term.fillable x7 sub) (Data.Bool.or (Apps.Kind.Term.fillable x8 sub) (Data.Bool.or (Apps.Kind.Term.fillable x9 sub) (Data.Bool.or (Apps.Kind.Term.fillable x10 sub) (Data.Bool.or (Apps.Kind.Term.fillable x11 sub) (Data.Bool.or (Apps.Kind.Term.fillable x12 sub) (Apps.Kind.Term.fillable x13 sub)))))))))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct15 fnid orig args) sub) = (Apps.Kind.Term.fillable args sub) +(Apps.Kind.Term.fillable (Apps.Kind.Term.ct16 fnid orig args) sub) = (Apps.Kind.Term.fillable args sub) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn0 fnid orig) sub) = (Data.Bool.false) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn1 fnid orig x0) sub) = (Apps.Kind.Term.fillable x0 sub) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn2 fnid orig x0 x1) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Apps.Kind.Term.fillable x1 sub)) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn3 fnid orig x0 x1 x2) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Apps.Kind.Term.fillable x2 sub))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn4 fnid orig x0 x1 x2 x3) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Apps.Kind.Term.fillable x3 sub)))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Apps.Kind.Term.fillable x4 sub))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Apps.Kind.Term.fillable x5 sub)))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Apps.Kind.Term.fillable x6 sub))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Apps.Kind.Term.fillable x7 sub)))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Data.Bool.or (Apps.Kind.Term.fillable x7 sub) (Apps.Kind.Term.fillable x8 sub))))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Data.Bool.or (Apps.Kind.Term.fillable x7 sub) (Data.Bool.or (Apps.Kind.Term.fillable x8 sub) (Apps.Kind.Term.fillable x9 sub)))))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Data.Bool.or (Apps.Kind.Term.fillable x7 sub) (Data.Bool.or (Apps.Kind.Term.fillable x8 sub) (Data.Bool.or (Apps.Kind.Term.fillable x9 sub) (Apps.Kind.Term.fillable x10 sub))))))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Data.Bool.or (Apps.Kind.Term.fillable x7 sub) (Data.Bool.or (Apps.Kind.Term.fillable x8 sub) (Data.Bool.or (Apps.Kind.Term.fillable x9 sub) (Data.Bool.or (Apps.Kind.Term.fillable x10 sub) (Apps.Kind.Term.fillable x11 sub)))))))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Data.Bool.or (Apps.Kind.Term.fillable x7 sub) (Data.Bool.or (Apps.Kind.Term.fillable x8 sub) (Data.Bool.or (Apps.Kind.Term.fillable x9 sub) (Data.Bool.or (Apps.Kind.Term.fillable x10 sub) (Data.Bool.or (Apps.Kind.Term.fillable x11 sub) (Apps.Kind.Term.fillable x12 sub))))))))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Data.Bool.or (Apps.Kind.Term.fillable x7 sub) (Data.Bool.or (Apps.Kind.Term.fillable x8 sub) (Data.Bool.or (Apps.Kind.Term.fillable x9 sub) (Data.Bool.or (Apps.Kind.Term.fillable x10 sub) (Data.Bool.or (Apps.Kind.Term.fillable x11 sub) (Data.Bool.or (Apps.Kind.Term.fillable x12 sub) (Apps.Kind.Term.fillable x13 sub)))))))))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn15 fnid orig args) sub) = (Apps.Kind.Term.fillable args sub) +(Apps.Kind.Term.fillable (Apps.Kind.Term.fn16 fnid orig args) sub) = (Apps.Kind.Term.fillable args sub) +(Apps.Kind.Term.fillable (Apps.Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Data.Bool.or (Apps.Kind.Term.fillable x7 sub) (Data.Bool.or (Apps.Kind.Term.fillable x8 sub) (Data.Bool.or (Apps.Kind.Term.fillable x9 sub) (Data.Bool.or (Apps.Kind.Term.fillable x10 sub) (Data.Bool.or (Apps.Kind.Term.fillable x11 sub) (Data.Bool.or (Apps.Kind.Term.fillable x12 sub) (Data.Bool.or (Apps.Kind.Term.fillable x13 sub) (Apps.Kind.Term.fillable x14 sub))))))))))))))) +(Apps.Kind.Term.fillable (Apps.Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15) sub) = (Data.Bool.or (Apps.Kind.Term.fillable x0 sub) (Data.Bool.or (Apps.Kind.Term.fillable x1 sub) (Data.Bool.or (Apps.Kind.Term.fillable x2 sub) (Data.Bool.or (Apps.Kind.Term.fillable x3 sub) (Data.Bool.or (Apps.Kind.Term.fillable x4 sub) (Data.Bool.or (Apps.Kind.Term.fillable x5 sub) (Data.Bool.or (Apps.Kind.Term.fillable x6 sub) (Data.Bool.or (Apps.Kind.Term.fillable x7 sub) (Data.Bool.or (Apps.Kind.Term.fillable x8 sub) (Data.Bool.or (Apps.Kind.Term.fillable x9 sub) (Data.Bool.or (Apps.Kind.Term.fillable x10 sub) (Data.Bool.or (Apps.Kind.Term.fillable x11 sub) (Data.Bool.or (Apps.Kind.Term.fillable x12 sub) (Data.Bool.or (Apps.Kind.Term.fillable x13 sub) (Data.Bool.or (Apps.Kind.Term.fillable x14 sub) (Apps.Kind.Term.fillable x15 sub)))))))))))))))) +(Apps.Kind.Subst.look (Apps.Kind.Subst.end) 0) = (Data.Maybe.none) +(Apps.Kind.Subst.look (Apps.Kind.Subst.unfilled rest) 0) = (Data.Maybe.none) +(Apps.Kind.Subst.look (Apps.Kind.Subst.sub term rest) 0) = (Data.Maybe.some term) +(Apps.Kind.Subst.look (Apps.Kind.Subst.end) n) = (Data.Maybe.none) +(Apps.Kind.Subst.look (Apps.Kind.Subst.unfilled rest) n) = (Apps.Kind.Subst.look rest (- n 1)) +(Apps.Kind.Subst.look (Apps.Kind.Subst.sub term rest) n) = (Apps.Kind.Subst.look rest (- n 1)) +(Data.Maybe.is_some (Data.Maybe.none)) = (Data.Bool.false) +(Data.Maybe.is_some (Data.Maybe.some v)) = (Data.Bool.true) +(Apps.Kind.Checker.equal.hol a.orig a.numb b) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.look a.numb) λgot (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal.hol.val got a.orig a.numb b) λres (Apps.Kind.Checker.pure res))) +(Apps.Kind.Checker.equal.hol.val (Data.Maybe.none) orig numb b) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.fill numb b) λx_1 (Apps.Kind.Checker.pure (Data.Bool.true))) +(Apps.Kind.Checker.equal.hol.val (Data.Maybe.some val) orig numb b) = (Apps.Kind.Checker.equal val b) +(Apps.Kind.Checker.fill index val) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked context depth rhs (Apps.Kind.Subst.fill subst index val) eqts errs (Data.Unit.new)) +(Apps.Kind.Subst.fill (Apps.Kind.Subst.end) 0 term) = (Apps.Kind.Subst.sub term (Apps.Kind.Subst.end)) +(Apps.Kind.Subst.fill (Apps.Kind.Subst.unfilled rest) 0 term) = (Apps.Kind.Subst.sub term rest) +(Apps.Kind.Subst.fill (Apps.Kind.Subst.sub lost rest) 0 term) = (Apps.Kind.Subst.sub term rest) +(Apps.Kind.Subst.fill (Apps.Kind.Subst.end) n term) = (Apps.Kind.Subst.unfilled (Apps.Kind.Subst.fill (Apps.Kind.Subst.end) (- n 1) term)) +(Apps.Kind.Subst.fill (Apps.Kind.Subst.unfilled rest) n term) = (Apps.Kind.Subst.unfilled (Apps.Kind.Subst.fill rest (- n 1) term)) +(Apps.Kind.Subst.fill (Apps.Kind.Subst.sub keep rest) n term) = (Apps.Kind.Subst.sub keep (Apps.Kind.Subst.fill rest (- n 1) term)) +(Apps.Kind.Checker.look index) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked context depth rhs subst eqts errs (Apps.Kind.Subst.look subst index)) +(Apps.Kind.Term.fill term (Apps.Kind.Subst.end)) = term +(Apps.Kind.Term.fill (Apps.Kind.Term.typ orig) sub) = (Apps.Kind.Term.typ orig) +(Apps.Kind.Term.fill (Apps.Kind.Term.var orig name index) sub) = (Apps.Kind.Term.var orig name index) +(Apps.Kind.Term.fill (Apps.Kind.Term.all orig name typ body) sub) = (Apps.Kind.Term.all orig name (Apps.Kind.Term.fill typ sub) λx (Apps.Kind.Term.fill (body x) sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.lam orig name body) sub) = (Apps.Kind.Term.lam orig name λx (Apps.Kind.Term.fill (body x) sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.let orig name expr body) sub) = (Apps.Kind.Term.eval_let orig name (Apps.Kind.Term.fill expr sub) λx (Apps.Kind.Term.fill (body x) sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ann orig expr typ) sub) = (Apps.Kind.Term.eval_ann orig (Apps.Kind.Term.fill expr sub) (Apps.Kind.Term.fill typ sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.sub orig name indx redx expr) sub) = (Apps.Kind.Term.eval_sub orig name indx redx (Apps.Kind.Term.fill expr sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.app orig expr typ) sub) = (Apps.Kind.Term.eval_app orig (Apps.Kind.Term.fill expr sub) (Apps.Kind.Term.fill typ sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.hlp orig) sub) = (Apps.Kind.Term.hlp orig) +(Apps.Kind.Term.fill (Apps.Kind.Term.U60 orig) sub) = (Apps.Kind.Term.U60 orig) +(Apps.Kind.Term.fill (Apps.Kind.Term.F60 orig) sub) = (Apps.Kind.Term.F60 orig) +(Apps.Kind.Term.fill (Apps.Kind.Term.f60 orig num) sub) = (Apps.Kind.Term.f60 orig num) +(Apps.Kind.Term.fill (Apps.Kind.Term.u60 orig num) sub) = (Apps.Kind.Term.u60 orig num) +(Apps.Kind.Term.fill (Apps.Kind.Term.op2 orig op left right) sub) = (Apps.Kind.Term.op2 orig op (Apps.Kind.Term.fill left sub) (Apps.Kind.Term.fill right sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct0 ctid orig) sub) = (Apps.Kind.Term.ct0 ctid orig) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct1 ctid orig x0) sub) = (Apps.Kind.Term.ct1 ctid orig (Apps.Kind.Term.fill x0 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct2 ctid orig x0 x1) sub) = (Apps.Kind.Term.ct2 ctid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct3 ctid orig x0 x1 x2) sub) = (Apps.Kind.Term.ct3 ctid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct4 ctid orig x0 x1 x2 x3) sub) = (Apps.Kind.Term.ct4 ctid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4) sub) = (Apps.Kind.Term.ct5 ctid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5) sub) = (Apps.Kind.Term.ct6 ctid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6) sub) = (Apps.Kind.Term.ct7 ctid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7) sub) = (Apps.Kind.Term.ct8 ctid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) sub) = (Apps.Kind.Term.ct9 ctid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub) (Apps.Kind.Term.fill x8 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) sub) = (Apps.Kind.Term.ct10 ctid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub) (Apps.Kind.Term.fill x8 sub) (Apps.Kind.Term.fill x9 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) sub) = (Apps.Kind.Term.ct11 ctid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub) (Apps.Kind.Term.fill x8 sub) (Apps.Kind.Term.fill x9 sub) (Apps.Kind.Term.fill x10 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) sub) = (Apps.Kind.Term.ct12 ctid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub) (Apps.Kind.Term.fill x8 sub) (Apps.Kind.Term.fill x9 sub) (Apps.Kind.Term.fill x10 sub) (Apps.Kind.Term.fill x11 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) sub) = (Apps.Kind.Term.ct13 ctid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub) (Apps.Kind.Term.fill x8 sub) (Apps.Kind.Term.fill x9 sub) (Apps.Kind.Term.fill x10 sub) (Apps.Kind.Term.fill x11 sub) (Apps.Kind.Term.fill x12 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) sub) = (Apps.Kind.Term.ct14 ctid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub) (Apps.Kind.Term.fill x8 sub) (Apps.Kind.Term.fill x9 sub) (Apps.Kind.Term.fill x10 sub) (Apps.Kind.Term.fill x11 sub) (Apps.Kind.Term.fill x12 sub) (Apps.Kind.Term.fill x13 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct15 ctid orig x0) sub) = (Apps.Kind.Term.ct15 ctid orig (Apps.Kind.Term.fill x0 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.ct16 ctid orig x0) sub) = (Apps.Kind.Term.ct16 ctid orig (Apps.Kind.Term.fill x0 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn0 fnid orig) sub) = (Apps.Kind.Term.FN0 fnid orig) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn1 fnid orig x0) sub) = (Apps.Kind.Term.FN1 fnid orig (Apps.Kind.Term.fill x0 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn2 fnid orig x0 x1) sub) = (Apps.Kind.Term.FN2 fnid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn3 fnid orig x0 x1 x2) sub) = (Apps.Kind.Term.FN3 fnid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn4 fnid orig x0 x1 x2 x3) sub) = (Apps.Kind.Term.FN4 fnid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4) sub) = (Apps.Kind.Term.FN5 fnid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5) sub) = (Apps.Kind.Term.FN6 fnid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6) sub) = (Apps.Kind.Term.FN7 fnid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7) sub) = (Apps.Kind.Term.FN8 fnid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8) sub) = (Apps.Kind.Term.FN9 fnid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub) (Apps.Kind.Term.fill x8 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) sub) = (Apps.Kind.Term.FN10 fnid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub) (Apps.Kind.Term.fill x8 sub) (Apps.Kind.Term.fill x9 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) sub) = (Apps.Kind.Term.FN11 fnid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub) (Apps.Kind.Term.fill x8 sub) (Apps.Kind.Term.fill x9 sub) (Apps.Kind.Term.fill x10 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) sub) = (Apps.Kind.Term.FN12 fnid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub) (Apps.Kind.Term.fill x8 sub) (Apps.Kind.Term.fill x9 sub) (Apps.Kind.Term.fill x10 sub) (Apps.Kind.Term.fill x11 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) sub) = (Apps.Kind.Term.FN13 fnid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub) (Apps.Kind.Term.fill x8 sub) (Apps.Kind.Term.fill x9 sub) (Apps.Kind.Term.fill x10 sub) (Apps.Kind.Term.fill x11 sub) (Apps.Kind.Term.fill x12 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) sub) = (Apps.Kind.Term.FN14 fnid orig (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub) (Apps.Kind.Term.fill x8 sub) (Apps.Kind.Term.fill x9 sub) (Apps.Kind.Term.fill x10 sub) (Apps.Kind.Term.fill x11 sub) (Apps.Kind.Term.fill x12 sub) (Apps.Kind.Term.fill x13 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn15 ctid orig x0) sub) = (Apps.Kind.Term.FN15 ctid orig (Apps.Kind.Term.fill x0 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.fn16 ctid orig x0) sub) = (Apps.Kind.Term.FN16 ctid orig (Apps.Kind.Term.fill x0 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14) sub) = (Apps.Kind.Term.args15 (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub) (Apps.Kind.Term.fill x8 sub) (Apps.Kind.Term.fill x9 sub) (Apps.Kind.Term.fill x10 sub) (Apps.Kind.Term.fill x11 sub) (Apps.Kind.Term.fill x12 sub) (Apps.Kind.Term.fill x13 sub) (Apps.Kind.Term.fill x14 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15) sub) = (Apps.Kind.Term.args16 (Apps.Kind.Term.fill x0 sub) (Apps.Kind.Term.fill x1 sub) (Apps.Kind.Term.fill x2 sub) (Apps.Kind.Term.fill x3 sub) (Apps.Kind.Term.fill x4 sub) (Apps.Kind.Term.fill x5 sub) (Apps.Kind.Term.fill x6 sub) (Apps.Kind.Term.fill x7 sub) (Apps.Kind.Term.fill x8 sub) (Apps.Kind.Term.fill x9 sub) (Apps.Kind.Term.fill x10 sub) (Apps.Kind.Term.fill x11 sub) (Apps.Kind.Term.fill x12 sub) (Apps.Kind.Term.fill x13 sub) (Apps.Kind.Term.fill x14 sub) (Apps.Kind.Term.fill x15 sub)) +(Apps.Kind.Term.fill (Apps.Kind.Term.hol orig numb) sub) = let substRes = (Apps.Kind.Subst.look sub numb); (Data.Maybe.match substRes (Apps.Kind.Term.hol orig numb) λvalue (Apps.Kind.Term.fill value sub)) +(Apps.Kind.Checker.equal.var (Data.Bool.false) orig name idx b) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.add_value idx b) λx_1 (Apps.Kind.Checker.pure (Data.Bool.true))) +(Apps.Kind.Checker.equal.var (Data.Bool.true) a.orig a.name a.idx (Apps.Kind.Term.var b.orig b.name b.idx)) = (Data.Bool.if (Data.U60.equal a.idx b.idx) (Apps.Kind.Checker.pure (Data.Bool.true)) (Apps.Kind.Checker.bind (Apps.Kind.Checker.find a.idx [] λn λt λv v) λa.val (Apps.Kind.Checker.bind (Apps.Kind.Checker.find b.idx [] λn λt λv v) λb.val (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal.var.try_values a.val (Apps.Kind.Term.var b.orig b.name b.idx)) λa.chk (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal.var.try_values b.val (Apps.Kind.Term.var a.orig a.name a.idx)) λb.chk (Apps.Kind.Checker.pure (Data.Bool.or a.chk b.chk))))))) +(Apps.Kind.Checker.equal.var (Data.Bool.true) a.orig a.name a.idx b) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_subst) λsub (Data.Bool.if (Apps.Kind.Term.fillable b sub) (Apps.Kind.Checker.equal (Apps.Kind.Term.var a.orig a.name a.idx) (Apps.Kind.Term.fill b sub)) (Apps.Kind.Checker.bind (Apps.Kind.Checker.find a.idx [] λn λt λv v) λa.val (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal.var.try_values a.val b) λres (Apps.Kind.Checker.pure res))))) +(Apps.Kind.Checker.add_value idx val) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked (Apps.Kind.Context.add_value context idx val) depth rhs subst eqts errs (Data.Unit.new)) +(Apps.Kind.Context.add_value (Apps.Kind.Context.entry name type vals rest) 0 val) = (Apps.Kind.Context.entry name type (Data.List.cons val vals) rest) +(Apps.Kind.Context.add_value (Apps.Kind.Context.entry name type vals rest) n val) = (Apps.Kind.Context.entry name type vals (Apps.Kind.Context.add_value rest (- n 1) val)) +(Apps.Kind.Context.add_value (Apps.Kind.Context.empty) n val) = (Apps.Kind.Context.empty) +(Apps.Kind.Checker.equal.var.try_values [] term) = (Apps.Kind.Checker.pure (Data.Bool.false)) +(Apps.Kind.Checker.equal.var.try_values (Data.List.cons x xs) term) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal x term) λhead (Data.Bool.if head (Apps.Kind.Checker.pure (Data.Bool.true)) (Apps.Kind.Checker.equal.var.try_values xs term))) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.and) (Apps.Kind.Operator.and)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.sub) (Apps.Kind.Operator.sub)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.mul) (Apps.Kind.Operator.mul)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.div) (Apps.Kind.Operator.div)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.mod) (Apps.Kind.Operator.mod)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.and) (Apps.Kind.Operator.and)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.or) (Apps.Kind.Operator.or)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.xor) (Apps.Kind.Operator.xor)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.shl) (Apps.Kind.Operator.shl)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.shr) (Apps.Kind.Operator.shr)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.ltn) (Apps.Kind.Operator.ltn)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.lte) (Apps.Kind.Operator.lte)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.eql) (Apps.Kind.Operator.eql)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.gte) (Apps.Kind.Operator.gte)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.gtn) (Apps.Kind.Operator.gtn)) = (Data.Bool.true) +(Apps.Kind.Operator.equal (Apps.Kind.Operator.neq) (Apps.Kind.Operator.neq)) = (Data.Bool.true) +(Apps.Kind.Operator.equal a b) = (Data.Bool.false) +(Data.Bool.and (Data.Bool.true) b) = b +(Data.Bool.and (Data.Bool.false) b) = (Data.Bool.false) +(Apps.Kind.Coverage.check fnid) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.set_right_hand_side (Data.Bool.false)) λx_1 let rules = (Apps.Kind.Axiom.RuleOf fnid); let type = (Apps.Kind.Axiom.TypeOf fnid); let size = (Data.Maybe.default (Data.Maybe.map λx (Apps.Kind.Coverage.Rule.size x) (Data.List.head rules)) 0); let new_type = (Apps.Kind.Coverage.Type.from_term type size); let problem = (Apps.Kind.Coverage.Problem.new new_type rules); (Apps.Kind.Checker.bind (Apps.Kind.Coverage.solve problem) λresult (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_context) λctx (Data.Maybe.match result (Apps.Kind.Checker.pure (Data.Unit.new)) λresult.value (Apps.Kind.Checker.fail (Apps.Kind.Error.uncovered_pattern ctx (Apps.Kind.Axiom.OrigOf fnid) result.value)))))) +(Data.Maybe.default (Data.Maybe.none) dflt) = dflt +(Data.Maybe.default (Data.Maybe.some val) dflt) = val +(Apps.Kind.Coverage.solve problem) = (Apps.Kind.Checker.local (Apps.Kind.Coverage.done problem (Apps.Kind.Coverage.if_all (Apps.Kind.Coverage.Problem.type.get problem) λorig_ λname_ λtype λconstraints λbody (Data.Bool.if (Apps.Kind.Coverage.catches problem) (Apps.Kind.Coverage.intro_all type body problem) (Apps.Kind.Coverage.specialize (Apps.Kind.Term.eval type) body problem)) λconstraint (Data.Bool.if (Data.List.is_nil (Apps.Kind.Coverage.Problem.rows.get problem)) (Apps.Kind.Checker.pure (Data.Maybe.some [])) (Apps.Kind.Checker.pure (Data.Maybe.none)))))) +(Apps.Kind.Coverage.done (Apps.Kind.Coverage.Problem.new type rows) or_else) = let result = (Apps.Kind.Coverage.Type.remove_constraints type); let type_res = (Data.Pair.fst result); let constraints = (Data.Pair.snd result); (Apps.Kind.Checker.bind (Apps.Kind.Coverage.solve_constraints constraints) λsolved (Data.Bool.if solved or_else (Apps.Kind.Checker.pure (Data.Maybe.none)))) +(Apps.Kind.Coverage.solve_constraints []) = (Apps.Kind.Checker.pure (Data.Bool.true)) +(Apps.Kind.Coverage.solve_constraints (Data.List.cons pair xs)) = let expected_type = (Data.Pair.snd pair); (Apps.Kind.Checker.bind (Apps.Kind.Checker.infer (Data.Pair.fst pair)) λinfered_type (Apps.Kind.Checker.bind (Apps.Kind.Checker.equal expected_type infered_type) λresult (Data.Bool.if result (Apps.Kind.Coverage.solve_constraints xs) (Apps.Kind.Checker.pure (Data.Bool.false))))) +(Data.Pair.fst (Data.Pair.new fst snd)) = fst +(Data.Pair.snd (Data.Pair.new fst snd)) = snd +(Apps.Kind.Coverage.Type.remove_constraints (Apps.Kind.Coverage.Type.cons orig name typ constraints body)) = (Data.Pair.new (Apps.Kind.Coverage.Type.cons orig name typ [] body) constraints) +(Apps.Kind.Coverage.Type.remove_constraints (Apps.Kind.Coverage.Type.end constraints body)) = (Data.Pair.new (Apps.Kind.Coverage.Type.end [] body) constraints) +(Apps.Kind.Coverage.if_all (Apps.Kind.Coverage.Type.cons orig name typ constraints body) func_if else) = (func_if orig name typ constraints body) +(Apps.Kind.Coverage.if_all (Apps.Kind.Coverage.Type.end constraints body) func_if else) = (else constraints) +(Apps.Kind.Coverage.specialize type body (Apps.Kind.Coverage.Problem.new cur_type rows)) = let problem = (Apps.Kind.Coverage.Problem.new cur_type rows); (Data.Maybe.default (Data.Maybe.bind (Apps.Kind.Coverage.get_name type) λtype_name (Data.Maybe.bind (Apps.Kind.Axiom.Family.Constructors type_name) λconstructors (Data.Maybe.some (Apps.Kind.Coverage.specialize_list type_name constructors type body problem)))) (Apps.Kind.Coverage.intro_or_incomplete type body problem)) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct0 name x_1)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct1 name x_2 x_3)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct2 name x_4 x_5 x_6)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct3 name x_7 x_8 x_9 x_10)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct4 name x_11 x_12 x_13 x_14 x_15)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct5 name x_16 x_17 x_18 x_19 x_20 x_21)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct6 name x_22 x_23 x_24 x_25 x_26 x_27 x_28)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct8 name x_29 x_30 x_31 x_32 x_33 x_34 x_35 x_36 x_37)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct7 name x_38 x_39 x_40 x_41 x_42 x_43 x_44 x_45)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct9 name x_46 x_47 x_48 x_49 x_50 x_51 x_52 x_53 x_54 x_55)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct10 name x_56 x_57 x_58 x_59 x_60 x_61 x_62 x_63 x_64 x_65 x_66)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct11 name x_67 x_68 x_69 x_70 x_71 x_72 x_73 x_74 x_75 x_76 x_77 x_78)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct12 name x_79 x_80 x_81 x_82 x_83 x_84 x_85 x_86 x_87 x_88 x_89 x_90 x_91)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct13 name x_92 x_93 x_94 x_95 x_96 x_97 x_98 x_99 x_100 x_101 x_102 x_103 x_104 x_105)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct14 name x_106 x_107 x_108 x_109 x_110 x_111 x_112 x_113 x_114 x_115 x_116 x_117 x_118 x_119 x_120)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct15 name x_121 x_122)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct16 name x_123 x_124)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.ct16 name x_125 x_126)) = (Data.Maybe.some name) +(Apps.Kind.Coverage.get_name (Apps.Kind.Term.U60 x_127)) = (Data.Maybe.none) +(Apps.Kind.Coverage.get_name x_128) = (Data.Maybe.none) +(Data.Maybe.bind (Data.Maybe.none) mb) = (Data.Maybe.none) +(Data.Maybe.bind (Data.Maybe.some val) mb) = (mb val) +(Apps.Kind.Coverage.specialize_list type_name [] type body problem) = (Apps.Kind.Checker.pure (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_list type_name (Data.List.cons name rest) type body problem) = (Apps.Kind.Checker.bind (Apps.Kind.Coverage.specialize_on type_name name type body problem) λresult (Data.Maybe.match result (Apps.Kind.Coverage.specialize_list type_name rest type body problem) λresult.value (Apps.Kind.Checker.pure (Data.Maybe.some result.value)))) +(Apps.Kind.Coverage.specialize_on type_name constructor_name type body (Apps.Kind.Coverage.Problem.new current_problem_type rows)) = (Data.Maybe.match (Apps.Kind.Coverage.Maker.Mk constructor_name 0 type) (Apps.Kind.Checker.pure (Data.Maybe.some [])) λconstructor_maker let new_type = (Apps.Kind.Coverage.Maker.make constructor_maker type body); let params = (Apps.Kind.Axiom.Family.Params type_name); let args = (Apps.Kind.Axiom.ArgsCount constructor_name); (Apps.Kind.Checker.bind (Apps.Kind.Coverage.specialize_rules type_name constructor_name rows) λnew_rows let new_problem = (Apps.Kind.Coverage.Problem.new new_type new_rows); (Apps.Kind.Checker.bind (Apps.Kind.Coverage.solve new_problem) λterm_result (Data.Maybe.match term_result (Apps.Kind.Checker.pure (Data.Maybe.none)) λscrutinee let size = (Apps.Kind.Coverage.Maker.size constructor_maker); let took = (Data.List.take scrutinee (Data.U60.to_nat size)); let rest = (Data.List.drop scrutinee (Data.U60.to_nat size)); let pat = (Apps.Kind.Term.Quoted.ctr constructor_name 0 took); (Apps.Kind.Checker.pure (Data.Maybe.some (Data.List.cons pat rest))))))) +(Apps.Kind.Coverage.Maker.size (Apps.Kind.Coverage.Maker.Cons x_1 x_2 body)) = (+ 1 (Apps.Kind.Coverage.Maker.size (body (Apps.Kind.Term.var 0 0 0)))) +(Apps.Kind.Coverage.Maker.size (Apps.Kind.Coverage.Maker.End x_3)) = 0 +(Data.List.take (Data.List.cons head tail) (Data.Nat.succ pred)) = (Data.List.cons head (Data.List.take tail pred)) +(Data.List.take [] (Data.Nat.succ pred)) = [] +(Data.List.take xs (Data.Nat.zero)) = [] +(Apps.Kind.Coverage.Maker.make (Apps.Kind.Coverage.Maker.Cons name typ body) cur_type and_then) = (Apps.Kind.Coverage.Type.cons 0 97 typ [] λarg (Apps.Kind.Coverage.Maker.make (body arg) cur_type and_then)) +(Apps.Kind.Coverage.Maker.make (Apps.Kind.Coverage.Maker.End other) cur_type and_then) = (and_then other) +(Data.U60.to_nat 0) = (Data.Nat.zero) +(Data.U60.to_nat n) = (Data.Nat.succ (Data.U60.to_nat (- n 1))) +(Data.List.drop xs (Data.Nat.zero)) = xs +(Data.List.drop (Data.List.cons head tail) (Data.Nat.succ pred)) = (Data.List.drop tail pred) +(Data.List.drop xs x_1) = xs +(Apps.Kind.Coverage.specialize_rules type_name name (Data.List.cons rule rules)) = let splitted = (Apps.Kind.Coverage.split_rule rule); (Data.Maybe.match splitted (Apps.Kind.Coverage.specialize_rules type_name name rules) λvalue let params = (Apps.Kind.Axiom.Family.Params type_name); let row = (Apps.Kind.Coverage.specialize_rule name (Data.Pair.fst value) (Data.Pair.snd value)); (Apps.Kind.Checker.bind (Apps.Kind.Coverage.specialize_rules type_name name rules) λnext (Apps.Kind.Checker.pure (Data.Maybe.match row next λvalue (Data.List.cons (Apps.Kind.Coverage.drop_rule params value) next))))) +(Apps.Kind.Coverage.specialize_rules type_name name []) = (Apps.Kind.Checker.pure []) +(Apps.Kind.Coverage.drop_rule 0 rule) = rule +(Apps.Kind.Coverage.drop_rule n (Apps.Kind.Rule.lhs x_1 rule)) = (Apps.Kind.Coverage.drop_rule (- n 1) rule) +(Apps.Kind.Coverage.split_rule (Apps.Kind.Rule.lhs term rest)) = (Data.Maybe.some (Data.Pair.new term rest)) +(Apps.Kind.Coverage.split_rule x_1) = (Data.Maybe.none) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct0 name orig) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some rule) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct1 name orig x0) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some (Apps.Kind.Rule.lhs x0 rule)) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct2 name orig x0 x1) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 rule))) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct3 name orig x0 x1 x2) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 (Apps.Kind.Rule.lhs x2 rule)))) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct4 name orig x0 x1 x2 x3) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 (Apps.Kind.Rule.lhs x2 (Apps.Kind.Rule.lhs x3 rule))))) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct5 name orig x0 x1 x2 x3 x4) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 (Apps.Kind.Rule.lhs x2 (Apps.Kind.Rule.lhs x3 (Apps.Kind.Rule.lhs x4 rule)))))) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct6 name orig x0 x1 x2 x3 x4 x5) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 (Apps.Kind.Rule.lhs x2 (Apps.Kind.Rule.lhs x3 (Apps.Kind.Rule.lhs x4 (Apps.Kind.Rule.lhs x5 rule))))))) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct7 name orig x0 x1 x2 x3 x4 x5 x6) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 (Apps.Kind.Rule.lhs x2 (Apps.Kind.Rule.lhs x3 (Apps.Kind.Rule.lhs x4 (Apps.Kind.Rule.lhs x5 (Apps.Kind.Rule.lhs x6 rule)))))))) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct8 name orig x0 x1 x2 x3 x4 x5 x6 x7) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 (Apps.Kind.Rule.lhs x2 (Apps.Kind.Rule.lhs x3 (Apps.Kind.Rule.lhs x4 (Apps.Kind.Rule.lhs x5 (Apps.Kind.Rule.lhs x6 (Apps.Kind.Rule.lhs x7 rule))))))))) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct9 name orig x0 x1 x2 x3 x4 x5 x6 x7 x8) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 (Apps.Kind.Rule.lhs x2 (Apps.Kind.Rule.lhs x3 (Apps.Kind.Rule.lhs x4 (Apps.Kind.Rule.lhs x5 (Apps.Kind.Rule.lhs x6 (Apps.Kind.Rule.lhs x7 (Apps.Kind.Rule.lhs x8 rule)))))))))) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct10 name orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 (Apps.Kind.Rule.lhs x2 (Apps.Kind.Rule.lhs x3 (Apps.Kind.Rule.lhs x4 (Apps.Kind.Rule.lhs x5 (Apps.Kind.Rule.lhs x6 (Apps.Kind.Rule.lhs x7 (Apps.Kind.Rule.lhs x8 (Apps.Kind.Rule.lhs x9 rule))))))))))) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct11 name orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 (Apps.Kind.Rule.lhs x2 (Apps.Kind.Rule.lhs x3 (Apps.Kind.Rule.lhs x4 (Apps.Kind.Rule.lhs x5 (Apps.Kind.Rule.lhs x6 (Apps.Kind.Rule.lhs x7 (Apps.Kind.Rule.lhs x8 (Apps.Kind.Rule.lhs x9 (Apps.Kind.Rule.lhs x10 rule)))))))))))) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct12 name orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 (Apps.Kind.Rule.lhs x2 (Apps.Kind.Rule.lhs x3 (Apps.Kind.Rule.lhs x4 (Apps.Kind.Rule.lhs x5 (Apps.Kind.Rule.lhs x6 (Apps.Kind.Rule.lhs x7 (Apps.Kind.Rule.lhs x8 (Apps.Kind.Rule.lhs x9 (Apps.Kind.Rule.lhs x10 (Apps.Kind.Rule.lhs x11 rule))))))))))))) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct13 name orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 (Apps.Kind.Rule.lhs x2 (Apps.Kind.Rule.lhs x3 (Apps.Kind.Rule.lhs x4 (Apps.Kind.Rule.lhs x5 (Apps.Kind.Rule.lhs x6 (Apps.Kind.Rule.lhs x7 (Apps.Kind.Rule.lhs x8 (Apps.Kind.Rule.lhs x9 (Apps.Kind.Rule.lhs x10 (Apps.Kind.Rule.lhs x11 (Apps.Kind.Rule.lhs x12 rule)))))))))))))) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct14 name orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 (Apps.Kind.Rule.lhs x2 (Apps.Kind.Rule.lhs x3 (Apps.Kind.Rule.lhs x4 (Apps.Kind.Rule.lhs x5 (Apps.Kind.Rule.lhs x6 (Apps.Kind.Rule.lhs x7 (Apps.Kind.Rule.lhs x8 (Apps.Kind.Rule.lhs x9 (Apps.Kind.Rule.lhs x10 (Apps.Kind.Rule.lhs x11 (Apps.Kind.Rule.lhs x12 (Apps.Kind.Rule.lhs x13 rule))))))))))))))) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct15 name orig x0) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Apps.Kind.Coverage.specialize_rule n x0 rule) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.ct16 name orig x0) rule) = (Data.Bool.if (Apps.Kind.Axiom.Compare n name) (Apps.Kind.Coverage.specialize_rule n x0 rule) (Data.Maybe.none)) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14) rule) = (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 (Apps.Kind.Rule.lhs x2 (Apps.Kind.Rule.lhs x3 (Apps.Kind.Rule.lhs x4 (Apps.Kind.Rule.lhs x5 (Apps.Kind.Rule.lhs x6 (Apps.Kind.Rule.lhs x7 (Apps.Kind.Rule.lhs x8 (Apps.Kind.Rule.lhs x9 (Apps.Kind.Rule.lhs x10 (Apps.Kind.Rule.lhs x11 (Apps.Kind.Rule.lhs x12 (Apps.Kind.Rule.lhs x13 (Apps.Kind.Rule.lhs x14 rule)))))))))))))))) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15) rule) = (Data.Maybe.some (Apps.Kind.Rule.lhs x0 (Apps.Kind.Rule.lhs x1 (Apps.Kind.Rule.lhs x2 (Apps.Kind.Rule.lhs x3 (Apps.Kind.Rule.lhs x4 (Apps.Kind.Rule.lhs x5 (Apps.Kind.Rule.lhs x6 (Apps.Kind.Rule.lhs x7 (Apps.Kind.Rule.lhs x8 (Apps.Kind.Rule.lhs x9 (Apps.Kind.Rule.lhs x10 (Apps.Kind.Rule.lhs x11 (Apps.Kind.Rule.lhs x12 (Apps.Kind.Rule.lhs x13 (Apps.Kind.Rule.lhs x14 (Apps.Kind.Rule.lhs x15 rule))))))))))))))))) +(Apps.Kind.Coverage.specialize_rule n (Apps.Kind.Term.var orig name index) rule) = (Data.Maybe.some (Apps.Kind.Coverage.craft (Apps.Kind.Axiom.ArgsCount n) rule)) +(Apps.Kind.Coverage.specialize_rule n x_1 rule) = (Data.Maybe.none) +(Apps.Kind.Coverage.craft 0 rule) = rule +(Apps.Kind.Coverage.craft n rule) = (Apps.Kind.Coverage.craft (- n 1) (Apps.Kind.Rule.lhs (Apps.Kind.Term.var 0 65 0) rule)) +(Apps.Kind.Coverage.intro_or_incomplete type body (Apps.Kind.Coverage.Problem.new cur_type rows)) = let problem = (Apps.Kind.Coverage.Problem.new cur_type rows); (Data.Bool.if (Data.List.any (Apps.Kind.Coverage.Problem.rows.get problem) λx (Apps.Kind.Coverage.Row.catches x)) (Apps.Kind.Coverage.intro_all type body problem) (Apps.Kind.Checker.bind (Apps.Kind.Checker.generate_var type) λvar let new_problem = (Apps.Kind.Coverage.Problem.new (body var) []); (Apps.Kind.Checker.bind (Apps.Kind.Coverage.solve (Apps.Kind.Coverage.Problem.rows.set new_problem [])) λterm_result (Apps.Kind.Checker.pure (Data.Maybe.map λscrutinee (Data.List.cons (Apps.Kind.Term.Quoted.var 0 63 0) scrutinee) term_result))))) +(Apps.Kind.Coverage.Row.catches (Apps.Kind.Rule.lhs (Apps.Kind.Term.var x_1 x_2 x_3) x_4)) = (Data.Bool.true) +(Apps.Kind.Coverage.Row.catches x_5) = (Data.Bool.false) +(Apps.Kind.Coverage.intro_all type body (Apps.Kind.Coverage.Problem.new x_1 rows)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.generate_var type) λvar let new_type = (body var); let new_rows = (Data.List.map rows λx (Apps.Kind.Coverage.Row.intro_all x)); let new_problem = (Apps.Kind.Coverage.Problem.new new_type new_rows); (Apps.Kind.Checker.bind (Apps.Kind.Coverage.solve new_problem) λterm_result (Apps.Kind.Checker.pure (Data.Maybe.map λscrutinee (Data.List.cons (Apps.Kind.Term.Quoted.var 0 63 0) scrutinee) term_result)))) +(Data.List.map [] f) = [] +(Data.List.map (Data.List.cons head tail) f) = (Data.List.cons (f head) (Data.List.map tail f)) +(Data.Maybe.map f (Data.Maybe.none)) = (Data.Maybe.none) +(Data.Maybe.map f (Data.Maybe.some v)) = (Data.Maybe.some (f v)) +(Apps.Kind.Checker.generate_var type) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_depth) λdepth (Apps.Kind.Checker.bind (Apps.Kind.Checker.extend 63 type []) λx_1 (Apps.Kind.Checker.pure (Apps.Kind.Term.var 0 63 depth)))) +(Apps.Kind.Coverage.Row.intro_all (Apps.Kind.Rule.lhs term rule)) = rule +(Apps.Kind.Coverage.Row.intro_all rule) = rule +(Apps.Kind.Coverage.Problem.rows.set (Apps.Kind.Coverage.Problem.new type rows) _new_var) = (Apps.Kind.Coverage.Problem.new type _new_var) +(Apps.Kind.Coverage.Problem.rows.get (Apps.Kind.Coverage.Problem.new type_ rows_)) = rows_ +(Data.List.any [] cond) = (Data.Bool.false) +(Data.List.any (Data.List.cons head tail) cond) = (Data.Bool.if (cond head) (Data.Bool.true) (Data.List.any tail cond)) +(Data.List.is_nil []) = (Data.Bool.true) +(Data.List.is_nil (Data.List.cons head tail)) = (Data.Bool.false) +(Apps.Kind.Coverage.Problem.type.get (Apps.Kind.Coverage.Problem.new type_ rows_)) = type_ +(Apps.Kind.Checker.local checker) = λold_context λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.match (checker old_context depth rhs subst eqts errs) λres.ctx λres.depth λres.rhs λres.sub λres.equations λres.errors λres.ret (Apps.Kind.Result.checked old_context depth rhs subst eqts errs res.ret) λres.ctx λres.sub λres.errors (Apps.Kind.Result.errored res.ctx res.sub res.errors)) +(Apps.Kind.Result.match (Apps.Kind.Result.checked ctx_ depth_ rhs_ sub_ equations_ errors_ ret_) checked errored) = (checked ctx_ depth_ rhs_ sub_ equations_ errors_ ret_) +(Apps.Kind.Result.match (Apps.Kind.Result.errored ctx_ sub_ errors_) checked errored) = (errored ctx_ sub_ errors_) +(Apps.Kind.Coverage.catches (Apps.Kind.Coverage.Problem.new type rows)) = (Data.List.all rows λx (Apps.Kind.Coverage.Row.catches x)) +(Data.List.all [] cond) = (Data.Bool.true) +(Data.List.all (Data.List.cons head tail) cond) = (Data.Bool.if (cond head) (Data.List.all tail cond) (Data.Bool.false)) +(Apps.Kind.Coverage.Type.from_term term 0) = (Apps.Kind.Coverage.Type.end [] term) +(Apps.Kind.Coverage.Type.from_term (Apps.Kind.Term.all orig name typ body) n) = (Apps.Kind.Coverage.Type.cons orig name typ [] λarg (Apps.Kind.Coverage.Type.from_term (body arg) (- n 1))) +(Apps.Kind.Coverage.Type.from_term term n) = (Apps.Kind.Coverage.Type.end [] term) +(Apps.Kind.Coverage.Rule.size (Apps.Kind.Rule.lhs x xs)) = (+ 1 (Apps.Kind.Coverage.Rule.size xs)) +(Apps.Kind.Coverage.Rule.size x_1) = 0 +(Apps.Kind.Checker.set_right_hand_side to_rhs) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked context depth to_rhs subst eqts errs (Data.Unit.new)) +(Data.List.head []) = (Data.Maybe.none) +(Data.List.head (Data.List.cons head tail)) = (Data.Maybe.some head) +(Apps.Kind.Checker.unify checker) = (Apps.Kind.Checker.bind checker λx_1 (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_equations) λequations (Apps.Kind.Checker.unify.go equations [] (Data.Bool.false)))) +(Apps.Kind.Checker.get_equations) = λcontext λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked context depth rhs subst eqts errs eqts) +(Apps.Kind.Checker.unify.go [] [] changed) = (Apps.Kind.Checker.pure (Data.Unit.new)) +(Apps.Kind.Checker.unify.go [] unsolved (Data.Bool.true)) = (Apps.Kind.Checker.unify.go unsolved [] (Data.Bool.false)) +(Apps.Kind.Checker.unify.go [] unsolved (Data.Bool.false)) = (Apps.Kind.Checker.unify.go.fail unsolved) +(Apps.Kind.Checker.unify.go (Data.List.cons (Apps.Kind.Equation.new ctx orig left right) equations) unsolved changed) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.with_context (Apps.Kind.Checker.equal (Apps.Kind.Term.eval left) (Apps.Kind.Term.eval right)) ctx) λis_equal let unify = (Data.Bool.if is_equal λequations λunsolved (Apps.Kind.Checker.unify.go equations unsolved (Data.Bool.true)) λequations λunsolved let eqt = (Apps.Kind.Equation.new ctx orig left right); (Apps.Kind.Checker.unify.go equations (Data.List.cons eqt unsolved) changed)); (unify equations unsolved)) +(Apps.Kind.Checker.unify.go.fail []) = (Apps.Kind.Checker.pure (Data.Unit.new)) +(Apps.Kind.Checker.unify.go.fail (Data.List.cons (Apps.Kind.Equation.new ctx orig left right) eqts)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.error (Apps.Kind.Error.type_mismatch ctx orig left right) (Data.Unit.new)) λx_1 (Apps.Kind.Checker.unify.go.fail eqts)) +(Apps.Kind.Checker.with_context checker new_context) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.set_context new_context) λold_context (Apps.Kind.Checker.bind checker λgot (Apps.Kind.Checker.bind (Apps.Kind.Checker.set_context old_context) λx_1 (Apps.Kind.Checker.pure got)))) +(Apps.Kind.Checker.set_context new_context) = λold_context λdepth λrhs λsubst λeqts λerrs (Apps.Kind.Result.checked new_context depth rhs subst eqts errs old_context) +(Apps.Kind.Checker.run checker rhs) = (checker (Apps.Kind.Context.empty) 0 rhs (Apps.Kind.Subst.end) [] []) +(Apps.Kind.API.check_function.rules [] type) = [] +(Apps.Kind.API.check_function.rules (Data.List.cons rule rules) type) = let head = (Apps.Kind.Checker.run (Apps.Kind.Checker.unify (Apps.Kind.Checker.rule rule type)) (Data.Bool.false)); let tail = (Apps.Kind.API.check_function.rules rules type); (Data.List.cons head tail) +(Apps.Kind.Checker.rule (Apps.Kind.Rule.lhs arg args) (Apps.Kind.Term.all orig name type body)) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.check arg type) λx_2 (Apps.Kind.Checker.bind (Apps.Kind.Checker.rule args (body arg)) λx_1 (Apps.Kind.Checker.pure (Data.Unit.new)))) +(Apps.Kind.Checker.rule (Apps.Kind.Rule.lhs arg args) other) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.get_context) λctx (Apps.Kind.Checker.fail (Apps.Kind.Error.too_many_arguments ctx (Apps.Kind.Term.get_origin arg λorig λterm orig)))) +(Apps.Kind.Checker.rule (Apps.Kind.Rule.rhs expr) type) = (Apps.Kind.Checker.bind (Apps.Kind.Checker.set_right_hand_side (Data.Bool.true)) λx_4 (Apps.Kind.Checker.bind (Apps.Kind.Checker.check expr type) λx_3 (Apps.Kind.Checker.pure (Data.Unit.new)))) +(Data.List.reverse xs) = (Data.List.reverse.go xs []) +(Data.List.reverse.go [] ys) = ys +(Data.List.reverse.go (Data.List.cons x xs) ys) = (Data.List.reverse.go xs (Data.List.cons x ys)) +(Apps.Kind.API.output []) = [] +(Apps.Kind.API.output (Data.List.cons pair rest)) = (Data.Pair.match pair λfst λsnd (Data.List.concat (Apps.Kind.API.output.function fst snd) (Apps.Kind.API.output rest))) +(Data.List.concat [] ys) = ys +(Data.List.concat (Data.List.cons head tail) ys) = (Data.List.cons head (Data.List.concat tail ys)) +(Apps.Kind.API.output.function fnid []) = [] +(Apps.Kind.API.output.function fnid (Data.List.cons (Apps.Kind.Result.checked ctx dep rhs sub eqt err val) checks)) = (Apps.Kind.API.output.function.show_errors err sub fnid checks) +(Apps.Kind.API.output.function fnid (Data.List.cons (Apps.Kind.Result.errored ctx sub err) checks)) = (Apps.Kind.API.output.function.show_errors err sub fnid checks) +(Apps.Kind.API.output.function.show_errors [] sub fnid checks) = (Apps.Kind.API.output.function fnid checks) +(Apps.Kind.API.output.function.show_errors (Data.List.cons err errs) sub fnid checks) = (Data.List.cons (Apps.Kind.API.output.error fnid err sub) (Apps.Kind.API.output.function.show_errors errs sub fnid checks)) +(Apps.Kind.API.output.error fnid err sub) = (Apps.Kind.Error.quote err sub) +(Apps.Kind.Error.quote (Apps.Kind.Error.unbound_variable ctx orig) sub) = (Apps.Kind.Error.Quoted.unbound_variable (Apps.Kind.Context.quote ctx sub) orig) +(Apps.Kind.Error.quote (Apps.Kind.Error.cant_infer_hole ctx orig) sub) = (Apps.Kind.Error.Quoted.cant_infer_hole (Apps.Kind.Context.quote ctx sub) orig) +(Apps.Kind.Error.quote (Apps.Kind.Error.cant_infer_lambda ctx orig) sub) = (Apps.Kind.Error.Quoted.cant_infer_lambda (Apps.Kind.Context.quote ctx sub) orig) +(Apps.Kind.Error.quote (Apps.Kind.Error.invalid_call ctx orig) sub) = (Apps.Kind.Error.Quoted.invalid_call (Apps.Kind.Context.quote ctx sub) orig) +(Apps.Kind.Error.quote (Apps.Kind.Error.impossible_case ctx orig typ term) sub) = (Apps.Kind.Error.Quoted.impossible_case (Apps.Kind.Context.quote ctx sub) orig (Apps.Kind.Term.quote typ sub) (Apps.Kind.Term.quote term sub)) +(Apps.Kind.Error.quote (Apps.Kind.Error.inspection ctx orig term) sub) = (Apps.Kind.Error.Quoted.inspection (Apps.Kind.Context.quote ctx sub) orig (Apps.Kind.Term.quote term sub)) +(Apps.Kind.Error.quote (Apps.Kind.Error.too_many_arguments ctx orig) sub) = (Apps.Kind.Error.Quoted.too_many_arguments (Apps.Kind.Context.quote ctx sub) orig) +(Apps.Kind.Error.quote (Apps.Kind.Error.type_mismatch ctx orig expected detected) sub) = (Apps.Kind.Error.Quoted.type_mismatch (Apps.Kind.Context.quote ctx sub) orig (Apps.Kind.Term.quote expected sub) (Apps.Kind.Term.quote detected sub)) +(Apps.Kind.Error.quote (Apps.Kind.Error.uncovered_pattern ctx orig res) sub) = (Apps.Kind.Error.Quoted.uncovered_pattern (Apps.Kind.Context.quote ctx sub) orig res) +(Apps.Kind.Context.quote (Apps.Kind.Context.empty) sub) = [] +(Apps.Kind.Context.quote (Apps.Kind.Context.entry name type vals rest) sub) = (Data.List.cons (Data.Pair.new name (Data.Pair.new (Apps.Kind.Term.quote type sub) (Data.List.map vals λx (Apps.Kind.Term.quote x sub)))) (Apps.Kind.Context.quote rest sub)) +(Apps.Kind.Term.quote term sub) = (Apps.Kind.Term.quote.go (Apps.Kind.Term.fill term sub)) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.typ orig)) = (Apps.Kind.Term.Quoted.typ orig) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.var orig name index)) = (Apps.Kind.Term.Quoted.var orig name index) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.hol orig numb)) = (Apps.Kind.Term.Quoted.hol orig numb) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.all orig name type body)) = (Apps.Kind.Term.Quoted.all orig name (Apps.Kind.Term.quote.go type) (Apps.Kind.Term.quote.go (body (Apps.Kind.Term.var orig name 0)))) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.lam orig name body)) = (Apps.Kind.Term.Quoted.lam orig name (Apps.Kind.Term.quote.go (body (Apps.Kind.Term.var orig name 0)))) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.let orig name exp body)) = (Apps.Kind.Term.Quoted.let orig name (Apps.Kind.Term.quote.go exp) (Apps.Kind.Term.quote.go (body (Apps.Kind.Term.var orig name 0)))) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ann orig expr type)) = (Apps.Kind.Term.Quoted.ann orig (Apps.Kind.Term.quote.go expr) (Apps.Kind.Term.quote.go type)) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.sub orig name indx redx expr)) = (Apps.Kind.Term.Quoted.sub orig name indx redx (Apps.Kind.Term.quote.go expr)) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.app orig func argm)) = (Apps.Kind.Term.Quoted.app orig (Apps.Kind.Term.quote.go func) (Apps.Kind.Term.quote.go argm)) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct0 ctid orig)) = (Apps.Kind.Term.Quoted.ctr ctid orig []) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct1 ctid orig x0)) = (Apps.Kind.Term.Quoted.ctr ctid orig [(Apps.Kind.Term.quote.go x0)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct2 ctid orig x0 x1)) = (Apps.Kind.Term.Quoted.ctr ctid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct3 ctid orig x0 x1 x2)) = (Apps.Kind.Term.Quoted.ctr ctid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct4 ctid orig x0 x1 x2 x3)) = (Apps.Kind.Term.Quoted.ctr ctid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4)) = (Apps.Kind.Term.Quoted.ctr ctid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5)) = (Apps.Kind.Term.Quoted.ctr ctid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6)) = (Apps.Kind.Term.Quoted.ctr ctid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Apps.Kind.Term.Quoted.ctr ctid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Apps.Kind.Term.Quoted.ctr ctid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7), (Apps.Kind.Term.quote.go x8)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Apps.Kind.Term.Quoted.ctr ctid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7), (Apps.Kind.Term.quote.go x8), (Apps.Kind.Term.quote.go x9)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Apps.Kind.Term.Quoted.ctr ctid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7), (Apps.Kind.Term.quote.go x8), (Apps.Kind.Term.quote.go x9), (Apps.Kind.Term.quote.go x10)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Apps.Kind.Term.Quoted.ctr ctid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7), (Apps.Kind.Term.quote.go x8), (Apps.Kind.Term.quote.go x9), (Apps.Kind.Term.quote.go x10), (Apps.Kind.Term.quote.go x11)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Apps.Kind.Term.Quoted.ctr ctid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7), (Apps.Kind.Term.quote.go x8), (Apps.Kind.Term.quote.go x9), (Apps.Kind.Term.quote.go x10), (Apps.Kind.Term.quote.go x11), (Apps.Kind.Term.quote.go x12)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Apps.Kind.Term.Quoted.ctr ctid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7), (Apps.Kind.Term.quote.go x8), (Apps.Kind.Term.quote.go x9), (Apps.Kind.Term.quote.go x10), (Apps.Kind.Term.quote.go x11), (Apps.Kind.Term.quote.go x12), (Apps.Kind.Term.quote.go x13)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct15 ctid orig x0)) = (Apps.Kind.Term.Quoted.ctr ctid orig (Apps.Kind.Term.quote.args x0)) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.ct16 ctid orig x0)) = (Apps.Kind.Term.Quoted.ctr ctid orig (Apps.Kind.Term.quote.args x0)) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn0 fnid orig)) = (Apps.Kind.Term.Quoted.fun fnid orig []) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn1 fnid orig x0)) = (Apps.Kind.Term.Quoted.fun fnid orig [(Apps.Kind.Term.quote.go x0)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn2 fnid orig x0 x1)) = (Apps.Kind.Term.Quoted.fun fnid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn3 fnid orig x0 x1 x2)) = (Apps.Kind.Term.Quoted.fun fnid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn4 fnid orig x0 x1 x2 x3)) = (Apps.Kind.Term.Quoted.fun fnid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4)) = (Apps.Kind.Term.Quoted.fun fnid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5)) = (Apps.Kind.Term.Quoted.fun fnid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6)) = (Apps.Kind.Term.Quoted.fun fnid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Apps.Kind.Term.Quoted.fun fnid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Apps.Kind.Term.Quoted.fun fnid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7), (Apps.Kind.Term.quote.go x8)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Apps.Kind.Term.Quoted.fun fnid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7), (Apps.Kind.Term.quote.go x8), (Apps.Kind.Term.quote.go x9)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Apps.Kind.Term.Quoted.fun fnid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7), (Apps.Kind.Term.quote.go x8), (Apps.Kind.Term.quote.go x9), (Apps.Kind.Term.quote.go x10)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Apps.Kind.Term.Quoted.fun fnid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7), (Apps.Kind.Term.quote.go x8), (Apps.Kind.Term.quote.go x9), (Apps.Kind.Term.quote.go x10), (Apps.Kind.Term.quote.go x11)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Apps.Kind.Term.Quoted.fun fnid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7), (Apps.Kind.Term.quote.go x8), (Apps.Kind.Term.quote.go x9), (Apps.Kind.Term.quote.go x10), (Apps.Kind.Term.quote.go x11), (Apps.Kind.Term.quote.go x12)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Apps.Kind.Term.Quoted.fun fnid orig [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7), (Apps.Kind.Term.quote.go x8), (Apps.Kind.Term.quote.go x9), (Apps.Kind.Term.quote.go x10), (Apps.Kind.Term.quote.go x11), (Apps.Kind.Term.quote.go x12), (Apps.Kind.Term.quote.go x13)]) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn15 fnid orig x0)) = (Apps.Kind.Term.Quoted.fun fnid orig (Apps.Kind.Term.quote.args x0)) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.fn16 fnid orig x0)) = (Apps.Kind.Term.Quoted.fun fnid orig (Apps.Kind.Term.quote.args x0)) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.hlp orig)) = (Apps.Kind.Term.Quoted.hlp orig) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.U60 orig)) = (Apps.Kind.Term.Quoted.u60 orig) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.u60 orig numb)) = (Apps.Kind.Term.Quoted.num orig numb) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.F60 orig)) = (Apps.Kind.Term.Quoted.f60 orig) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.f60 orig numb)) = (Apps.Kind.Term.Quoted.numf60 orig numb) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.op2 orig operator left right)) = (Apps.Kind.Term.Quoted.op2 orig operator (Apps.Kind.Term.quote.go left) (Apps.Kind.Term.quote.go right)) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.args15 x_1 x_2 x_3 x_4 x_5 x_6 x_7 x_8 x_9 x_10 x_11 x_12 x_13 x_14 x_15)) = (Apps.Kind.Axiom.Null) +(Apps.Kind.Term.quote.go (Apps.Kind.Term.args16 x_16 x_17 x_18 x_19 x_20 x_21 x_22 x_23 x_24 x_25 x_26 x_27 x_28 x_29 x_30 x_31)) = (Apps.Kind.Axiom.Null) +(Apps.Kind.Term.quote.args (Apps.Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14)) = [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7), (Apps.Kind.Term.quote.go x8), (Apps.Kind.Term.quote.go x9), (Apps.Kind.Term.quote.go x10), (Apps.Kind.Term.quote.go x11), (Apps.Kind.Term.quote.go x12), (Apps.Kind.Term.quote.go x13), (Apps.Kind.Term.quote.go x14)] +(Apps.Kind.Term.quote.args (Apps.Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15)) = [(Apps.Kind.Term.quote.go x0), (Apps.Kind.Term.quote.go x1), (Apps.Kind.Term.quote.go x2), (Apps.Kind.Term.quote.go x3), (Apps.Kind.Term.quote.go x4), (Apps.Kind.Term.quote.go x5), (Apps.Kind.Term.quote.go x6), (Apps.Kind.Term.quote.go x7), (Apps.Kind.Term.quote.go x8), (Apps.Kind.Term.quote.go x9), (Apps.Kind.Term.quote.go x10), (Apps.Kind.Term.quote.go x11), (Apps.Kind.Term.quote.go x12), (Apps.Kind.Term.quote.go x13), (Apps.Kind.Term.quote.go x14), (Apps.Kind.Term.quote.go x15)] +(Apps.Kind.Term.quote.args x_1) = (Apps.Kind.Axiom.Null) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.typ old_orig)) = (Apps.Kind.Term.typ new_origin) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.var old_orig name idx)) = (Apps.Kind.Term.var new_origin name idx) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.hol old_orig numb)) = (Apps.Kind.Term.hol new_origin numb) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.all old_orig name typ body)) = (Apps.Kind.Term.all new_origin name typ body) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.lam old_orig name body)) = (Apps.Kind.Term.lam new_origin name body) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.let old_orig name expr body)) = (Apps.Kind.Term.let new_origin name expr body) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ann old_orig expr typ)) = (Apps.Kind.Term.ann new_origin expr typ) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.sub old_orig name indx redx expr)) = (Apps.Kind.Term.sub new_origin name indx redx expr) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.app old_orig func arg)) = (Apps.Kind.Term.app new_origin func arg) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.hlp old_orig)) = (Apps.Kind.Term.hlp new_origin) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.U60 old_orig)) = (Apps.Kind.Term.U60 new_origin) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.u60 old_orig num)) = (Apps.Kind.Term.u60 new_origin num) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.F60 old_orig)) = (Apps.Kind.Term.F60 new_origin) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.f60 old_orig num)) = (Apps.Kind.Term.f60 new_origin num) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.op2 old_orig op left right)) = (Apps.Kind.Term.op2 new_origin op left right) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct0 ctid old_orig)) = (Apps.Kind.Term.ct0 ctid new_origin) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct1 ctid old_orig x0)) = (Apps.Kind.Term.ct1 ctid new_origin x0) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct2 ctid old_orig x0 x1)) = (Apps.Kind.Term.ct2 ctid new_origin x0 x1) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct3 ctid old_orig x0 x1 x2)) = (Apps.Kind.Term.ct3 ctid new_origin x0 x1 x2) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct4 ctid old_orig x0 x1 x2 x3)) = (Apps.Kind.Term.ct4 ctid new_origin x0 x1 x2 x3) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct5 ctid old_orig x0 x1 x2 x3 x4)) = (Apps.Kind.Term.ct5 ctid new_origin x0 x1 x2 x3 x4) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct6 ctid old_orig x0 x1 x2 x3 x4 x5)) = (Apps.Kind.Term.ct6 ctid new_origin x0 x1 x2 x3 x4 x5) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct7 ctid old_orig x0 x1 x2 x3 x4 x5 x6)) = (Apps.Kind.Term.ct7 ctid new_origin x0 x1 x2 x3 x4 x5 x6) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct8 ctid old_orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Apps.Kind.Term.ct8 ctid new_origin x0 x1 x2 x3 x4 x5 x6 x7) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct9 ctid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Apps.Kind.Term.ct9 ctid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct10 ctid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Apps.Kind.Term.ct10 ctid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct11 ctid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Apps.Kind.Term.ct11 ctid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct12 ctid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Apps.Kind.Term.ct12 ctid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct13 ctid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Apps.Kind.Term.ct13 ctid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct14 ctid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Apps.Kind.Term.ct14 ctid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct15 ctid old_orig args)) = (Apps.Kind.Term.ct15 ctid new_origin args) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.ct16 ctid old_orig args)) = (Apps.Kind.Term.ct16 ctid new_origin args) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn0 fnid old_orig)) = (Apps.Kind.Term.fn0 fnid new_origin) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn1 fnid old_orig x0)) = (Apps.Kind.Term.fn1 fnid new_origin x0) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn2 fnid old_orig x0 x1)) = (Apps.Kind.Term.fn2 fnid new_origin x0 x1) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn3 fnid old_orig x0 x1 x2)) = (Apps.Kind.Term.fn3 fnid new_origin x0 x1 x2) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn4 fnid old_orig x0 x1 x2 x3)) = (Apps.Kind.Term.fn4 fnid new_origin x0 x1 x2 x3) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn5 fnid old_orig x0 x1 x2 x3 x4)) = (Apps.Kind.Term.fn5 fnid new_origin x0 x1 x2 x3 x4) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn6 fnid old_orig x0 x1 x2 x3 x4 x5)) = (Apps.Kind.Term.fn6 fnid new_origin x0 x1 x2 x3 x4 x5) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn7 fnid old_orig x0 x1 x2 x3 x4 x5 x6)) = (Apps.Kind.Term.fn7 fnid new_origin x0 x1 x2 x3 x4 x5 x6) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn8 fnid old_orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Apps.Kind.Term.fn8 fnid new_origin x0 x1 x2 x3 x4 x5 x6 x7) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn9 fnid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Apps.Kind.Term.fn9 fnid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn10 fnid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Apps.Kind.Term.fn10 fnid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn11 fnid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Apps.Kind.Term.fn11 fnid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn12 fnid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Apps.Kind.Term.fn12 fnid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn13 fnid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Apps.Kind.Term.fn13 fnid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn14 fnid old_orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Apps.Kind.Term.fn14 fnid new_origin x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn15 ctid old_orig args)) = (Apps.Kind.Term.fn15 ctid new_origin args) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.fn16 ctid old_orig args)) = (Apps.Kind.Term.fn16 ctid new_origin args) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14)) = (Apps.Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14) +(Apps.Kind.Term.set_origin new_origin (Apps.Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15)) = (Apps.Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15) +(Apps.Kind.API.eval_main) = (Apps.Kind.Printer.text [(Apps.Kind.Term.show (Apps.Kind.Term.FN0 (Main.) 0)), " ", " "]) -(Kind.Term.show term) = let sugars = [(Kind.Term.show.sugar.string term), (Kind.Term.show.sugar.list term), (Kind.Term.show.sugar.sigma term)]; (Maybe.try sugars (Kind.Term.show.go term)) -(Kind.Term.show.go (Kind.Term.typ orig)) = "Type" -(Kind.Term.show.go (Kind.Term.var orig name index)) = (Kind.Printer.text [(Kind.Name.show name)]) -(Kind.Term.show.go (Kind.Term.hol orig numb)) = (Kind.Printer.text ["_"]) -(Kind.Term.show.go (Kind.Term.all orig name type body)) = (Kind.Term.show.forall orig name type body) -(Kind.Term.show.go (Kind.Term.lam orig name body)) = (Kind.Printer.text ["(", (Kind.Name.show name), " => ", (Kind.Term.show (body (Kind.Term.var orig name 0))), ")"]) -(Kind.Term.show.go (Kind.Term.let orig name exp body)) = (Kind.Printer.text ["let ", (Kind.Name.show name), " = ", (Kind.Term.show exp), "; ", (Kind.Term.show (body (Kind.Term.var orig name 0)))]) -(Kind.Term.show.go (Kind.Term.ann orig expr type)) = (Kind.Printer.text ["{", (Kind.Term.show expr), " :: ", (Kind.Term.show type), "}"]) -(Kind.Term.show.go (Kind.Term.sub orig name indx redx expr)) = (Kind.Printer.text [(Kind.Term.show expr), " ## ", (Kind.Name.show name), "/", (Show.to_string (U60.show redx))]) -(Kind.Term.show.go (Kind.Term.app orig func argm)) = (Kind.Printer.text ["(", (Kind.Term.show func), " ", (Kind.Term.show argm), ")"]) -(Kind.Term.show.go (Kind.Term.ct0 ctid orig)) = (Kind.Axiom.NameOf ctid) -(Kind.Term.show.go (Kind.Term.ct1 ctid orig x0)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), ")"]) -(Kind.Term.show.go (Kind.Term.ct2 ctid orig x0 x1)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), ")"]) -(Kind.Term.show.go (Kind.Term.ct3 ctid orig x0 x1 x2)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), ")"]) -(Kind.Term.show.go (Kind.Term.ct4 ctid orig x0 x1 x2 x3)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), ")"]) -(Kind.Term.show.go (Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), ")"]) -(Kind.Term.show.go (Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), ")"]) -(Kind.Term.show.go (Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), ")"]) -(Kind.Term.show.go (Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), ")"]) -(Kind.Term.show.go (Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), " ", (Kind.Term.show x8), ")"]) -(Kind.Term.show.go (Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), " ", (Kind.Term.show x8), " ", (Kind.Term.show x9), ")"]) -(Kind.Term.show.go (Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), " ", (Kind.Term.show x8), " ", (Kind.Term.show x9), " ", (Kind.Term.show x10), ")"]) -(Kind.Term.show.go (Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), " ", (Kind.Term.show x8), " ", (Kind.Term.show x9), " ", (Kind.Term.show x10), " ", (Kind.Term.show x11), ")"]) -(Kind.Term.show.go (Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), " ", (Kind.Term.show x8), " ", (Kind.Term.show x9), " ", (Kind.Term.show x10), " ", (Kind.Term.show x11), " ", (Kind.Term.show x12), ")"]) -(Kind.Term.show.go (Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), " ", (Kind.Term.show x8), " ", (Kind.Term.show x9), " ", (Kind.Term.show x10), " ", (Kind.Term.show x11), " ", (Kind.Term.show x12), " ", (Kind.Term.show x13), ")"]) -(Kind.Term.show.go (Kind.Term.ct15 ctid orig x0)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), ")"]) -(Kind.Term.show.go (Kind.Term.ct16 ctid orig x0)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf ctid), " ", (Kind.Term.show x0), ")"]) -(Kind.Term.show.go (Kind.Term.fn0 fnid orig)) = (Kind.Axiom.NameOf fnid) -(Kind.Term.show.go (Kind.Term.fn1 fnid orig x0)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), ")"]) -(Kind.Term.show.go (Kind.Term.fn2 fnid orig x0 x1)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), ")"]) -(Kind.Term.show.go (Kind.Term.fn3 fnid orig x0 x1 x2)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), ")"]) -(Kind.Term.show.go (Kind.Term.fn4 fnid orig x0 x1 x2 x3)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), ")"]) -(Kind.Term.show.go (Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), ")"]) -(Kind.Term.show.go (Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), ")"]) -(Kind.Term.show.go (Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), ")"]) -(Kind.Term.show.go (Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), ")"]) -(Kind.Term.show.go (Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), " ", (Kind.Term.show x8), ")"]) -(Kind.Term.show.go (Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), " ", (Kind.Term.show x8), " ", (Kind.Term.show x9), ")"]) -(Kind.Term.show.go (Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), " ", (Kind.Term.show x8), " ", (Kind.Term.show x9), " ", (Kind.Term.show x10), ")"]) -(Kind.Term.show.go (Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), " ", (Kind.Term.show x8), " ", (Kind.Term.show x9), " ", (Kind.Term.show x10), " ", (Kind.Term.show x11), ")"]) -(Kind.Term.show.go (Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), " ", (Kind.Term.show x8), " ", (Kind.Term.show x9), " ", (Kind.Term.show x10), " ", (Kind.Term.show x11), " ", (Kind.Term.show x12), ")"]) -(Kind.Term.show.go (Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), " ", (Kind.Term.show x8), " ", (Kind.Term.show x9), " ", (Kind.Term.show x10), " ", (Kind.Term.show x11), " ", (Kind.Term.show x12), " ", (Kind.Term.show x13), ")"]) -(Kind.Term.show.go (Kind.Term.fn15 fnid orig x0)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), ")"]) -(Kind.Term.show.go (Kind.Term.fn16 fnid orig x0)) = (Kind.Printer.text ["(", (Kind.Axiom.NameOf fnid), " ", (Kind.Term.show x0), ")"]) -(Kind.Term.show.go (Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14)) = (Kind.Printer.text [(Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), " ", (Kind.Term.show x8), " ", (Kind.Term.show x9), " ", (Kind.Term.show x10), " ", (Kind.Term.show x11), " ", (Kind.Term.show x12), " ", (Kind.Term.show x13), " ", (Kind.Term.show x14)]) -(Kind.Term.show.go (Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15)) = (Kind.Printer.text [(Kind.Term.show x0), " ", (Kind.Term.show x1), " ", (Kind.Term.show x2), " ", (Kind.Term.show x3), " ", (Kind.Term.show x4), " ", (Kind.Term.show x5), " ", (Kind.Term.show x6), " ", (Kind.Term.show x7), " ", (Kind.Term.show x8), " ", (Kind.Term.show x9), " ", (Kind.Term.show x10), " ", (Kind.Term.show x11), " ", (Kind.Term.show x12), " ", (Kind.Term.show x13), " ", (Kind.Term.show x14), " ", (Kind.Term.show x15)]) -(Kind.Term.show.go (Kind.Term.hlp orig)) = "?" -(Kind.Term.show.go (Kind.Term.U60 orig)) = "U60" -(Kind.Term.show.go (Kind.Term.u60 orig numb)) = (Show.to_string (U60.show numb)) -(Kind.Term.show.go (Kind.Term.F60 orig)) = "F60" -(Kind.Term.show.go (Kind.Term.f60 orig numb)) = (Show.to_string (U60.show numb)) -(Kind.Term.show.go (Kind.Term.op2 orig operator left right)) = (Kind.Printer.text ["(", (Kind.Operator.show operator), " ", (Kind.Term.show left), " ", (Kind.Term.show right), ")"]) -(Kind.Name.show name) = (Kind.Name.show.go name "") -(Kind.Name.show.go name chrs) = (U60.if (== name 0) chrs let val = (% name 64); let chr = (U60.if (== val 0) 46 (U60.if (& (<= 1 val) (<= val 10)) (+ (- val 1) 48) (U60.if (& (<= 11 val) (<= val 36)) (+ (- val 11) 65) (U60.if (& (<= 37 val) (<= val 62)) (+ (- val 37) 97) (U60.if (== val 63) 95 63))))); (Kind.Name.show.go (/ name 64) (String.cons chr chrs))) -(U60.if 0 t f) = f -(U60.if n t f) = t +(Apps.Kind.Term.show term) = let sugars = [(Apps.Kind.Term.show.sugar.string term), (Apps.Kind.Term.show.sugar.list term), (Apps.Kind.Term.show.sugar.sigma term)]; (Data.Maybe.try sugars (Apps.Kind.Term.show.go term)) +(Apps.Kind.Term.show.go (Apps.Kind.Term.typ orig)) = "Type" +(Apps.Kind.Term.show.go (Apps.Kind.Term.var orig name index)) = (Apps.Kind.Printer.text [(Apps.Kind.Name.show name)]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.hol orig numb)) = (Apps.Kind.Printer.text ["_"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.all orig name type body)) = (Apps.Kind.Term.show.forall orig name type body) +(Apps.Kind.Term.show.go (Apps.Kind.Term.lam orig name body)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Name.show name), " => ", (Apps.Kind.Term.show (body (Apps.Kind.Term.var orig name 0))), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.let orig name exp body)) = (Apps.Kind.Printer.text ["let ", (Apps.Kind.Name.show name), " = ", (Apps.Kind.Term.show exp), "; ", (Apps.Kind.Term.show (body (Apps.Kind.Term.var orig name 0)))]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ann orig expr type)) = (Apps.Kind.Printer.text ["{", (Apps.Kind.Term.show expr), " :: ", (Apps.Kind.Term.show type), "}"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.sub orig name indx redx expr)) = (Apps.Kind.Printer.text [(Apps.Kind.Term.show expr), " ## ", (Apps.Kind.Name.show name), "/", (Show.to_string (Data.U60.show redx))]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.app orig func argm)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Term.show func), " ", (Apps.Kind.Term.show argm), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct0 ctid orig)) = (Apps.Kind.Axiom.NameOf ctid) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct1 ctid orig x0)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct2 ctid orig x0 x1)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct3 ctid orig x0 x1 x2)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct4 ctid orig x0 x1 x2 x3)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct5 ctid orig x0 x1 x2 x3 x4)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct6 ctid orig x0 x1 x2 x3 x4 x5)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct7 ctid orig x0 x1 x2 x3 x4 x5 x6)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct8 ctid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct9 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), " ", (Apps.Kind.Term.show x8), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct10 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), " ", (Apps.Kind.Term.show x8), " ", (Apps.Kind.Term.show x9), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct11 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), " ", (Apps.Kind.Term.show x8), " ", (Apps.Kind.Term.show x9), " ", (Apps.Kind.Term.show x10), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct12 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), " ", (Apps.Kind.Term.show x8), " ", (Apps.Kind.Term.show x9), " ", (Apps.Kind.Term.show x10), " ", (Apps.Kind.Term.show x11), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct13 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), " ", (Apps.Kind.Term.show x8), " ", (Apps.Kind.Term.show x9), " ", (Apps.Kind.Term.show x10), " ", (Apps.Kind.Term.show x11), " ", (Apps.Kind.Term.show x12), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct14 ctid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), " ", (Apps.Kind.Term.show x8), " ", (Apps.Kind.Term.show x9), " ", (Apps.Kind.Term.show x10), " ", (Apps.Kind.Term.show x11), " ", (Apps.Kind.Term.show x12), " ", (Apps.Kind.Term.show x13), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct15 ctid orig x0)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.ct16 ctid orig x0)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf ctid), " ", (Apps.Kind.Term.show x0), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn0 fnid orig)) = (Apps.Kind.Axiom.NameOf fnid) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn1 fnid orig x0)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn2 fnid orig x0 x1)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn3 fnid orig x0 x1 x2)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn4 fnid orig x0 x1 x2 x3)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn5 fnid orig x0 x1 x2 x3 x4)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn6 fnid orig x0 x1 x2 x3 x4 x5)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn7 fnid orig x0 x1 x2 x3 x4 x5 x6)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn8 fnid orig x0 x1 x2 x3 x4 x5 x6 x7)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn9 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), " ", (Apps.Kind.Term.show x8), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn10 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), " ", (Apps.Kind.Term.show x8), " ", (Apps.Kind.Term.show x9), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn11 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), " ", (Apps.Kind.Term.show x8), " ", (Apps.Kind.Term.show x9), " ", (Apps.Kind.Term.show x10), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn12 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), " ", (Apps.Kind.Term.show x8), " ", (Apps.Kind.Term.show x9), " ", (Apps.Kind.Term.show x10), " ", (Apps.Kind.Term.show x11), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn13 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), " ", (Apps.Kind.Term.show x8), " ", (Apps.Kind.Term.show x9), " ", (Apps.Kind.Term.show x10), " ", (Apps.Kind.Term.show x11), " ", (Apps.Kind.Term.show x12), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn14 fnid orig x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), " ", (Apps.Kind.Term.show x8), " ", (Apps.Kind.Term.show x9), " ", (Apps.Kind.Term.show x10), " ", (Apps.Kind.Term.show x11), " ", (Apps.Kind.Term.show x12), " ", (Apps.Kind.Term.show x13), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn15 fnid orig x0)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.fn16 fnid orig x0)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Axiom.NameOf fnid), " ", (Apps.Kind.Term.show x0), ")"]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.args15 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14)) = (Apps.Kind.Printer.text [(Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), " ", (Apps.Kind.Term.show x8), " ", (Apps.Kind.Term.show x9), " ", (Apps.Kind.Term.show x10), " ", (Apps.Kind.Term.show x11), " ", (Apps.Kind.Term.show x12), " ", (Apps.Kind.Term.show x13), " ", (Apps.Kind.Term.show x14)]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.args16 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15)) = (Apps.Kind.Printer.text [(Apps.Kind.Term.show x0), " ", (Apps.Kind.Term.show x1), " ", (Apps.Kind.Term.show x2), " ", (Apps.Kind.Term.show x3), " ", (Apps.Kind.Term.show x4), " ", (Apps.Kind.Term.show x5), " ", (Apps.Kind.Term.show x6), " ", (Apps.Kind.Term.show x7), " ", (Apps.Kind.Term.show x8), " ", (Apps.Kind.Term.show x9), " ", (Apps.Kind.Term.show x10), " ", (Apps.Kind.Term.show x11), " ", (Apps.Kind.Term.show x12), " ", (Apps.Kind.Term.show x13), " ", (Apps.Kind.Term.show x14), " ", (Apps.Kind.Term.show x15)]) +(Apps.Kind.Term.show.go (Apps.Kind.Term.hlp orig)) = "?" +(Apps.Kind.Term.show.go (Apps.Kind.Term.U60 orig)) = "Data.U60" +(Apps.Kind.Term.show.go (Apps.Kind.Term.u60 orig numb)) = (Show.to_string (Data.U60.show numb)) +(Apps.Kind.Term.show.go (Apps.Kind.Term.F60 orig)) = "Data.F60" +(Apps.Kind.Term.show.go (Apps.Kind.Term.f60 orig numb)) = (Show.to_string (Data.U60.show numb)) +(Apps.Kind.Term.show.go (Apps.Kind.Term.op2 orig operator left right)) = (Apps.Kind.Printer.text ["(", (Apps.Kind.Operator.show operator), " ", (Apps.Kind.Term.show left), " ", (Apps.Kind.Term.show right), ")"]) +(Apps.Kind.Name.show name) = (Apps.Kind.Name.show.go name "") +(Apps.Kind.Name.show.go name chrs) = (Data.U60.if (== name 0) chrs let val = (% name 64); let chr = (Data.U60.if (== val 0) 46 (Data.U60.if (& (<= 1 val) (<= val 10)) (+ (- val 1) 48) (Data.U60.if (& (<= 11 val) (<= val 36)) (+ (- val 11) 65) (Data.U60.if (& (<= 37 val) (<= val 62)) (+ (- val 37) 97) (Data.U60.if (== val 63) 95 63))))); (Apps.Kind.Name.show.go (/ name 64) (Data.String.cons chr chrs))) +(Data.U60.if 0 t f) = f +(Data.U60.if n t f) = t (Show.to_string show) = (show "") -(Kind.Operator.show (Kind.Operator.add)) = "+" -(Kind.Operator.show (Kind.Operator.sub)) = "-" -(Kind.Operator.show (Kind.Operator.mul)) = "*" -(Kind.Operator.show (Kind.Operator.div)) = "/" -(Kind.Operator.show (Kind.Operator.mod)) = "%" -(Kind.Operator.show (Kind.Operator.and)) = "&" -(Kind.Operator.show (Kind.Operator.or)) = "|" -(Kind.Operator.show (Kind.Operator.xor)) = "^" -(Kind.Operator.show (Kind.Operator.shl)) = "<<" -(Kind.Operator.show (Kind.Operator.shr)) = ">>" -(Kind.Operator.show (Kind.Operator.ltn)) = "<" -(Kind.Operator.show (Kind.Operator.lte)) = "<=" -(Kind.Operator.show (Kind.Operator.eql)) = "==" -(Kind.Operator.show (Kind.Operator.gte)) = ">=" -(Kind.Operator.show (Kind.Operator.gtn)) = ">" -(Kind.Operator.show (Kind.Operator.neq)) = "!=" -(Kind.Printer.text []) = "" -(Kind.Printer.text (List.cons x xs)) = (String.concat x (Kind.Printer.text xs)) -(String.concat (String.cons x xs) ys) = (String.cons x (String.concat xs ys)) -(String.concat "" ys) = ys -(U60.show 0) = λstr (String.cons 48 str) -(U60.show n) = λstr let next = (String.cons (+ 48 (% n 10)) str); let func = (U60.if (< n 10) λh h λh ((U60.show (/ n 10)) h)); (func next) -(Kind.Term.show.forall orig name type body) = (U60.if (== name 63) (Kind.Printer.text ["(", (Kind.Term.show type), " -> ", (Kind.Term.show (body (Kind.Term.var orig name 0))), ")"]) (Kind.Printer.text ["((", (Kind.Name.show name), ": ", (Kind.Term.show type), ") -> ", (Kind.Term.show (body (Kind.Term.var orig name 0))), ")"])) -(Kind.Term.show.sugar.sigma (Kind.Term.ct2 (Sigma.) orig typ (Kind.Term.lam orig_ name body))) = (Maybe.some (Kind.Printer.text ["([", (Kind.Name.show name), ": ", (Kind.Term.show typ), "] -> ", (Kind.Term.show (body (Kind.Term.var orig_ name 0))), ")"])) -(Kind.Term.show.sugar.sigma term) = (Maybe.none) -(Kind.Term.show.sugar.string term) = (Maybe.bind (Kind.Term.show.sugar.string.go term) λres let quot = "'"; (Maybe.some (Kind.Printer.text [quot, res, quot]))) -(Kind.Term.show.sugar.string.go (Kind.Term.ct0 (String.nil.) orig)) = (Maybe.some "") -(Kind.Term.show.sugar.string.go (Kind.Term.ct2 (String.cons.) orig (Kind.Term.u60 orig1 x0) x1)) = (Maybe.bind (Kind.Term.show.sugar.string.go x1) λtail (Maybe.some (String.cons x0 tail))) -(Kind.Term.show.sugar.string.go other) = (Maybe.none) -(Kind.Term.show.sugar.list term) = (Maybe.bind (Kind.Term.show.sugar.list.go term) λres (Maybe.some (Kind.Printer.text ["[", (String.join " " res), "]"]))) -(Kind.Term.show.sugar.list.go (Kind.Term.ct0 (List.nil.) orig)) = (Maybe.some []) -(Kind.Term.show.sugar.list.go (Kind.Term.ct2 (List.cons.) orig x0 x1)) = (Maybe.bind (Kind.Term.show.sugar.list.go x1) λtail (Maybe.some (List.cons (Kind.Term.show x0) tail))) -(Kind.Term.show.sugar.list.go other) = (Maybe.none) -(String.join sep list) = (String.intercalate sep list) -(String.intercalate sep xs) = (String.flatten (List.intersperse sep xs)) -(List.intersperse sep []) = [] -(List.intersperse sep [xh]) = [xh] -(List.intersperse sep (List.cons xh xt)) = (List.cons xh (List.cons sep (List.intersperse sep xt))) -(String.flatten []) = "" -(String.flatten (List.cons head tail)) = (String.concat head (String.flatten tail)) -(Maybe.try [] alt) = alt -(Maybe.try (List.cons maybe xs) alt) = (Maybe.match maybe (Maybe.try xs alt) λvalue value) +(Apps.Kind.Operator.show (Apps.Kind.Operator.add)) = "+" +(Apps.Kind.Operator.show (Apps.Kind.Operator.sub)) = "-" +(Apps.Kind.Operator.show (Apps.Kind.Operator.mul)) = "*" +(Apps.Kind.Operator.show (Apps.Kind.Operator.div)) = "/" +(Apps.Kind.Operator.show (Apps.Kind.Operator.mod)) = "%" +(Apps.Kind.Operator.show (Apps.Kind.Operator.and)) = "&" +(Apps.Kind.Operator.show (Apps.Kind.Operator.or)) = "|" +(Apps.Kind.Operator.show (Apps.Kind.Operator.xor)) = "^" +(Apps.Kind.Operator.show (Apps.Kind.Operator.shl)) = "<<" +(Apps.Kind.Operator.show (Apps.Kind.Operator.shr)) = ">>" +(Apps.Kind.Operator.show (Apps.Kind.Operator.ltn)) = "<" +(Apps.Kind.Operator.show (Apps.Kind.Operator.lte)) = "<=" +(Apps.Kind.Operator.show (Apps.Kind.Operator.eql)) = "==" +(Apps.Kind.Operator.show (Apps.Kind.Operator.gte)) = ">=" +(Apps.Kind.Operator.show (Apps.Kind.Operator.gtn)) = ">" +(Apps.Kind.Operator.show (Apps.Kind.Operator.neq)) = "!=" +(Apps.Kind.Printer.text []) = "" +(Apps.Kind.Printer.text (Data.List.cons x xs)) = (Data.String.concat x (Apps.Kind.Printer.text xs)) +(Data.String.concat (Data.String.cons x xs) ys) = (Data.String.cons x (Data.String.concat xs ys)) +(Data.String.concat "" ys) = ys +(Data.U60.show 0) = λstr (Data.String.cons 48 str) +(Data.U60.show n) = λstr let next = (Data.String.cons (+ 48 (% n 10)) str); let func = (Data.U60.if (< n 10) λh h λh ((Data.U60.show (/ n 10)) h)); (func next) +(Apps.Kind.Term.show.forall orig name type body) = (Data.U60.if (== name 63) (Apps.Kind.Printer.text ["(", (Apps.Kind.Term.show type), " -> ", (Apps.Kind.Term.show (body (Apps.Kind.Term.var orig name 0))), ")"]) (Apps.Kind.Printer.text ["((", (Apps.Kind.Name.show name), ": ", (Apps.Kind.Term.show type), ") -> ", (Apps.Kind.Term.show (body (Apps.Kind.Term.var orig name 0))), ")"])) +(Apps.Kind.Term.show.sugar.sigma (Apps.Kind.Term.ct2 (Data.Sigma.) orig typ (Apps.Kind.Term.lam orig_ name body))) = (Data.Maybe.some (Apps.Kind.Printer.text ["([", (Apps.Kind.Name.show name), ": ", (Apps.Kind.Term.show typ), "] -> ", (Apps.Kind.Term.show (body (Apps.Kind.Term.var orig_ name 0))), ")"])) +(Apps.Kind.Term.show.sugar.sigma term) = (Data.Maybe.none) +(Apps.Kind.Term.show.sugar.string term) = (Data.Maybe.bind (Apps.Kind.Term.show.sugar.string.go term) λres let quot = "'"; (Data.Maybe.some (Apps.Kind.Printer.text [quot, res, quot]))) +(Apps.Kind.Term.show.sugar.string.go (Apps.Kind.Term.ct0 (Data.String.nil.) orig)) = (Data.Maybe.some "") +(Apps.Kind.Term.show.sugar.string.go (Apps.Kind.Term.ct2 (Data.String.cons.) orig (Apps.Kind.Term.u60 orig1 x0) x1)) = (Data.Maybe.bind (Apps.Kind.Term.show.sugar.string.go x1) λtail (Data.Maybe.some (Data.String.cons x0 tail))) +(Apps.Kind.Term.show.sugar.string.go other) = (Data.Maybe.none) +(Apps.Kind.Term.show.sugar.list term) = (Data.Maybe.bind (Apps.Kind.Term.show.sugar.list.go term) λres (Data.Maybe.some (Apps.Kind.Printer.text ["[", (Data.String.join " " res), "]"]))) +(Apps.Kind.Term.show.sugar.list.go (Apps.Kind.Term.ct0 (Data.List.nil.) orig)) = (Data.Maybe.some []) +(Apps.Kind.Term.show.sugar.list.go (Apps.Kind.Term.ct2 (Data.List.cons.) orig x0 x1)) = (Data.Maybe.bind (Apps.Kind.Term.show.sugar.list.go x1) λtail (Data.Maybe.some (Data.List.cons (Apps.Kind.Term.show x0) tail))) +(Apps.Kind.Term.show.sugar.list.go other) = (Data.Maybe.none) +(Data.String.join sep list) = (Data.String.intercalate sep list) +(Data.String.intercalate sep xs) = (Data.String.flatten (Data.List.intersperse sep xs)) +(Data.List.intersperse sep []) = [] +(Data.List.intersperse sep [xh]) = [xh] +(Data.List.intersperse sep (Data.List.cons xh xt)) = (Data.List.cons xh (Data.List.cons sep (Data.List.intersperse sep xt))) +(Data.String.flatten []) = "" +(Data.String.flatten (Data.List.cons head tail)) = (Data.String.concat head (Data.String.flatten tail)) +(Data.Maybe.try [] alt) = alt +(Data.Maybe.try (Data.List.cons maybe xs) alt) = (Data.Maybe.match maybe (Data.Maybe.try xs alt) λvalue value)